当用户退出我的应用程序并且我不再希望他接收到设备的通知时,我该如何处理这种情况.
我试过了
FirebaseInstanceId.getInstance().deleteToken(FirebaseInstanceId.getInstance().getId(), FirebaseMessaging.INSTANCE_ID_SCOPE)
Run Code Online (Sandbox Code Playgroud)
但我仍然收到我的设备的通知registration_id.
我还确保这是我应删除的令牌:
FirebaseInstanceId.getInstance().getToken(FirebaseInstanceId.getInstance().getId(), FirebaseMessaging.INSTANCE_ID_SCOPE)
Run Code Online (Sandbox Code Playgroud)
或者简单地说FirebaseInstanceId.getInstance().getToken()).
我也尝试过FirebaseInstanceId.getInstance().deleteInstanceId(),但是下次我打电话给FirebaseInstanceId.getInstance.getToken我时会收到空(它在第二次尝试时起作用).
我想,在deleteInstanceId我能够立即getToken()再次打电话之后,它看起来像是一个黑客.并且还有这个答案表明不应该这样做,但它建议删除显然不起作用的令牌.
那么处理这个问题的正确方法是什么?
我有一个Android应用程序,我希望它能够从两个不同的Firebase项目接收推送通知.
我读了博客"Android应用中有多个项目火力地堡的工作" https://firebase.googleblog.com/2016/12/working-with-multiple-firebase-projects-in-an-android-app.html其中谈到关于"从两个不同的Firebase项目访问数据库".
但是,没有关于从多个Firebase项目接收通知的信息.
那么,如何将我的应用程序与多个Firebase项目集成并从中接收推送通知?
我已经阅读了很多关于Firebase Instance Idand registration token here、here和here的文章。
我对他们的一些困惑范围和关系之间Instance Id和Token。我想验证我的理解是对还是错。
Instance Id每个App生成。不是每个安装的设备。例如,如果您有 Mail 应用程序和 Notes 应用程序,则firebase上将有两个实例 ID。Token每个安装的设备生成。例如,如果您有10 个用户安装您的应用程序,您将拥有10 个注册令牌。Instance Id将有许多注册令牌。registration tokens在我们的应用服务器上保留(而不是实例 ID)来发送推送通知。我正在为Android开发一个库,并且对使用新的Firebase“模型”(FCM)的Android GCM有疑问。在旧的和金色的GCM中,我可以收到来自不同发件人的推送通知,因为当您请求令牌注册时,它们会支持此通知,正如您在此方法中所看到的(现已弃用):https : //developers.google.com /android/reference/com/google/android/gms/gcm/GoogleCloudMessaging.html#register(java.lang.String ...)
该方法对我们特别有用,因为我们拥有自己的后端,可以与我们的库进行通信。因此,我们拥有自己的Google Project,并且我们库的用户也可以将自己的通知发送到应用程序(具有自己的发件人ID)。
使用新的FCM,您必须生成一些.json(google-services.json),其中包含Google Project信息(以及发件人ID),并且还会生成一些代码。
我的问题是,我们仍然可以从多个发件人ID中接收相同的onMessageReceived吗?我的意思是,我知道有可能来自同一Google / Firebase帐户中的多个项目,但是在同一个应用程序中,多个Firebase帐户中有可能吗?还是我必须在自己的Firebase帐户中添加所有使用我们库的应用程序?
我正在从GCM升级到FCM。在onTokenRefresh之外获取Firebase设备令牌的正确方法是什么?
我正在尝试获取设备令牌,以便以后可以在服务器上重新启用它。我最初是按照此处显示的方法1 的文档获取设备令牌的。但是,当我尝试直接通过方法2访问设备令牌时,会得到一个不同的令牌。我是否在方法2中错误地获取了设备令牌?
方法1:在FirebaseInstanceIdService.onTokenRefresh()中
String refreshedToken = FirebaseInstanceId.getInstance().getToken();
Run Code Online (Sandbox Code Playgroud)
方法2:直接访问设备令牌
FirebaseInstanceId instanceID = FirebaseInstanceId.getInstance();
String registrationToken = instanceID.getToken(this.projectNumber, "FCM");
Run Code Online (Sandbox Code Playgroud) android firebase google-cloud-messaging firebase-cloud-messaging
从GCM迁移到FCM.
在GCM中,我们可以为多个发送者ID调用getToken()方法,如下所示:
String senderIds = "112233445566,889922338899";
String token = instanceID.getToken(senderIds,
GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);
Run Code Online (Sandbox Code Playgroud)
Q1 - 进入FCM后,是否保持相同或者我需要进行任何更改才能获得多个发送者ID的令牌?
从这个引用中,我知道我可以为每个发送者ID调用getToken("senderIds1","FCM"),但我希望在进入FCM时进行最少的代码更改.
Q2将不适用于FCM(与GCM相同)或我必须调用 getToken("senderIds1","FCM"); getToken("senderIds2","FCM")?
getToken("senderIds1, senderIds2", "FCM")
Run Code Online (Sandbox Code Playgroud) android push-notification firebase google-cloud-messaging firebase-cloud-messaging