在应用更新时更新Firebase实例ID

时间:2016-10-10 14:19:55

标签: android firebase firebase-cloud-messaging

回到GCM时代,建议您每次向应用程序发布更新时,都应检查是否有新的注册ID(因为更新后不保证相同)应用程序启动。

FCM的情况仍然如此吗?我找不到任何关于此

的文档

2 个答案:

答案 0 :(得分:3)

当您的应用运行监控private final String sessionExpiredPage = "/exception/sessionexpired.xhtml"; private final String loginPage = "/login.xhtml"; @Override public void doFilter(final ServletRequest request, final ServletResponse response, final FilterChain chain) throws IOException, ServletException { try { final HttpServletRequest req = (HttpServletRequest) request; final HttpServletResponse res = (HttpServletResponse) response; final HttpSession session = req.getSession(false); final String reqURI = req.getRequestURI(); if (isRequireSessionControl(req) && isSessionInvalid(req)) { res.sendRedirect(req.getContextPath() + sessionExpiredPage); } else { if (reqURI.indexOf(sessionExpiredPage) >= 0 || reqURI.indexOf(loginPage) >= 0 || (session != null && session.getAttribute("username") != null) || reqURI.contains("javax.faces.resource")) { chain.doFilter(request, response); } else { res.sendRedirect(req.getContextPath() + "/login.xhtml"); } } } catch (final Exception e) { e.printStackTrace(); } } 时,您应检查当前令牌以检测令牌何时更改。

通过调用onTokenRefresh()来检查应用/主要活动启动时的当前令牌:

FirebaseInstanceID.getToken()

此代码段中调用的public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ... String token = FirebaseInstanceId.getInstance().getToken(); if (token != null) { sendRegistrationToServer(refreshedToken); } } ... 方法是您实现将注册令牌发送到您自己的服务器(或Firebase数据库之类的无服务器解决方案)的方法。

通过继承sendRegistrationToServer()并覆盖FirebaseInstanceIdService来监控令牌的更改:

onTokenRefresh()

请参阅此处的文档:https://firebase.google.com/docs/cloud-messaging/android/client#sample-register

答案 1 :(得分:0)

您无需检查令牌是否最新。方法 如果生成了新令牌,则始终会调用onTokenRefresh()

您需要做的是在调用onTokenRefresh()时检查您的令牌是否已发送到您的服务器。