【问题标题】:IOS Swift 3 FCM Token Generates invaid TokenIOS Swift 3 FCM Token 生成invaid Token
【发布时间】:2019-02-17 23:16:58
【问题描述】:

我有一个生成 FCM 令牌的 IOS 应用程序,但是当我们发送推送通知时,它会显示以下结果。

{"multicast_id":7286183653567149258,"success":0,"failure":3,"canonical_ids":0,"results":[{"error":"InvalidRegistration"},{"error":"InvalidRegistration"},{"error":"InvalidRegistration"}]}Array{"multicast_id":7286183653567149258,"success":0,"failure":3,"canonical_ids":0,"results":[{"error":"InvalidRegistration"},{"error":"InvalidRegistration"},{"error":"InvalidRegistration"}]}

当我使用 Firebase 云消息传递控制台发送测试推送通知时,它会发送到设备。

我的快速代码是:

import UIKit
import IQKeyboardManagerSwift
import Firebase
import FirebaseMessaging
import FirebaseInstanceID
import UserNotifications
import Alamofire
import FirebaseAuth

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?
    var count:Int = 0

    let gcmMessageIDKey = "gcm.message_id"

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        IQKeyboardManager.sharedManager().enable = true

      FIRApp.configure()

        application.applicationIconBadgeNumber = 0

        count = 0


        if #available(iOS 10.0, *) {
            let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound]
            UNUserNotificationCenter.current().requestAuthorization(
            options: authOptions) {_,_ in }
            // For iOS 10 display notification (sent via APNS)
            UNUserNotificationCenter.current().delegate = self
        } else {
            let settings: UIUserNotificationSettings =
                UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil)
            application.registerUserNotificationSettings(settings)
        }
        application.registerForRemoteNotifications()

        //application.registerForRemoteNotifications()
        //NotificationCenter.default.addObserver(self, selector: #selector(self.tokenRefreshNotification), name: .firbaseInstanceIDTokenRefresh, object: nil) 
        return true
    }

    func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
        let token = deviceToken.map { String(format: "%02.2hhx", $0) }.joined()
        FIRInstanceID.instanceID().setAPNSToken(deviceToken as Data, type: FIRInstanceIDAPNSTokenType.prod)
    }

【问题讨论】:

    标签: ios iphone swift swift3


    【解决方案1】:

    请将服务器密钥设置为后端站点。

    【讨论】:

    • 是的,这是在后端设置的。还检查 FCM 令牌获取并发送到您的服务器。
    • 令牌是:da3bd4ff02b6eb4bc6ec5fc1c3211ae6f567e7b6446dc2ba86fd9f9d9964c0ac
    • @bozcadercharity 您应该删除服务器密钥。证书并不意味着公开发布。这可能会被滥用!
    • 是的,您可以从后端发送有关此 FCM 令牌的通知。
    • 我做了,它显示错误 {"multicast_id":7286183653567149258,"success":0,"failure":3,"canonical_ids":0,"results":[{"error": "InvalidRegistration"},{"error":"InvalidRegistration"},{"error":"InvalidRegistration"}]}数组{"multicast_id":7286183653567149258,"success":0,"failure":3,"canonical_ids": 0,"results":[{"error":"InvalidRegistration"},{"error":"InvalidRegistration"},{"error":"InvalidRegistration"}]}
    【解决方案2】:
    extension AppDelegate : MessagingDelegate {
          func messaging(_ messaging: Messaging, didRefreshRegistrationToken fcmToken: String) {
                    if let refreshedToken = InstanceID.instanceID().token() {
                        print("InstanceID token : \(refreshedToken)")
                           self.updateFIRKey(tokenVal: devTkn)  // method to update devicetoken
                    }
          }
    }
    

    【讨论】:

    • 我已经用 MessagingDelegate 更新了答案,请告诉我它是否有效
    • 使用未声明的类型'MessagingDelegate'
    • 请导入 Firebase
    • 我有 import Firebase 命令,但它仍然会生成该错误
    • 导入 UIKit 导入 IQKeyboardManagerSwift 导入 Firebase 导入 FirebaseMessaging 导入 FirebaseInstanceID 导入 UserNotifications 导入 Alamofire 导入 FirebaseAuth
    猜你喜欢
    • 1970-01-01
    • 2017-07-10
    • 2019-01-02
    • 2018-08-04
    • 2013-06-18
    • 1970-01-01
    • 2019-11-24
    • 2021-10-07
    • 1970-01-01
    相关资源
    最近更新 更多