Javascript 测试(火基)FCM

Javascript 测试(火基)FCM,javascript,firebase,firebase-cloud-messaging,Javascript,Firebase,Firebase Cloud Messaging,为了了解如何使用Firebase云消息传递,我遵循以下文档: 我正是在看这个部分:发送到单个设备 我可以在代码中看到我需要一个注册令牌。我的问题是如何具体地得到一个 首先,我想向我自己的iPhone发送一条消息,放在我的办公桌上,然后发送给所有注册用户的iPhone。当使用FCM通知时,设备会生成令牌,并每隔一段时间更新一次,因此,如果您需要向设备发送推送消息,您必须知道您的令牌,您必须实现一个继承FirebaseMessagingService的类,并覆盖一个onNewToken方法,每次更

为了了解如何使用
Firebase云消息传递
,我遵循以下文档:

我正是在看这个部分:发送到单个设备

我可以在代码中看到我需要一个注册令牌。我的问题是如何具体地得到一个


首先,我想向我自己的iPhone发送一条消息,放在我的办公桌上,然后发送给所有注册用户的iPhone。

当使用FCM通知时,设备会生成令牌,并每隔一段时间更新一次,因此,如果您需要向设备发送推送消息,您必须知道您的令牌,您必须实现一个继承FirebaseMessagingService的类,并覆盖一个onNewToken方法,每次更新设备令牌时都会在后台调用该方法

/**
* Called if InstanceID token is updated. This may occur if the security of
* the previous token had been compromised. Note that this is called when the     InstanceID token
* is initially generated so this is where you would retrieve the token.
*/
@Override
public void onNewToken(String token) {
Log.d(TAG, "Refreshed token: " + token);

    // If you want to send messages to this application instance or
    // manage this apps subscriptions on the server side, send the
    // Instance ID token to your app server.
    sendRegistrationToServer(token);
}
建议将此令牌发送到您的服务器,以便您可以从服务器向具有注册令牌的设备发送推送。如果要强制使用第一个令牌,可以使用:

FirebaseInstanceId.getInstance().getInstanceId();

当我在IOS Swift中工作时,您必须在AppDelegate.Swift文件中添加此方法:

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

    let dataDict:[String: String] = ["token": fcmToken]
    NotificationCenter.default.post(name: Notification.Name("FCMToken"), object: nil, userInfo: dataDict)

    // TODO: If necessary send token to application server.
    // Note: This callback is fired at each app startup and whenever a new token is generated.
}
如果需要直接访问令牌,请使用以下命令:

InstanceID.instanceID().instanceID { (result, error) in
   if let error = error {
      print("Error fetching remote instange ID: \(error)")
   } else if let result = result {
     print("Remote instance ID token: \(result.token)")
     self.instanceIDTokenMessage.text  = "Remote InstanceID token: \(result.token)"
   }
  }
有关更多信息,请访问:


您的代码不是Swift,我正在使用用Swift编写的iOS应用程序。我将尝试在Swift中找到相应的函数。我已经尝试了您建议的方法,我可能做了一些错误的事情,但似乎函数messaging:didReceiverRegistrationToken从未被调用。你知道这个问题吗?在搜索网络后,我发现我在执行所有步骤时没有遵循正确的顺序。与此同时,你给了我一个宝贵的提示。谢谢。这篇文章帮助我解决了这个问题。