在TestFlight上测试我的应用程序时,我注意到我没有收到推送通知。
我已确认在从Xcode加载构建时,我可以接收从云功能和firebase控制台发起的通知。
我引用了其他类似的问题,但没有一个能反映我正在处理的确切问题。在Firebase中配置远程通知时,我使用的是 APNs身份验证密钥,我还为开发和生产添加了.p12
个文件。但是,.p12
文件显示为灰色并列为非活动状态,因为已设置了APNs验证密钥。
在我的Apple开发人员帐户证书,标识符&个人资料,我确保我的APNs验证密钥存在于左侧密钥部分。我还在我的App Id&中设置了开发人员和生产SSL证书。验证它们被列为"已启用"。我还验证了我的iOS分发配置文件是"活动"。
这是一个难以调试的问题,因为Xcode构建工作但TestFlight构建却没有。我知道这个问题涉及生产与开发环境,但我不确定如何解决问题。
在Xcode构建中调用此方法,并且所有关联的UserNotifications
&正在调用Messaging
委托方法。我正在运行iOS 10.3&在我的FirebaseAppDelegateProxyEnabled
中将NO
设置为info.plist
。
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
Messaging.messaging().setAPNSToken(deviceToken, type: MessagingAPNSTokenType.sandbox)
Messaging.messaging().setAPNSToken(deviceToken, type: MessagingAPNSTokenType.prod)
}
答案 0 :(得分:0)
对我来说,解决方法是停止使用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,而不是较早版本的Prod和Dev证书。那可能有所作为。我看到Firebase docs现在也说:
如果令牌类型设置为UNKNOWN,则Firebase Messaging会隐式地 尝试从配置中找出实际的令牌类型是什么 轮廓。除非您确实需要指定类型,否则应使用 而是使用APNSToken属性。
答案 1 :(得分:0)