android permission.C2D_MESSAGE如何防止其他人模仿我的客户端

时间:2014-10-19 22:46:15

标签: android android-c2dm

将Google项目ID创建为SENDER_ID并生成API_KEY

在Android客户端,使用此sender_id生成一个regId并使用gcm注册一个reg id,然后将其发送到我的服务器:

GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(mContext);
regId = gcm.register(SENDER_ID);

在服务器端,服务器使用API​​密钥向客户端发送消息,

Sender sender = new Sender(API_KEY);
sender.send(gcmMessage, regId, 3);

我还在我的Android清单中声明了C2D_MESSAGE权限,如android doc所示,这可以防止其他Android应用程序注册和接收Android应用程序的消息。

<permission android:name="com.myapp.android.permission.C2D_MESSAGE" android:protectionLevel="signature"/>
<uses-permission android:name="com.myapp.android.permission.C2D_MESSAGE"/>

但我不明白它是如何工作的,如果其他人反编译我的apk文件并找到sender_id,那么使用相同的方式将reg id发送到我的服务器,我的服务器如何知道它&#39 ; s未在我的申请中注册,如下所示?注册或发送消息会失败吗?

假客户:

GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(mContext);
fakeRegId = gcm.register(STOLEN_SENDER_ID); //will this fail?

我的服务器:

Sender sender = new Sender(API_KEY);
sender.send(gcmMessage, fakeRegId, 3); //will this fail?

0 个答案:

没有答案