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.&lt;new_name&gt;。 但是 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 混合应用程序中的空闲期

Worklight 6.2:无法在 windows phone 8 环境中添加多个 js 文件

谷歌地图无法在 iPhone/iPad worklight 6.2 应用程序上运行

在 Worklight 6.2 中拨打电话