Firebase 通知在 Testflight 上不起作用

Posted

技术标签:

【中文标题】Firebase 通知在 Testflight 上不起作用【英文标题】:Firebase Notification not working on Testflight 【发布时间】:2016-09-17 18:58:39 【问题描述】:

我创建了带有通知的应用程序。当我在开发人员模式下发送通知时,我会收到通知。但是当我发送发布模式时,我什么也没得到。我读到我应该将证书更改为产品证书。但这没有帮助。这是我的 appdelegate:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool 
    // Override point for customization after application launch.


    FIRApp.configure()

    let notificationTypes : UIUserNotificationType = [.alert, .badge, .sound]
    let notificationSettings : UIUserNotificationSettings = UIUserNotificationSettings(types: notificationTypes, categories: nil)
    application.registerForRemoteNotifications()
    application.registerUserNotificationSettings(notificationSettings)

    return true


private func application(application: UIApplication, didRegisterUserNotificationSettings notificationSettings: UIUserNotificationSettings) 
    FIRMessaging.messaging().subscribe(toTopic: "/topics/main")


private func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData)

    FIRInstanceID.instanceID().setAPNSToken(deviceToken as Data, type: FIRInstanceIDAPNSTokenType.prod)


func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) 
    print(userInfo["gcm.message_id"]!)
    print(userInfo)


func application(_ application: UIApplication, dirtings: UIUserNotificationSettings)

    UIApplication.shared.registerForRemoteNotifications()


func tokenRefreshNotification(notification: NSNotification) 
    if let refreshedToken = FIRInstanceID.instanceID().token() 
        print("InstanceID token: \(refreshedToken)")
    

    // Connect to FCM since connection may have failed when attempted before having a token.
    connectToFcm()




func connectToFcm() 
    FIRMessaging.messaging().connect  (error) in
        if (error != nil) 
            print("Unable to connect with FCM. \(error)")
         else 
            print("Connected to FCM.")
        
    


private func applicationDidEnterBackground(application: UIApplication) 
    FIRMessaging.messaging().disconnect()
    print("Disconnected from FCM.")

【问题讨论】:

你设置kGGLInstanceIDAPNSServerTypeSandboxOption:@NO;了吗?就像这里所做的一样:***.com/q/37628158/4625829? 不,我认为。 :/ 我会尝试并尽快回复。 无效。 :/ 我使用的是 fcm 而不是 gcm。 很难确定您没有收到详细信息的原因。我建议再次检查docs 并仔细检查。 谢谢 - 我想你现在已经解决了;我只是想让其他读过这一系列 cmets 的人理解 :) 【参考方案1】:

刚刚经历过,

我关闭了推送并从苹果开发中心删除了证书并重新创建它们,这使得一切正常运行。

我也将这行代码设置为,

FIRInstanceID.instanceID().setAPNSToken(deviceToken as Data, type: FIRInstanceIDAPNSTokenType.sandbox)

我会在推送到应用商店时将其更改为.prod

【讨论】:

【参考方案2】:

我找到了解决方案。问题出在产品证书上。我忘记将产品证书添加到 Firebase。

【讨论】:

以上是关于Firebase 通知在 Testflight 上不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Firebase 通知在 Testflight 上不起作用

推送通知在 TestFlight 上不起作用

Firebase 推送通知无法在手机上使用,但可以在模拟器中使用

Firebase 推送通知不适用于试飞

在发布版本上推送通知工作,但在上传到 TestFlight 之后没有

Xcode:推送通知以在设备工作上构建,而不是在同一设备上安装 TestFlight/App Store