web-dev-qa-db-ja.com

コードを使用してFirebase通知トークンまたはインスタンスIDを強制的に変更/更新しますか?

Firebaseでトークンを変更またはリクエストするには、どうすればよいですか?デバイス情報に基づいてfirebaseによって生成された一意のトークン。

13
PRAVEEN

プッシュ通知用のFirebaseの新しいトークンまたは変更トークンを生成するための多くの問題に直面した後、今私は私の答えを得ました。

1)古いFirebaseトークンを削除します

let instance = FIRInstanceID.instanceID()
_ = FIRInstanceID.delete(instance)
FIRInstanceID.instanceID().delete { (err:Error?) in
    if err != nil{
        print(err.debugDescription);
    } else {
        print("Token Deleted");
    }
}

2)新しいFirebaseトークンをリクエストする

if let token = FIRInstanceID.instanceID().token() {
    print("Token \(token) fetched");
} else {
    print("Unable to fetch token");
}

FIRMessaging.messaging().connect { (error) in
    if (error != nil) {
        print("Error connecting to FCM. \(error.debugDescription)")
    } else {
        print("Connected to FCM.")
    }
}

Swift 4&Firebase 4.8.2(単純な2つの手順に従う)のために更新)????????

1)古いトークンを削除

let instance = InstanceID.instanceID()
instance.deleteID { (error) in
    print(error.debugDescription)
}

2)新しいトークンの要求

if let token = InstanceID.instanceID().token() {
    print("Token : \(token)");
} else {
    print(“Error: unable to fetch token");
}

Messaging.messaging().shouldEstablishDirectChannel = true

MessagingDelegateメソッドdidReceiveRegistrationTokenと更新トークンで更新されたトークンを取得できます。

func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String) {
    print("Firebase Token :  \(fcmToken)")
}
12
PRAVEEN

現時点ではInstanceID.instanceID().token()は非推奨です。

あなたはこれを使うべきです:

let instance = InstanceID.instanceID()
instance.deleteID { (error) in
  print(error.debugDescription)
}

instance.instanceID { (result, error) in
  if let error = error {
    print("Error fetching remote instange ID: \(error)")
  } else {
    print("Remote instance ID token: \(String(describing: result?.token))")
  }
}
Messaging.messaging().shouldEstablishDirectChannel = true

次にAppDelegateで:

extension AppDelegate: MessagingDelegate {

func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String) {
    //Here is your new FCM token
    print("Registered with FCM with token:", fcmToken)
}
2
Alex Kolovatov

Swift 4、FireBase 4.8.2、FirebaseMessaging(2.0.8)の回答を更新

debugPrint("Existing Token :- \(Messaging.messaging().fcmToken!)")

let instance = InstanceID.instanceID()
instance.deleteID { (error) in
    print(error.debugDescription)
}

if let token = InstanceID.instanceID().token() {
    print("Token \(token) fetched");
} else {
    print("Unable to fetch token");
}
Messaging.messaging().shouldEstablishDirectChannel = true

この更新されたトークンは、MessagingDelegateメソッドと更新トークンで受け取ります。

func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String) {
    print("Firebase registration token: \(fcmToken)")
}
2
Jitendra

Firebaseトークンを変更または更新したいとのことですが、.

次の2つのメソッドを作成します

func registerFirebaseToken() {
    if let token = InstanceID.instanceID().token() {
        print("FIREBASE: Token \(token) fetched")
    } else {
        print("FIREBASE: Unable to fetch token");
    }

    Messaging.messaging().shouldEstablishDirectChannel = true
}

func unregisterFirebaseToken(completion: @escaping (Bool)->()) {
    // Delete the Firebase instance ID
    InstanceID.instanceID().deleteID { (error) in
        if error != nil{
            print("FIREBASE: ", error.debugDescription);
            completion(false)
        } else {
            print("FIREBASE: Token Deleted");
            completion(true)
        }
    }
}

を呼び出す

unregisterFirebaseToken(:)

そしてクロージャチェックでtrueの場合は呼び出します

registerFirebaseToken()

これは初めて失敗し、デリゲートメソッドの1つが呼び出されます。

extension AppDelegate: MessagingDelegate {
    func messaging(_ messaging: Messaging, didRefreshRegistrationToken fcmToken: String) {
        registerFirebaseToken()
    }
}

今回

registerFirebaseToken()

デリゲートメソッドから再度呼び出され、新しいトークンを取得します。

0
Anirudha Mahale