通知上的钛android自定义重定向

时间:2015-02-02 13:53:54

标签: appcelerator appcelerator-mobile titanium-modules appcelerator-acs

我正在开发一个包含通过ti.cloudpush模块的gcm推送通知的Android应用程序。 我想为某些类型的推送通知启动特定的窗口。 是否有任何正确的方法来解决这个问题。 以下是我的训练。

CloudPush.addEventListener('callback', function(evt) {
alert("Notification received: " + evt.payload);
//-------------------launch code
var win=Ti.UI.createWindow({
    url:'music.js',
    exitOnClose:true,
});

});

我也尝试过创建待定意图。它也没有失败。 提前谢谢

1 个答案:

答案 0 :(得分:0)

在回调中,您将发回一个有效负载。

alert(evt.payload);

CloudPush.addEventListener('callback', function(evt) {
    Ti.API.debug(evt.payload);

}

有效内容是数据有效负载的JSON字符串。使用JSON.parse将其转换为可以使用的对象。

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse

您可以使用此有效负载来检查您要触发的意图,窗口或操作。

var payload = JSON.parse(evt.payload);

if (payload... ) { 
    // Do first option

} else {
    // Do fallback option
}

在解析有效负载之后,在cloudPush的回调eventEventLister中,您可以加载类似于此的内容:

CloudPush.addEventListener('callback', function(evt) {

    ... Do payload check if statement from evt.payload...

    // Or this could be a new window, alert, etc,
    Titanium.Android.NotificationManager.notify(0, 
        Ti.Android.createNotification({
            contentTitle : "title",
            contentText : "text",
            tickerText : "custom notification!",
            contentIntent : Titanium.Android.createPendingIntent({
                intent : Titanium.Android.createIntent({
                    url : 'foo.js'
                })
            })
        })
    );
});

如果要切换出另一个窗口,请将intent中的url对象设置为自定义变量,该变量根据发回的evt.payload设置。

例如

intent : Titanium.Android.createIntent({
    url : presetWindowUrl
})