我正在iOS8+上使用最新的试用版PubNub,Xcode7.3,试图建立一个聊天应用程序。我正在评估PubNub作为另一个聊天服务器的替代方案。
我遵循了PubNub文档中关于苹果推送通知的说明,但我的应用程序在后台时从不接收推送通知。
我已经创建了p12证书并将其导入到PubNub密钥集中。我在Xcode常规设置中启用了推送通知。我已经编写了PubNub文档中指定的Swift代码。我能够成功发布和订阅,但我的应用程序(application:UIApplication,didRegisterForRemoteNotificationsWithDeviceToken DeviceToken:NSData)方法显示给我一个'nil'标记。
@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
...
})
}
print方法显示deviceToken为nil。
您没有任何麻烦与您的注册代码以及设备令牌。设备令牌是二进制的,无法用NSUTF8StringEncoding编码转换为字符串。您可以使用断点来验证有什么值,但call of success delegate本身就是您的应用程序从Apple收到了正确的设备推送令牌的证明。
要接收推送通知,您需要使用允许指定APNS有效负载的适当发布方法。下面是方法之一:https://www.pubnub.com/docs/swift/api-reference#publish_arg_6 payload应该设置为有效的APNS payload dictionary(按照Apple规范)。
当app不再活动(即使是最近的任务)时,如何从FCM接收推送通知。我看到gmail、whatsapp都有这个功能。我正在使用FCM进行推送通知。我使用了WakefulBroadcast接收器来唤醒设备。我怎么用这个? 服务类别:
我已经开始研究电容了。在阅读https://capacitorjs.com/docs/cordova/knowled-incompatible-plugins之后,我发现Capablear不支持某些cordova插件。 我在我的应用程序中使用cordova-plugin-fcm-with-dependecy-updated(android)和cordova-plugin-fcm(iOS)进行推送通
我试图在我正在开发的Cordova应用程序中获得推送通知。它们在Android应用程序中工作得很好,在iOS应用程序中,当应用程序处于前台时,它们也工作得很好,但当应用程序处于后台或终止时,我不会收到任何通知。 我启用了“推送通知”和“后台模式-远程通知”功能: 我100%肯定服务器有设备令牌(因为推送通知在前台工作,我可以在数据库中看到它)。 如果我在应用程序应该收到通知后启动它或将它带到前台,
我正在使用FCM进行云消息传递。当我在后台和前台应用状态下收到来自服务器的消息推送时,我想添加应用徽章。我错过了什么?主要问题是根据消息推送添加/更新/删除应用徽章,我可以接收和处理推送消息。我在这个问题上花了3天时间。请帮帮我!?*徽章号码根据内部内容的变化,如如果收到新的电子邮件邮件到gmail应用程序,徽章号码在后台和前台应用程序状态更改为未读邮件计数。 使用XCode 9.2、Swift
我知道这个问题已经问过很多次了,但是我仍然无法从parse.com获得推送通知 推送通知正在从parse.com成功发送,但我的应用程序没有接收到它们。 大多数人用这个解决了他们的问题:我不能在应用程序中接收来自对我不起作用的Parse bt的推送通知。 我也试过Android--不能接收来自parse.com的推送。 有些人建议改变包的名称,我做了,甚至做了一个新的应用程序,但没有帮助。 这是我
问题内容: 我在应用程序中配置了Parse API,除推送通知外,其他所有功能均正常运行。我试图从网站发送它们,但它们未到达应用程序。我按照文档中的说明进行了所有操作,但是无法收到通知推送。 我能够收到一个,当我按它时,应用程序崩溃了。现在,我尝试更改某些内容,但即使反转,也无法再接收它们。我该如何解决我的问题? 编辑:由于某些用户可能感兴趣,所以这是我用于推送通知的部分代码: 主类(虽然不是Ma