[英]Android GCM not send notification message to device
我在从GCM Server获取通知消息时遇到问题。设备在不空闲或处于运行状态时将正确获取通知,但是当设备空闲10-15分钟时,设备将无法获取通知,并且所有已注册的设备无法从GCM服务器获取通知。如何解决此问题?
Normally, your app need to wake when it sleeps. 通常,您的应用需要在睡眠时唤醒。
Put this into your manifest file to wake your device when the message is received 将其放入清单文件中以在收到消息时唤醒设备
<uses-permission android:name="android.permission.WAKE_LOCK" />
Add java class name WakeLocker.java 添加Java类名称WakeLocker.java
public abstract class WakeLocker { private static PowerManager.WakeLock wakeLock; public static void acquire(Context context) { if (wakeLock != null) wakeLock.release(); PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE); wakeLock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.ON_AFTER_RELEASE, "WakeLock"); wakeLock.acquire(); } public static void release() { if (wakeLock != null) wakeLock.release(); wakeLock = null; } }
Call the above code in 'private final BroadcastReceiver mHandleMessageReceiver = new BroadcastReceiver()' that might be in your MainActivity.java 在您的MainActivity.java中的“ private final BroadcastReceiver mHandleMessageReceiver = new BroadcastReceiver()”中调用以上代码
private final BroadcastReceiver mHandleMessageReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String newMessage = intent.getExtras().getString(EXTRA_MESSAGE); // Waking up mobile if it is sleeping WakeLocker.acquire(getApplicationContext()); /** * Take appropriate action on this message * depending upon your app requirement * For now i am just displaying it on the screen * */ // Showing received message lblMessage.append(newMessage + "\\n"); Toast.makeText(getApplicationContext(), "New Message: " + newMessage, Toast.LENGTH_LONG).show(); // Releasing wake lock WakeLocker.release(); } };
Thank This source 谢谢这个来源
Hope this helps 希望这可以帮助
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.