无法从 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)}");
}
我正在尝试将 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)}");
}