将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?