当用户退出我的应用程序并且我不再希望他接收到设备通知时,我如何处理这种情况。
我试过了
FirebaseInstanceId.getInstance().deleteToken(FirebaseInstanceId.getInstance().getId(), FirebaseMessaging.INSTANCE_ID_SCOPE)
但我仍然会收到设备注册id的通知。
我还确保这是我应该删除的令牌:
FirebaseInstanceId.getInstance().getToken(FirebaseInstanceId.getInstance().getId(), FirebaseMessaging.INSTANCE_ID_SCOPE)
或者干脆FirebaseInstanceId.getInstance().getToken()
)。
我还尝试了FirebaseInstanceId.getInstance().deleteInstanceId()
,但下一次调用FirebaseInstanceId.getInstance.getToken
时,我收到空值(在第二次尝试时有效)。
我想,在deleteInstanceId
之后,我可以立即再次调用getToken()
,但这看起来像是一个黑客。还有一个答案是不应该这样做,但它建议删除显然不起作用的令牌。
那么,正确的处理方法是什么呢?
好的。所以我设法做了一些测试,并得出了以下结论:
deleteToken()
是getToken(String,String)
的对应项,但不适用于getToken()
只有当您传递的发送者ID是不同的发送者ID(与您的google services.json中看到的ID不同)时,它才起作用。例如,如果您希望允许其他服务器发送到您的应用程序,您可以调用getToken(“他们的发件人ID”,“FCM”)
,授权他们发送到您的应用程序。这将返回仅对应于该特定发件人的不同注册令牌。
将来,如果您选择删除他们发送到您的应用程序的授权,则必须使用deleteToken(“他们的发件人ID”,“FCM”)
。这将使相应的令牌无效,并且当发送者尝试发送消息时,作为预期行为,他们将收到notregisted
错误。
特别提到@Prince的这个答案,特别是帮助我解决这个问题的代码示例。
正如@MichałK已经在他的帖子中所做的那样,在调用deleteInstanceId()
之后,应该调用getToken()
,以便发送新令牌的请求。然而,你不必第二次叫它。只要实现了onTokenRefresh()onNewToken()
,它就会自动触发,为您提供新的令牌。
简而言之,deleteInstanceId()
注意:调用deleteInstanceId()
不仅会删除您自己应用程序的令牌。它将删除所有主题订阅以及与应用实例关联的所有其他令牌。
您确定正在正确调用deleteToken()
吗?访问者的值应该是(也可以从您链接的我的答案中看到)设置为“设置为应用服务器的发件人ID”。您正在传递的getId()
值与发件人ID不同(它包含应用程序实例ID值)。另外,您如何发送消息(应用程序服务器或通知控制台)?
getToken()
和getToken(String,String)
返回不同的令牌。请看我的答案。
我还尝试了FirebaseInstanceId.getInstance().deleteInstanceId()
,但下一次调用FirebaseInstanceId.getInstance.getToken
时,我收到空值(在第二次尝试时有效)。
这可能是因为第一次调用getToken()
,它仍在生成中。这只是预期的行为。
我想,在deleteInstanceId
之后,我可以立即再次调用getToken()
,但它看起来像一个黑客。
不是真的。这是如何获得新生成的(前提是它已经生成)令牌。所以我认为没关系。
我必须在SpringJava中为多层架构制作一个RESTAPI,其中需要为Firebase云消息传递(FCM)构建DAO、控制器和服务管理器,以向android应用程序发送推送通知消息,但我无法在Java中配置服务器以向设备发送通知。我怎么能?
FCM服务未向我的iOS应用程序发送消息。 > App CAN成功接收APNs令牌和实例ID令牌 App CAN使用推送通知实用程序利用. p8令牌在后台成功接收来自APN的推送 #2中使用的相同APNs密钥上传到Firebase控制台 应用程序无法接收Firebase控制台中Notification Composer发送的消息,也无法使用CURL请求接收消息。 应用程序在通过FCM发送时不显示任
我正试图将FCM与SNS整合。我在这个答案中读到设置应该与GCM相同。我设法创建了一个FCM应用程序,可以向android设备发送消息。当应用程序在后台时,设备在托盘中接收通知,或当应用程序在前台时打印接收的消息。我正试图整合它现在到SNS,但我似乎不能使它工作,没有任何错误信息。
我试图从C#中的服务器发送推送通知,我使用了正确的注册令牌和API密钥,但仍然得到以下响应。 我按照这个网址来实现这个解决方案通过C#使用FCM(Firebase云消息传递)发送推送到Android 目前,我正在尝试向单个设备发送通知,但也希望同时向多个设备发送通知,我使用了url中给出的,但它不起作用。如果我必须同时向多个设备发送通知,我该怎么办? 这是我的密码
我正在尝试使用FireBase云消息传递。我正在接收令牌,但它没有从控制台收到任何通知。这是我的舱单: 我的代码与示例中的代码几乎相同: 我在这里检查了一个问题,Firebase云消息通知未被设备接收,但仍然无法工作。
我的应用程序结构有点乱,但我必须先添加这个补丁,然后我会重新构建整个逻辑。问题是我首先检查是否有Firebase用户,然后如果有,我使用StreamBuilder从FiRecovery获取当前用户配置文件,然后我有_firebaseMessaging.configure方法,因为onLaunch和onResume我使用这个回调: 因为我需要将用户发送到这个屏幕,在那里他从Firebase获取消息。