[英]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 屬性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.