IBM MobileFirst:如何让应用程序接收任何活动的推送通知

Posted

技术标签:

【中文标题】IBM MobileFirst:如何让应用程序接收任何活动的推送通知【英文标题】:IBM MobileFirst: How to make app Receive push notification on any activity 【发布时间】:2016-10-19 14:12:41 【问题描述】:

我正在使用 android 原生 MFP sdk。我正在尝试实现推送通知。

根据文档 MFP 要求放置

<activity
        android:name=".controllers.activities.MyActivity"
        android:launchMode="singleTask"
        android:theme="@style/AppTheme.NoActionBar">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>

        <intent-filter>
            <action android:name="com.mypackage.NOTIFICATION" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>

我将 NOTIFICATION 意图过滤器绑定到一个活动。

问题是我的 android 应用程序中至少有 10 个活动,当我的应用程序在前台时,我收到一个推送 onmessage 方法被调用,我可以将通知发送到应用程序。

当我的应用程序进入后台并收到推送通知时,这就是一个问题。我使用上述活动启动我的应用程序,但我继续进行不同的活动,然后我现在将我的应用程序发送到后台,如果我收到推送通知,它会落在通知栏中,直到现在一切正常。但是当我点击通知时,它会将我的应用程序带到前台并转到上述活动 MyActivity 并终止呈现活动。

有人能告诉我如何阻止这种情况发生吗?我希望它继续进行当前的活动并仍然收到推送。

我知道我可以使用服务来接收它,但 Mobilefirst 不允许我编辑已在 Mobilefirst sdk 中定义的广播和服务。

我该怎么做?

【问题讨论】:

【参考方案1】:

终于有办法了。

我创建了一个虚拟活动并将上面提到的代码绑定到它。`

<activity
    android:name=".controllers.activities.DummyActivity"
    android:launchMode="singleTask"
    android:theme="@style/AppTheme.NoActionBar">


    <intent-filter>
        <action android:name="com.mypackage.NOTIFICATION" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>

如果我的应用在后台并且应用收到通知。单击通知时,它将打开虚拟活动,我在 onResume() 中调用 finish() 方法。因此,这个特定的活动甚至会在它打开之前完成,这将打开之前的活动,我正在检查是否已启动,如果它是错误的,我将重新启动应用程序。

这不是一个直接的解决方案,但现在可以解决。

【讨论】:

以上是关于IBM MobileFirst:如何让应用程序接收任何活动的推送通知的主要内容,如果未能解决你的问题,请参考以下文章

IBM MobileFirst 7.0 - 如何禁用自动更新

如何在 IBM MobileFirst 中定义应用程序系列和签名密钥?

IBM Mobilefirst 和 IBM Bluemix

如何在 IBM Mobilefirst 中的 serverSessionTimeout 上触发方法

IBM MobileFirst 7.0 - 我们如何生成 .ipa 文件?

IBM MobileFirst/Worklight JSON