调用了 didRegisterForRemoteNotificationsWithDeviceToken 但未发送推送通知
Posted
技术标签:
【中文标题】调用了 didRegisterForRemoteNotificationsWithDeviceToken 但未发送推送通知【英文标题】:didRegisterForRemoteNotificationsWithDeviceToken is called but push notification not sent 【发布时间】:2017-07-11 02:40:34 【问题描述】:我正在尝试在 ios 中实现推送通知。我已经成功地让它工作了一次。但现在我面临一个奇怪的问题。我已退出 XCode 并重新打开它,没有更改任何代码,我仍在获取 deviceToken,但现在我的设备上没有收到任何推送通知。我也在使用 Firebase 来获取通知,它也可以正常工作,但现在它给了我空白字符串作为设备令牌。
在 AppDelegate 中我使用以下代码:
if #available(iOS 10.0, *)
// For iOS 10 display notification (sent via APNS)
UNUserNotificationCenter.current().delegate = self
let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound]
UNUserNotificationCenter.current().requestAuthorization(
options: authOptions,
completionHandler: _, _ in )
else
let settings: UIUserNotificationSettings =
UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil)
application.registerUserNotificationSettings(settings)
application.registerForRemoteNotifications()
//This is triggered and I am getting the push notification token but using this instead of firebase token to send directly via APNS is also not working.
public func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data)
Messaging.messaging().setAPNSToken(deviceToken, type: .sandbox)
//This is triggered but the token here is a blank string
func messaging(_ messaging: Messaging, didRefreshRegistrationToken fcmToken: String)
Messaging.messaging().subscribe(toTopic: "ios_topic")
这一直有效,直到我退出 XCode,但突然停止工作,没有任何代码更改。我尝试了一切,包括系统重启。有时,didRegisterForRemoteNotificationsWithDeviceToken
在全新安装期间会被调用两次,一次是在我授予权限之前,一次是在授予权限之后。
【问题讨论】:
【参考方案1】:可能是因为设备令牌现在被解析为“32BYTES”。
在这里查看更多:
Swift 3 - device tokens are now being parsed as '32BYTES'
【讨论】:
以上是关于调用了 didRegisterForRemoteNotificationsWithDeviceToken 但未发送推送通知的主要内容,如果未能解决你的问题,请参考以下文章
未调用 UIcollectionView 的 didDeselectItemAt 但调用了 didSelectItemAt?
未调用 didEnterRegion 但在目标 C 中调用了 didExitRegion