无法从 swift 个应用程序连接到 PubNub

Cannot connect to PubNub from swift application

我正在尝试将 PubNub 合并到我的 swift 应用程序中。我已通过 CocoaPods 安装它,但未能使基本 "Hello World" 应用程序正常工作。

我有一个符合 PNDelegate 协议的简单视图控制器:

class MessageViewController: CustomViewController, PNDelegate

在这个控制器的ViewDidLoadMethod中,我添加了以下内容:

    var config: PNConfiguration = PNConfiguration(forOrigin: "pubsub.pubnub.com", publishKey: Constants.PubNubPublishKey, subscribeKey: Constants.PubNubSubscribeKey, secretKey: Constants.PubNubSecretKey)
    var pubNub: PubNub = PubNub.clientWithConfiguration(config, andDelegate: self)
    pubNub.connect()


    // Define Channel
    var channel: PNChannel =  PNChannel.channelWithName("TestChannel", shouldObservePresence: true) as PNChannel


    // Subscribe on the channel
    PubNub.subscribeOn([channel])

    // Subscribe on the channel
    PubNub.sendMessage("Hello world", toChannel: channel)

我还在同一个视图控制器中添加了以下协议方法:

func pubnubClient(client: PubNub!, didReceiveMessage message: PNMessage!) {
    println(message.message)
}

当我 运行 应用程序时,大多数时候,一切都在执行,但 didReceiveMessage 函数从未被调用。有时,应用程序会崩溃,并显示以下消息:

// Verify that reachability callback was called for correct client
NSCAssert([(__bridge NSObject *)info isKindOfClass:[PNReachability class]],
          @"Wrong instance has been sent as reachability observer");

根据基本 PubNub tutorial,以上应该足以让这个工作。谁能帮我确定缺少什么?

谢谢!

编辑:相关信息;我目前 运行 在模拟器上进行此操作。不使用实际设备会有什么问题吗?

您不想混合使用 PubNub 的单例版本和 pubnub 实例。在上面的代码中,您有时使用实例,有时使用 sharedInstance ...引用不一样。试试这个:(注意 subscribeOn..instance)

var pnConfiguration: PNConfiguration!
var pubNub: PubNub!
pnConfiguration = PNConfiguration(origin: "pubsub.pubnub.com"
        ,publishKey: "demo"
        ,subscribeKey: "demo"
        ,secretKey: ""
        ,cipherKey: "")

pubNub=PubNub.clientWithConfiguration(pnConfiguration,andDelegate:self)
        PNLogger.loggerEnabled(true)
        pubNub.connect()
pubNub.subscribeOn([chnlGroup])
pubNub.observationCenter.addMessageReceiveObserver(self){ (message: PNMessage!) -> Void in
            println("message go instance: { channel: \(message.channel), group: \(message.channelGroup), \nmsg: \(message.message)}");
        }