Сбой локального уведомления Titanium Mobile

#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!
    });