我正在開發IBM Mobilefirst原生Android應用程序。我已經編寫了用於啓用推送通知的代碼。我收到通知,但我有一個問題在這裏。Mobilefirst PushNotification:在服務器上使用wl_anonymousUserRealm時,應用程序在單擊通知時未調用onReceive方法
啓動應用程序我打電話下面的代碼。
final WLClient client = WLClient.getInstance();
push = client.getPush();
ResponseListener listener = new ResponseListener(ResponseListener.AUTHENTICITY_CONNECT);
client.getPush().setOnReadyToSubscribeListener(listener);
challengeHandler = new AndroidChallengeHandler(realm);
client.registerChallengeHandler(challengeHandler);
WLRequestOptions options=new WLRequestOptions();
options.setAppUserId("sample");
client.connect(listener,options);
當我啓動應用程序,第一次所有上面的代碼會被執行並且在此之後偵聽獲取執行我打電話訂閱方法的偵聽器調用下面的方法
@Override
public void onReadyToSubscribe() {
WLClient.getInstance().getPush().registerEventSourceCallback(pushAliasName, "PushAdapter","PushEventSource", this);
}
。我推動訂閱獲得成功。
在服務器端,我打電話過程發送推送通知,併到達手機。
現在,當我的應用程序轉到後臺,我收到通知。我點擊通知和應用程序重新啓動,並且永遠不會調用已註冊界面的onRecieve方法。
點擊通知後,它會重新啓動應用程序,並再次調用onReadyToSubscribe(),它永遠不會調用onRecieve方法。我應該怎麼做才能調用onReceive()方法,並且應用程序不應該在通知單擊時重新啓動(如果應用程序已經在後臺)?
我的服務器端安全測試是如下
<customSecurityTest name="AuthSecurityTest">
<test realm="wl_antiXSRFRealm" step="1"/>
<test realm="wl_authenticityRealm" step="1"/>
<test realm="wl_remoteDisableRealm" step="1"/>
<test realm="wl_anonymousUserRealm" isInternalUserID="true" step="1"/>
<test realm="wl_deviceAutoProvisioningRealm" step="2" isInternalDeviceID="true"/>
</customSecurityTest>
的的UserIdentity不綁定到安全測試,但我把它在應用applicationdescriptor。所以它永遠不會要求在連接上挑戰處理程序所需的憑據。
在這裏,我想這可能是由MFP提供了7.1版本的安全測試有過的UserIdentity境界,但在我的情況,我不使用自定義的UserIdentity境界,但我使用的是默認wl_anonymousUserRealm示例代碼中的問題。這是問題,因爲當我嘗試使用示例代碼時,它在所有場景下都可以正常工作。但與wl_anonymousUserRealm我有這個問題。
該應用程序已關閉或關閉?如果你殺了應用程序,它會退出推送服務,如果你關閉了應用程序,服務仍然在監聽。你究竟如何關閉應用程序? –
我可能會在我的應用程序中單擊可能會關閉應用程序的按鈕,或者我會轉到手機的後退堆棧並清除可能會終止應用程序的應用程序。在這兩種情況下,我都會收到推送通知。但我的onRecieve方法不是通知點擊。 – Bender
點擊通知應用程序正在重新啓動。我該如何阻止它。 – Bender