即使应用程序安装在用户移动设备上,也无法从FCM响应

时间:2017-06-05 15:42:00

标签: android firebase mobile google-cloud-messaging firebase-cloud-messaging

我们刚刚从GCM迁移到FCM。为了跟踪卸载,我们向所有用户发送无声通知,如果我们收到了#34; NotRegistered"响应我们将用户视为已卸载。自从过去几天开始,我们开始接受" NotRegistered"对于某些尚未卸载该应用的用户。

在查询相同注册令牌的FCM诊断时,正在传递消息,但它们一直处于接受状态。附件是屏幕截图。我在发送邮件时收到的错误代码仍然是" NotRegistered" 。用户尚未卸载app.Attached是屏幕截图。

我们正在接受"未注册"从6月1日开始,消息处于接受状态,直到6月4日。此图像显示截至6月4日的通知消息ID:

1

想澄清以下内容:

  1. 为什么FCM注册令牌的状态更改为NotRegistered。自上个月以来没有升级,用户长时间以来一直在使用最新版本?

  2. 检查FCM错误代码" NotRegistered"跟踪卸载的完整证明方式?是否有更好的机制可用?

1 个答案:

答案 0 :(得分:7)

  1. NotRegistered中出现NotRegistered为何发生的原因在docs中陈述,第三个,是您案件的可能原因(强调我的):

      

    现有的注册令牌可能在许多情况下停止有效,包括:

         
        
    • 如果客户端应用程序取消注册FCM。
    •   
    • 如果客户端应用程序自动取消注册,则可能会在用户卸载应用程序时发生。例如,在iOS上,如果APNS反馈服务将APNS令牌报告为无效。
    •   
    • 如果注册令牌过期(例如,Google可能决定刷新注册令牌,或者iOS设备的APNS令牌已过期)。
    •   
    • 如果客户端应用程序已更新,但新版本未配置为接收消息。
    •   
         

    对于所有这些情况,请从应用服务器中删除此注册令牌,然后停止使用它来发送消息。

  2. 不。正如我上面链接的那样,{"headers": {"Authorization": "Bearer " + token, "Content-Type": "application/json"}} 错误不仅在卸载期间触发。 AFAIK,没有标准的方法。看一下these posts