我正在学习 GCM(Google云消息传递)
我完成了以下步骤
1 - 已激活并获取浏览器应用的密钥
2 - 在清单
中添加了以下内容使用权限:com.google.android.c2dm.permission.RECEIVE
创建了阻止其他Android应用程序注册和接收Android应用程序消息的权限
为com.google.android.c2dm.intent.RECEIVE创建了一个接收器,类别设置为applicationPackage。接收方应该要求com.google.android.c2dm.SEND权限
3 - 在接收器中
@Override
public void onReceive(Context context, Intent intent) {
ComponentName comp = new ComponentName(context.getPackageName(),
GcmMessageHandler.class.getName());
startWakefulService(context, (intent.setComponent(comp)));
setResultCode(Activity.RESULT_OK);
}
GcmMessageHandler 这是一个Intend服务,用于显示有关接收gcm消息的通知。在 GcmMessageHandler 中有onHandleIntent方法。
@Override
protected void onHandleIntent(Intent intent) {
handler.post(new Runnable() {
@Override
public void run() {
NotificationManager manager = (NotificationManager) getApplicationContext()
.getSystemService(Context.NOTIFICATION_SERVICE);
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(
getApplicationContext());
mBuilder.setSmallIcon(R.drawable.ic_launcher);
mBuilder.setContentTitle("GCM Received");
mBuilder.setContentText("GCM Message");
manager.notify(1, mBuilder.build());
}
});
Log.i("app", "Received ");
GcmBroadcastReceiver.completeWakefulIntent(intent);
}
4 - MainActivity - 注册并获取clint ID,从log cat我复制了该id。
5 - 来自浏览器我使用授权,内容类型和registration_ids向https://android.googleapis.com/gcm/send发帖请求。
它获得了成功的信息 但我的设备没有显示通知。
答案 0 :(得分:0)
对不起大家,
其实我的程序是正确的。我认为这是我手机的问题。 (我也无法接收来自Facebook Messenger的消息,)
但是今天早上我很惊讶,我收到了来自我的测试应用程序(2天前发送的消息),Facebook等的所有消息。
谢谢大家。
答案 1 :(得分:-2)
关注this和this简易教程,在Android中发送和接收推送通知。
并按照本示例中的说明检查包命名和AndroidManifest.xml
文件是否正确配置,并将接收器设置为:
<receiver
android:name="com.google.android.gcm.GCMBroadcastReceiver"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<!-- Receives the actual messages. -->
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<!-- Receives the registration id. -->
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<category android:name="your package name here" />
</intent-filter>
</receiver>