Перенаправление титана на Android при уведомлении

Я занимаюсь разработкой приложения для Android, которое включает gcm push-уведомления через модуль ti.cloudpush. Я хотел бы запустить определенные окна для определенного типа push-уведомлений. Есть ли какой-нибудь правильный способ достичь этого. Ниже приведены мои тренировки.

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

});

Я также попытался создать намерение в ожидании. Это также не было неудачей. заранее спасибо

1 ответ

При обратном вызове вам будет возвращен полезный груз.

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
}

Внутри вашего обратного вызова eventEventLister из cloudPush после анализа полезной нагрузки вы можете загрузить что-то похожее на это:

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'
                })
            })
        })
    );
});

Если вы хотите отключить другое окно, задайте для объекта url в намерении пользовательскую переменную, которая устанавливается в зависимости от того, что представляет собой evt.payload, который отправляется обратно.

например

intent : Titanium.Android.createIntent({
    url : presetWindowUrl
})
Другие вопросы по тегам