繁体   English   中英

使用 Firebase 和 APNs 身份验证密钥的生产推送通知

[英]Production Push Notifications using Firebase with APNs Auth Key

在 TestFlight 上测试我的应用程序时,我注意到我没有收到推送通知。

我已经确认,当从 Xcode 加载构建时,我可以接收从云功能和 firebase 控制台发起的通知。

我参考了其他类似的问题,但没有一个反映我正在处理的确切问题。 在 Firebase 中配置远程通知时,我使用的是APNs Auth Key ,我还包含了用于开发和生产的.p12文件。 但是, .p12文件显示为灰色并列为非活动,因为已设置 APNs 身份验证密钥。

在我的 Apple Developer 帐户Certificates, Identifiers & Profiles 下,我确保我的 APNs Auth Key 存在于左侧Keys部分。 我还在我的 App Id 中设置了开发人员和生产 SSL 证书并验证它们是否被列为“已启用”。 我还验证了我有一个“活动”的 iOS 分发配置文件。

这是一个难以调试的问题,因为 Xcode 构建可以工作,而 TestFlight 构建却不能。 我知道这个问题涉及生产环境和开发环境,但我不确定如何解决这个问题。

这个方法在 Xcode 构建中被调用,并且所有关联的UserNotifications & Messaging委托方法都被调用。 我正在运行 iOS 10.3 并且在我的info.plist中将FirebaseAppDelegateProxyEnabled设置为NO

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 ,而不是旧式的 Prod 和 Dev 证书。 这可能有所作为。 我看到Firebase 文档现在也说:

如果令牌类型设置为 UNKNOWN Firebase Messaging 将隐式地尝试从配置文件中找出实际的令牌类型。 除非您确实需要指定类型,否则您应该改用 APNSToken 属性。

您需要在 info.plist 中添加对后台模式推送通知的支持。 在此处输入图片说明

您也可以通过在目标设置的 Signing & Capabilites 选项卡下添加新功能来实现此目的。

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM