iOS - UILocalNotification - може да планира само до 64 слота в даден момент

Общ преглед

  • Имам приложение за iOS, което изпраща локални известия на определени дати.
  • Току-що научих, че мога да планирам само 64 известия в даден момент.
  • Има случаи, когато не мога да планирам известия, тъй като 64-те слота са запълнени.
  • Затова ги съхранявам в базата данни и когато потребителят отговори на известие, проверявам дали има свободни слотове и планирам оставащите известия.

Проблем

  • Когато потребителят не отговори на известие, моят код не се изпълнява, така че не мога да планирам оставащите известия.

Въпрос

  1. Има ли решение за този проблем?
  2. мога ли да изпълня част от кода (поддръжка) в определени моменти?
  3. има ли някаква работа за това?

person user1046037    schedule 14.05.2012    source източник
comment
Не съм сигурен дали все още имате нужда от това. Какво ще кажете за управлението на масива scheduledNotifications? Така че можете да проверите кога действително има място в този масив. Или можете да изпразните първия елемент в масива, когато се напълни, и вашето приложение все още да го маркира като нещо, което трябва да бъде проследено.   -  person Michael    schedule 14.06.2012
comment
благодаря, Майкъл, ти си обред, мога да проверя дали има място в масива и след това да планирам всички чакащи известия. Но мога да направя това САМО когато приложението е отворено. Така че, ако потребителят не реши да отвори приложението, няма да мога да проверя дали има място.   -  person user1046037    schedule 14.06.2012
comment
Най-доброто, за което се сещам, е да създам база данни и да съхранявам всички чакащи известия. Когато потребителят отвори приложението, приложението ще провери, когато е възможно (след изтриване / след задействане на известието) дали може да планира някои чакащи известия. Отново, когато приложението не е отворено, нищо не може да се направи. Също така трябва внимателно да проверите дали можете да планирате известието, преди да създадете запис, в противен случай е най-добре да кажете на потребителя, че може да се наложи да отваря приложението при всяко задействане на известието, така че вие, когато известието се задейства, и приложението се отваря, за да изпълни вашия код.   -  person user1046037    schedule 14.06.2012


Отговори (1)


Може да не искате да сигнализирате на потребителя, че има проблем, а по-скоро просто го направете във фонов режим. Ако даден потребител има 64 известия за едно приложение и не го е отворил, тогава той вероятно не използва приложението. След като известието е задействано, то вече не е в масива. Така че ще имате място всеки път, когато се задейства известие. Те обаче остават в центъра за уведомяване, който трябва да изчистите сами.

Обикновено е по-добре да не се представят възможни проблеми на потребителя, а по-скоро да се справят с тях по начин, който има смисъл вътрешно, ако това е опция. Потърсете делегатните методи за appDelegate и най-вероятно ще намерите начини, по които можете да се справите с това, което се опитвате да направите.

Мислех, че ще направя публикация, в случай че искате да приемете отговора.

Късмет.

person Michael    schedule 18.06.2012
comment
Благодаря, Майкъл за този съвет, да, предполагам, че казаното от теб има смисъл, ако потребителят не отвори приложението, това вероятно означава, че той вече не го използва. Когато неповтарящо се известие се задейства автоматично, то се премахва от [[UIApplication sharedApplication] scheduledLocalNotifications], така че мисля, че не е необходимо ръчното им изчистване. Опитвам се да планирам всички чакащи известия, когато има налични слотове. - person user1046037; 19.06.2012