我正在尝试了解应用是如何在Google云端消息中注册的。我正在查看Google Play应用中的代码,如下所示:
paramVarArgs = a(paramVarArgs);
Log.v("GCMRegistrar", "Registering app " + paramContext.getPackageName() + " of senders " + paramVarArgs);
Intent localIntent = new Intent("com.google.android.c2dm.intent.REGISTER");
localIntent.setPackage("com.google.android.gsf");
localIntent.putExtra("app", PendingIntent.getBroadcast(paramContext, 0, new Intent(), 0));
localIntent.putExtra("sender", paramVarArgs);
paramContext.startService(localIntent);
我不太明白正在注册的应用程序最终是如何收到意图的,因为这似乎是通过包名com.google.android.gsf(Google服务框架)向应用发送意图。我查看了使用gsf app中的REGISTER操作调用的服务,但它似乎也没有发送广播。我很困惑这一切是如何运作的。有人可以解释一下吗?非常感谢提前!!
答案 0 :(得分:1)
如果您要查看Registering Client Apps文档:
中
- 当您的应用上线时,Instance ID服务会发出
InstanceID
。InstanceID
由公钥/私钥对支持,其中私钥存储在本地设备上,公钥在Instance ID服务中注册。- 您的应用可以使用
InstanceID
方法在需要时请求全新getID()
。如果您的应用程序支持您的应用程序,您的应用程序可以将其存储在您的服务器上。- 您的应用可以根据需要使用
getToken()
方法从实例ID服务请求令牌,并且如InstanceID
,您的应用也可以在您自己的服务器上存储令牌。发给您应用的所有令牌都属于应用InstanceID
。- 令牌是唯一且安全的,但是在安全问题或用户在设备恢复期间卸载并重新安装应用时,您的应用或Instance ID服务可能需要刷新令牌。您的应用必须实现一个侦听器来响应来自Instance ID服务的令牌刷新请求。
醇>
以下是生成ID的代码示例:
String iid = InstanceID.getInstance(context).getId();
希望这有帮助。