#iphone #mobile #notifications #local #titanium
#iPhone #Мобильный #уведомления #Местные новости #titanium
Вопрос:
У меня проблема с локальными уведомлениями. Сбой приложения при попытке вернуться в приложение с помощью локального уведомления. Я скопировал образец кухонной раковины, но немного изменил bg.js . В bg.js происходит что-то вроде этого:
Titanium.App.addEventListener('whatever', function(e){
var myNotification = Titanium.App.iOS.scheduleLocalNotification({
alertBody: msg_body,
alertAction: "Yup",
userInfo: {"key": "value"},
date:new Date(new Date().getTime())
});
});
Ну, это не совсем мой код, но таков дух. Я пытался удалить все бесполезное, но не могу найти ответ…
Вот заголовок отчета о сбое:https://gist.github.com/956064
Является ли это несколько документированной проблемой?
РЕДАКТИРОВАТЬ: опечатка в коде.
Комментарии:
1. выполняется ли фоновый пример KitchenSink в вашей среде?
2. Да, это работает. Но это срабатывает один раз, через 3 секунды после перехода в фоновый режим. Основное отличие в том, что мое уведомление запускается при событии приложения…
3. Ваше событие срабатывает для отключения в bg?
4. Мое событие запускается в фоновом режиме. На самом деле, когда я получаю «прямое сообщение».
Ответ №1:
Я не могу так или иначе прокомментировать использование вами прослушивателя событий, но основная проблема здесь заключается в сбое приложения. Это вызвано тем, что вы создаете несколько localNotifications с одинаковым именем переменной. Решение вашей проблемы заключается в том, чтобы убедиться, что вы не используете одно и то же имя переменной каждый раз, когда планируете локальное уведомление, поэтому вместо этого используйте что-то вроде массива. У меня была такая же проблема, и на то, чтобы поместить определение в массив как таковое, ушло 30 секунд на исправление:
notification[n] = Titanium.App.iOS.scheduleLocalNotification({
alertBody:"alert body",
alertAction:"View App",
userInfo:{"hello":"world"},
date:new Date(new Date().getTime() 3000) // 3 seconds after backgrounding
});
n ;
Комментарии:
1. Я попробую это на этой неделе и вернусь к вам! Спасибо!
2. Просто для тех, у кого могут возникнуть проблемы, вот еще немного кода:
var n = 0; var alertCount = 0; var notification = []; function notify(resp) { // This creates the notification alert on a 'paused' app notification[n] = Ti.App.iOS.scheduleLocalNotification({ alertBody:resp, alertAction:"View App", userInfo:{"hello":"world"}, badge:n 1, date:new Date(new Date().getTime() 3000) }); n ; }
Ответ №2:
Основная проблема заключается в том, что userInfo
поле не заполнено, что вызывает исключение в NCFDictionary. Назначение пустого объекта {}
для userInfo
решает проблему:
var notification = Ti.App.iOS.scheduleLocalNotification({
date : date,
alertBody : 'The alert!',
alertAction : 'Launch now',
repeat : 'daily',
userInfo : {} // <------- This line!
});