gpt4 book ai didi

ios - PubNub iOS 应用程序不接收推送通知

转载 作者:行者123 更新时间:2023-11-29 01:01:59 25 4
gpt4 key购买 nike

我在 iOS 8+ Xcode 7.3 上使用最新的 PubNub 试用版,尝试构建一个聊天应用程序。我正在评估 PubNub 作为另一个聊天服务器的替代品。

我已按照 PubNub 文档中有关 Apple 推送通知的说明进行操作,但我的应用在后台时从未收到推送通知。

我已经创建了 p12 证书并将其导入到我的 PubNub key 集中。我在我的 Xcode 常规设置中启用了推送通知。我已经按照 PubNub 文档中的规定编写了 Swift 代码。我能够成功发布和订阅,但我的应用程序(应用程序:UIApplication,didRegisterForRemoteNotificationsWithDeviceToken deviceToken:NSData)方法向我显示“无” token 。

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate, PNObjectEventListener {
var window: UIWindow?
// Instance property
var client: PubNub?

// For demo purposes the initialization is done in the init function so that
// the PubNub client is instantiated before it is used.
override init() {

// Instantiate configuration instance.
let configuration = PNConfiguration(publishKey: "mypubkey", subscribeKey: "mysubkey")
// Instantiate PubNub client.
client = PubNub.clientWithConfiguration(configuration)
super.init()
client?.addListener(self)
}

和:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// Override point for customization after application launch.
self.client?.subscribeToChannels(["my_channel"], withPresence: true)

let types: UIUserNotificationType = [.Badge, .Sound, .Alert]
let mySettings: UIUserNotificationSettings = UIUserNotificationSettings(forTypes:types, categories: nil)
UIApplication.sharedApplication().registerUserNotificationSettings(mySettings)
UIApplication.sharedApplication().registerForRemoteNotifications()

return true
}

在我的推送通知注册方法中:

func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) {
NSUserDefaults.standardUserDefaults().setObject(deviceToken, forKey: "DeviceToken")
NSUserDefaults.standardUserDefaults().synchronize()
print("Device Token=\(NSString(data: deviceToken, encoding:NSUTF8StringEncoding))")
self.client?.addPushNotificationsOnChannels(["my_channel"],
withDevicePushToken: deviceToken,
andCompletion: { (status) -> Void in
...
})
}

打印方法显示 deviceToken 为零。

知道我做错了什么吗?提前致谢。

最佳答案

您的注册码和设备 token 没有任何问题。设备 token 是二进制的,无法使用 NSUTF8StringEncoding 编码转换为字符串。您可以使用断点来验证那里有什么值(value),但成功委托(delegate)本身的调用证明您的应用程序从 Apple 收到了正确的设备推送 token 。

要接收推送通知,您需要使用适当的发布 方法来指定APNS 负载。这是其中一种方法:https://www.pubnub.com/docs/swift/api-reference#publish_arg_6 payload 应设置为有效的 APNS 有效负载字典(根据 Apple 规范)。

关于ios - PubNub iOS 应用程序不接收推送通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36901333/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com