Worklight 6.2 Android 应用程序未在推送通知上启动
Posted
技术标签:
【中文标题】Worklight 6.2 Android 应用程序未在推送通知上启动【英文标题】:Worklight 6.2 Android Application not launching on push notification 【发布时间】:2014-12-31 19:41:25 【问题描述】:我正在尝试获取推送通知以在使用 Worklight 6.2 编写的 android 环境应用程序上工作。我已经让应用程序接收推送通知,但是当我点击状态栏中的通知时,它会清除通知但不会启动应用程序。
我在这里查看了答案IBM Worklight 5.0.6.1 - Not getting Push Notifications when phone/app is closed,但正如接受的答案所暗示的,将 app_name 字符串改回应用程序的原始名称不会导致应用程序启动。我还尝试了另一个 cmets 建议,以从应用描述符中的 displayName 中删除嵌入的空格,但这也不起作用。
我查看了 logcat 并没有看到任何消息表明它未能找到要启动的应用程序。我希望里面的东西能给我一个关于它在寻找什么的提示,但没有运气。
是否有其他设置不同步,导致单击通知不会启动应用程序?我自己找不到其他任何东西(可能是因为它不存在)。
谢谢
【问题讨论】:
您能用 IBM 提供的示例项目重新创建它吗?如果没有,您能否提供一份经过编辑的应用副本,以便对其进行测试/调试? 我可以用示例应用重新创建问题。如果我更改了 strings.xml 文件中的 app_name,则在点击通知时无法启动应用程序。我们的应用程序最初是由一家外部咨询公司编写的,所以我不确定他们最初给应用程序起什么名字。有没有办法找到这个?我已经尝试了项目名称和应用名称,但都不起作用。 试过这个吗? ***.com/questions/26259482/… 【参考方案1】:请参阅我对以下问题的回答中的解释。也提供了解决方案:App not opened when clicking on message in notification area
复制/粘贴相关文本:
res\values\strings.xml 中的app_name
值在内部用于创建 Intent 对象。因此,当应用关闭并且 GCMIntentService 收到消息时,它会创建一个动作为 <packagename>.<app_name>
的意图,并将其发送到通知服务以在通知栏中显示通知。
这是在 AndroidManifest.xml 中使用的意图名称,用于指示应用必须在点击通知时启动:
<activity android:name=".PushNotifications" android:label="@string/app_name" android:configChanges="orientation|keyboardHidden|screenSize" android:launchMode="singleTask" android:theme="@android:style/Theme.Translucent.NoTitleBar" android:screenOrientation="sensor">
....
<intent-filter>
<action android:name="com.PushNotifications.PushNotifications.NOTIFICATION"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
所以现在如果app_name
更改为任何其他字符串,Intent 将在内部创建为com.PushNotifications.<new_name>
。
但是 AndroidManifest.xml 仍然有例如 com.PushNotifications.PushNotifications
(在示例应用程序的情况下),因此应用程序不会启动,因为意图操作不同。
要以不同的名称显示应用程序,请按以下步骤操作:
-
在 strings.xml 中,添加一个额外的 new_name_value
在 AndroidManifest.xml 中,用新的字符串名称修改标签
<application android:label="@string/app_new_name" android:icon="@drawable/icon">
<activity android:name=".PushNotifications" android:label="@string/app_new_name"...
【讨论】:
我终于让它工作了。它实际上是几件事的结合。首先是更改 strings.xml 文件中的 app_name。不过,您上面的答案是最大的难题。当我查看清单文件时,它试图用于该操作的包名称不正确。它在字符串中缺少包名称的一部分。我添加了缺失的部分,并将应用程序重命名为其原始值,现在应用程序在点击通知时启动。感谢您的帮助,伊丹。以上是关于Worklight 6.2 Android 应用程序未在推送通知上启动的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法使用 worklight 6.2 或 phonegap 混合应用程序从 android 和 ios 中的另一个应用程序启动一个应用程序?
到 Worklight Server 6.2 的 HTTPS 连接
Worklight 6.2:无法在 windows phone 8 环境中添加多个 js 文件