【发布时间】:2013-08-07 09:05:52
【问题描述】:
我正在使用 PhoneGap plugin 向 Android 应用发送推送通知。它工作得很好。但问题是,当应用程序打开时,没有收到通知,但如果我关闭应用程序,通知就会进来。
可能是什么原因。即使应用程序正在运行,我也希望在系统托盘中发送推送通知。
【问题讨论】:
标签: android cordova push-notification google-cloud-messaging
我正在使用 PhoneGap plugin 向 Android 应用发送推送通知。它工作得很好。但问题是,当应用程序打开时,没有收到通知,但如果我关闭应用程序,通知就会进来。
可能是什么原因。即使应用程序正在运行,我也希望在系统托盘中发送推送通知。
【问题讨论】:
标签: android cordova push-notification google-cloud-messaging
这是设计使然,并遵循正常的 UI 约定。
幸运的是插件是开源的,你可以改变行为。
传入的推送消息由GCMIntentService 处理。
onMessage() 方法检查应用是否在前台:
if (PushPlugin.isInForeground()) {
extras.putBoolean("foreground", true);
PushPlugin.sendExtras(extras);
}
else {
extras.putBoolean("foreground", false);
// Send a notification if there is a message
if (extras.getString("message") != null && extras.getString("message").length() != 0) {
createNotification(context, extras);
}
}
修改if (PushPlugin.isInForeground()) {...} 语句以完成您的需要。
另一种方法是修改 PushPlugin.isInForeground() 本身的代码。
public static boolean isInForeground()
{
return gForeground;
}
但是请注意更改此代码的任何不良副作用。可能还有其他功能取决于此方法(现在和将来)。
有关如何接收 Parse 推送消息的详细说明,请参阅相关帖子:
【讨论】: