Перенаправление титана на 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
})