在 TestFlight 上测试我的应用程序时,我注意到我没有收到推送通知。
我已确认,当从 Xcode 加载构建时,我可以收到从云函数和 firebase 控制台发起的通知。
我引用了其他类似的问题,但没有一个反映我正在处理的确切问题。在 Firebase 中配置远程通知时,我使用的是APNs 验证密钥,我也包括了.p12
开发和生产文件。但是,那.p12
文件显示为灰色并列为非活动状态,因为 APNs 身份验证密钥已设置。
在我的 Apple Developer 帐户下证书、标识符和配置文件,我已确保我的 APNs Auth Key 存在于左侧Keys部分。我也设置了开发者和生产 SSL 证书在我的应用程序 ID 中并验证它们是否被列为“已启用”。我还验证了我有一个“活动”的 iOS 分发配置文件。
这是一个很难调试的问题,因为 Xcode 构建可以工作,而 TestFlight 构建却不能。我知道这个问题涉及生产环境与开发环境,但我不确定如何解决该问题。
该方法在 Xcode 构建和所有相关联的版本中被调用UserNotifications
& Messaging
正在调用委托方法。我正在运行 iOS 10.3 并且有FirebaseAppDelegateProxyEnabled
set to NO
in my info.plist
.
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
Messaging.messaging().setAPNSToken(deviceToken, type: MessagingAPNSTokenType.sandbox)
Messaging.messaging().setAPNSToken(deviceToken, type: MessagingAPNSTokenType.prod)
}
对我来说,解决方法是停止使用 MessagingAPNSTokenType.sandbox 或 .prod,而只需使用:
Messaging.messaging().setAPNSToken(deviceToken, type: .unknown)
在之前的应用程序中,我使用了:
if Config.isDebug {
tokenType = MessagingAPNSTokenType.sandbox
} else {
tokenType = MessagingAPNSTokenType.prod
}
Messaging.messaging().setAPNSToken(deviceToken, type: tokenType)
并设置 Config 以依赖于 Xcode 中的构建方案。现在它似乎不适用于产品。在 Firebase 上,我现在使用APNS Key https://developer.apple.com/documentation/usernotifications/setting_up_a_remote_notification_server/establishing_a_token_based_connection_to_apns,而不是旧式的 Prod 和 Dev 证书。这可能有所作为。我看到Firebase 文档 https://firebase.google.com/docs/reference/swift/firebasemessaging/api/reference/Enums/MessagingAPNSTokenType现在也说:
如果令牌类型设置为 UNKNOWN Firebase Messaging 将隐式
尝试从配置中找出实际的令牌类型
轮廓。除非您确实需要指定类型,否则应该使用
而是 APNSToken 属性。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)