来自后台的Android本地通知没有标题

Posted

技术标签:

【中文标题】来自后台的Android本地通知没有标题【英文标题】:Android Local notifications from background don't have a title 【发布时间】:2014-06-25 13:41:03 【问题描述】:

在 Ionic 项目中使用 this plugin 我能够在 GCM 推送到达时获得本地通知(使用 ngCordova 和适当的插件)。

代码流程有点像这样:

在抽象应用控制器的范围内,pushNotification 设置有一个引用全局 onNotification 函数的 ecb(在角度范围之外),并添加了一个 localNotification。

在角度范围内,声明了一个 onclick 处理程序以将用户引导到正确的视图。

问题在于,当应用不在前台时,可以观察到以下不需要的行为:

不显示通知标题(即使是硬编码) 未播放所需的声音(设备仅振动) 当应用程序进入前台时,不会触发 onclick 通知。

我的通知代码如下所示:

window.plugin.notification.local.add(
  message:    e.payload.message,
  title:      e.payload.activity.name,
  sound:      'android.resource://' + package_name + '/raw/bounce',
  json:       JSON.stringify(e.payload),
  autoCancel: true,
);

关于发生了什么的任何线索?


FIXED:事实证明,当应用程序处于后台并且推送通知变成本地通知时,事件回调永远不会被调用 - 我忽略了一个功能。谢谢大家的时间和麻烦:/

【问题讨论】:

您的代码 sn-p 让我猜您没有尝试为 title 属性使用固定字符串。你确定e.payload.activity.name 有价值吗? 是的,我确信(99%)它有价值;是的,我确实尝试使用硬编码值 - 当应用程序不在前台时不显示。 与此有任何关系:github.com/katzer/cordova-plugin-local-notifications/issues/42 ? @Slartibartfast 读起来很长;但那里可能有一些有趣的东西......谢谢指出这一点! 【参考方案1】:

试试这个,

public void notifyUser()

    NotificationManager notificationManager = (NotificationManager)this.getSystemService(Context.NOTIFICATION_SERVICE);

    Intent intent = new Intent(MyActivity.this, SomeActivity.class);

    //use the flag FLAG_UPDATE_CURRENT to override any notification already there
    PendingIntent contentIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);

    Notification notification = new Notification(R.drawable.ic_launcher, "Some Text", System.currentTimeMillis());
    notification.flags = Notification.FLAG_AUTO_CANCEL | Notification.DEFAULT_LIGHTS | Notification.DEFAULT_SOUND;

    notification.setLatestEventInfo(this, "This is a notification Title", "Notification Text", contentIntent);
    //10 is a random number I chose to act as the id for this notification
    notificationManager.notify(10, notification);   

【讨论】:

在我的 cordova/ionic 项目中我应该把这段 sn-p 代码放在哪里?

以上是关于来自后台的Android本地通知没有标题的主要内容,如果未能解决你的问题,请参考以下文章

应用程序未运行时的本地通知

从后台注册本地通知

iOS 本地通知 - 在后台时回调

iOS 后台获取本地通知

检测应用程序处于后台/非活动状态时是不是触发了本地通知

当应用程序从后台删除时停止本地通知