为不同的服务器获取不同的 GCM registrationId
Get Different GCM registrationId for Different servers
我正在使用 GCM 触发我的 android 应用程序的通知。通知是从我的服务器触发的。例如,假设用户在应用程序中注册了一个帐户,然后服务器将发送通知,告知我在注册请求中传递了 GCM 注册 ID。到现在为止它工作得很好。现在我还有一个 API 是另一台服务器。并且我在该请求中发送了相同的 GCM 注册 ID,但我没有从该服务器收到任何通知,因此从一些阅读中我发现每个 registration_id
都与一个特定的应用程序及其相应的服务器相关联 API 键,即单个设备对于不同的应用程序具有不同的 registration_id
因此,我们在尝试使用 registration_id
发送推送通知时遇到 MismatchSenderId 错误。我该如何解决这个问题?我已经用谷歌搜索了,但没有找到任何合适的解决方案。
我正在以这种方式生成 GCM 注册:
String token = instanceID.getToken(defaultSenderId),
GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);
由于您有 2 个不同的服务器,我相信您有两个不同的发件人 ID。所以在你的代码中,你必须有 2 个令牌,每个服务器一个。
样本:
服务器 1 的令牌:
String token = instanceID.getToken(<sender_id_1>),
GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);
服务器 2 的令牌:
String token2 = instanceID.getToken(<sender_id_2>),
GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);
更新令牌时可能会出现问题:
在 InstanceIDListenerService 中,我看不到识别令牌已更新的方法 - sender_1 或 sender_2。
所以看起来当调用 onTokenRefresh 时我们必须为两个发件人获取新令牌。
我正在使用 GCM 触发我的 android 应用程序的通知。通知是从我的服务器触发的。例如,假设用户在应用程序中注册了一个帐户,然后服务器将发送通知,告知我在注册请求中传递了 GCM 注册 ID。到现在为止它工作得很好。现在我还有一个 API 是另一台服务器。并且我在该请求中发送了相同的 GCM 注册 ID,但我没有从该服务器收到任何通知,因此从一些阅读中我发现每个 registration_id
都与一个特定的应用程序及其相应的服务器相关联 API 键,即单个设备对于不同的应用程序具有不同的 registration_id
因此,我们在尝试使用 registration_id
发送推送通知时遇到 MismatchSenderId 错误。我该如何解决这个问题?我已经用谷歌搜索了,但没有找到任何合适的解决方案。
我正在以这种方式生成 GCM 注册:
String token = instanceID.getToken(defaultSenderId),
GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);
由于您有 2 个不同的服务器,我相信您有两个不同的发件人 ID。所以在你的代码中,你必须有 2 个令牌,每个服务器一个。
样本:
服务器 1 的令牌:
String token = instanceID.getToken(<sender_id_1>),
GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);
服务器 2 的令牌:
String token2 = instanceID.getToken(<sender_id_2>),
GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);
更新令牌时可能会出现问题: 在 InstanceIDListenerService 中,我看不到识别令牌已更新的方法 - sender_1 或 sender_2。 所以看起来当调用 onTokenRefresh 时我们必须为两个发件人获取新令牌。