【发布时间】:2013-08-13 22:43:11
【问题描述】:
我有一个在 Android 上使用 Push 的简单 Worklight V6 应用程序。当应用程序启动时,它会针对 SampleAppRealm 进行基于表单的登录。然后它会在必要时订阅:
function checkSubscribed() {
var subscribed = WL.Client.Push.isSubscribed("myPush");
alert("Is subscribed: " + subscribed);
return subscribed;
}
WL.Client.Push.onReadyToSubscribe = function() {
WL.Client.Push.registerEventSourceCallback("myPush", "PushAdapter",
"MyEventSource", function(props, payload) {
alert("Received message: " + props.alert);
});
if (!checkSubscribed()) {
WL.Client.Push.subscribe("myPush", {
onSuccess : function() {
alert("subscription succeeded!");
},
onFailure : function() {
alert("subscription failed!");
}
});
}
};
这一切都很好。应用启动,登录,onReadyToSubscribe() 触发,注册回调,检查订阅(为假),订阅(成功)
我可以在 Worklight 控制台中看到客户端订阅,如果我调用适配器,我会在应用程序中收到通知。
如果我在手机上点击主页按钮执行其他操作,然后返回应用程序,它仍然知道它已订阅。如果我在应用程序处于后台时推送消息,我会在 Android 通知区域看到它,当我返回它时会在应用程序中看到它。都很好。
问题是当我运行该应用程序时,它已被订阅,我点击了 Android 后退按钮。应用关闭,但管理控制台仍显示订阅的客户端,事实上,如果我在应用关闭的情况下推送消息,它会显示在 Android 通知区域中。 (到目前为止一切顺利)
但是当我启动应用程序时,它会通过身份验证步骤,触发 onReadyToSubscribe(),调用 checkSubscribed() 并且 WLClient.Push.isSubscribed() 返回 false。
如果我在订阅了应用的情况下重启手机,当应用重启时,WLClient.Push.isSubscribed() 返回 false。
如何在应用重启时获得正确的订阅状态?
【问题讨论】:
-
我的第一个问题是,如果使用 IBM Worklight Getting Started 提供的推送通知示例项目,您是否能够重现相同的行为。
标签: ibm-mobilefirst