簡體   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