我想澄清一下应用程序ID和实例ID是否相同?还有如何在实时场景中使用它们。当我们获得注册令牌时,我的理解是否正确,应用程序ID是否正常,注册令牌知道推送通知适用于哪个应用程序?该文档建议在应用程序服务器中保留Instance ID以跟踪应用程序,但不确定这意味着什么类型的跟踪。
答案 0 :(得分:3)
客户也必须注册,当他们这样做时,他们将收到他们的代币。
客户端使用实例ID来生成和刷新令牌。他们这样做是通过提供发件人ID来识别可以将通知推送到客户端的应用程序,这将是您的服务器。
ApplicationID是正在注册接收消息的客户端应用程序。
来自文档:
Android应用程序需要先注册GCM连接服务器才能接收消息。当应用程序注册时,它会收到注册令牌并将其发送到应用服务器。客户端应用程序应存储一个布尔值,指示是否已将注册令牌发送到服务器。
Google提供了Instance ID API来处理注册令牌的创建和更新。要获取令牌,请调用instanceID.getToken,提供应用服务器的发件人ID并将范围设置为GoogleCloudMessaging.INSTANCE_ID_SCOPE。不要在主线程中调用此方法;相反,使用扩展IntentService的服务,如下所示:
InstanceID instanceID = InstanceID.getInstance(this);
String token = instanceID.getToken(getString(R.string.gcm_defaultSenderId),
GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);
跟踪这些令牌意味着您应该在注册程序中向客户询问其令牌。获得客户端令牌后,应将其存储到数据库中。这是推送应用程序开发人员的责任。
GCM需要您要发送的有效负载以及令牌或令牌列表。除非您提供令牌,否则GCM无法知道令牌。
以下是实例ID说明的链接:
答案 1 :(得分:0)
*是的,当您注册GCM服务的应用程序时,您可以从Google控制台获得两个ID。当时Google控制台提供了一个AppID,用于在GCM服务器上注册我们的应用程序。 现在第二,当您在GCM服务器上注册您的应用程序时,它将为我们提供唯一的DeviceID,尽管所有可以使用相同应用程序的设备都是唯一的.DeviceID的目的是唯一地标识可以使用该特定应用程序ID注册的所有设备。 强>