我正在尝试在我的
Android应用程序上实现推送通知.所以没有比Googles Developers页面更好的起点了.
我想在这里遵循这个教程:GCM Demo App.教程建议使用通过SDK Manager提供的示例代码.执行此操作并尝试发送推送通知后,当应用程序运行时,我会在屏幕上看到正在写入新推送已到达.
但是,当应用程序在后台或未运行时,我没有得到推送通知.如果我打开应用程序,屏幕上会再次显示消息.但我从来没有通过弹出和声音通知的形式.
我手动必须在android中执行此操作吗?我认为它与iOS类似,平台负责向您显示通知.
我有什么想法可以实现它吗?
解决方法
尝试重新注册并重新注册您的设备.
在DemoActivity.java中
在DemoActivity.java中
final String regId = GCMRegistrar.getRegistrationId(this); GCMRegistrar.unregister(this);
然后,删除GCMRegistrar.unregister(this);在第二次发射.
更新
您的申请中的通知:
创建类
public class DemoApplication extends Application { private class NotifyReceiver extends BroadcastReceiver{ @Override public void onReceive(Context context,Intent intent) { Toast.makeText(context,"RECEIVE MESSAGE",Toast.LENGTH_SHORT).show(); } } private NotifyReceiver notifyReceiver = new NotifyReceiver(); @Override public void onCreate() { registerReceiver(notifyReceiver,new IntentFilter("GCM_MESSAGE")); super.onCreate(); } @Override public void onTerminate() { unregisterReceiver(notifyReceiver); super.onTerminate(); } }
然后把
<application android:name=".DemoApplication" android:icon="@drawable/ic_launcher" android:label="@string/app_name" >
在AndroidManifest.xml中发送广播
@Override protected void onMessage(Context context,Intent intent) { Log.i(TAG,"Received message"); String message = getString(R.string.gcm_message); displayMessage(context,message); context.sendBroadcast(new Intent("GCM_MESSAGE")); // notifies user generateNotification(context,message); }
作为替代案例,您可以在Manifest,Activity或ForeGround Service中注册broadcastReceiver