我正在使用MFP Integrated开发Android原生应用程序。 我已实现MFP推送通知,它工作正常。我收到了通知。但当我点击通知我的应用程序重新启动。
实际问题是我在我的应用程序启动时启动了一个启动活动,我正在初始化我的所有MFP内容并通过应用程序登录活动终止此活动。
在我的清单文件中,我将接收器定义如下。
<activity
android:name="SplashActivity"
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.app_name.NOTIFICATION" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
接收器是在我的启动活动中定义的,但我正在完成此活动并进行登录活动,然后从登录到其他活动。现在,每次启动应用程序时,只会调用一次启动活动。
出于这个原因,当我点击通知时,它会杀死其他活动并再次启动启动活动,因为它被要求仅在启动活动中接收。
所以有些人可以告诉我如何设计我的应用程序以便在我处理应用程序的任何活动时收到通知(它不应该启动启动活动但是它应该与应用程序在同一个活动上是开放的,并调用onrecieve消息方法)..
请建议。
之前我曾问过类似的问题,但之后可能会发现问题,所以我发布这个问题并提出解决问题的实际问题。 Mobilefirst PushNotification: On using wl_anonymousUserRealm at server, app is not calling onReceive method on clicking notification
答案 0 :(得分:1)
Setting up a GCM client in Android和Receiving downstream messages是您正在考虑的方案的绝佳参考。
您必须定义接收消息所需的GCM接收器和服务。这将极大地帮助您在任何Activity
中接收消息(因为Service
不需要任何UI,而BroadcastReceiver
将帮助CPU唤醒以便侦听器服务将完成其任务)。
希望这有帮助!
答案 1 :(得分:0)
最后我得到了一些解决方案。
我创建了一个虚拟活动并将上面提到的代码绑定到它。
<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()方法。所以这个特殊的活动甚至会在打开之前完成,这将打开以前的活动,我正在检查说如果它是假的,我会重新启动应用程序。
这不是一个直接的解决方案,但它现在是一个解决方法。