У меня есть приложение, которое можно загрузить в Apple App Store. Приложение отправляет локальные уведомления, которые планируются по запросу пользователя. Недавно я узнал, что когда новые версии моего приложения развертываются и автоматически обновляются на устройстве пользователя, ранее запланированные локальные уведомления НЕ доставляются. Учитывая дизайн моего приложения, пользователь МОЖЕТ перезапустить приложение, чтобы перепланировать локальные уведомления. Однако это небольшая проблема, поскольку часть ценности моего приложения заключается в напоминании пользователю - поэтому после запроса локального уведомления пользователь ожидает получить локальное уведомление, а затем запустить приложение, а не наоборот.< /p>
Я разместил вопрос об этом на форуме разработчиков Apple, и инженер Apple (я думаю) ответил и сказал, что локальные уведомления должны продолжать доставляться по расписанию после обновления приложения. Для меня это имело смысл — в противном случае эта проблема кажется фатальной проблемой для бесперебойных обновлений приложений. Однако верно и то, что в моем приложении возникает эта проблема. Локальные уведомления работают точно так, как задумано, когда не было обновления версии. Я пытаюсь выяснить, ошибся ли инженер Apple (маловероятно) или что-то не так с моим планированием локальные уведомления означают, что они не будут сохраняться после обновления приложения (более вероятно, но также и странное поведение).
Я включил свой код для планирования локальных уведомлений ниже. Я запускаю этот код, когда мое приложение меняет фазу и переходит в .background. Кто-нибудь видит в моем коде что-нибудь, что могло бы объяснить, почему обновление приложения может нарушить доставку локальных уведомлений?
func createLocalNotifications() {
UNUserNotificationCenter.current().removeAllDeliveredNotifications()
// Clear all the old notifications to replace them with newly scheduled notifications in this function
UNUserNotificationCenter.current().removeAllPendingNotificationRequests()
let context = sharedModelContainer.mainContext
var query = FetchDescriptor(predicate: #Predicate { item in item.reminder == true},
sortBy: [SortDescriptor(\Item.reminderDate,
order: .forward)])
query.fetchLimit = 60
do {
let items = try context.fetch(query)
for notificationItem in items {
if notificationItem.reminder == true {
let content = UNMutableNotificationContent()
content.title = "Reminder"
content.body = notificationItem.name
content.sound = .default
// Local notification trigger
let calendar = Calendar.current
var triggerDate = calendar.dateComponents([Calendar.Component.day, Calendar.Component.month, Calendar.Component.year], from: notificationItem.reminderDate!)
triggerDate.hour = Calendar.current.component(.hour, from: userSettings.reminderTimeOfDay)
triggerDate.minute = Calendar.current.component(.minute, from: userSettings.reminderTimeOfDay)
let trigger = UNCalendarNotificationTrigger(dateMatching: triggerDate, repeats: false)
// Local notification request with content and trigger
let notificationUUID = "\(notificationItem.id)" + "-localNotificationID"
let request = UNNotificationRequest(identifier: notificationUUID, content: content, trigger: trigger)
// Schedule the request
UNUserNotificationCenter.current().add(request) { error in
guard error == nil else { return }
}
} // End of notificationItem.reminder == true
} // End of notificationItem in items
} catch {
print("Local notification error")
} // End of catch
} // End of createLocalNotifications()
Подробнее здесь: https://stackoverflow.com/questions/793 ... app-update
Сохранять и доставлять запланированные локальные уведомления после обновления приложения iOS. ⇐ IOS
Программируем под IOS
1737048640
Anonymous
У меня есть приложение, которое можно загрузить в Apple App Store. Приложение отправляет локальные уведомления, которые планируются по запросу пользователя. Недавно я узнал, что когда новые версии моего приложения развертываются и автоматически обновляются на устройстве пользователя, ранее запланированные локальные уведомления НЕ доставляются. Учитывая дизайн моего приложения, пользователь МОЖЕТ перезапустить приложение, чтобы перепланировать локальные уведомления. Однако это небольшая проблема, поскольку часть ценности моего приложения заключается в напоминании пользователю - поэтому после запроса локального уведомления пользователь ожидает получить локальное уведомление, а затем запустить приложение, а не наоборот.< /p>
Я разместил вопрос об этом на форуме разработчиков Apple, и инженер Apple (я думаю) ответил и сказал, что локальные уведомления должны продолжать доставляться по расписанию после обновления приложения. Для меня это имело смысл — в противном случае эта проблема кажется фатальной проблемой для бесперебойных обновлений приложений. Однако верно и то, что в моем приложении возникает эта проблема. [b]Локальные уведомления работают точно так, как задумано, когда не было обновления версии.[/b] Я пытаюсь выяснить, ошибся ли инженер Apple (маловероятно) или что-то не так с моим планированием локальные уведомления означают, что они не будут сохраняться после обновления приложения (более вероятно, но также и странное поведение).
Я включил свой код для планирования локальных уведомлений ниже. Я запускаю этот код, когда мое приложение меняет фазу и переходит в .background. Кто-нибудь видит в моем коде что-нибудь, что могло бы объяснить, почему обновление приложения может нарушить доставку локальных уведомлений?
func createLocalNotifications() {
UNUserNotificationCenter.current().removeAllDeliveredNotifications()
// Clear all the old notifications to replace them with newly scheduled notifications in this function
UNUserNotificationCenter.current().removeAllPendingNotificationRequests()
let context = sharedModelContainer.mainContext
var query = FetchDescriptor(predicate: #Predicate { item in item.reminder == true},
sortBy: [SortDescriptor(\Item.reminderDate,
order: .forward)])
query.fetchLimit = 60
do {
let items = try context.fetch(query)
for notificationItem in items {
if notificationItem.reminder == true {
let content = UNMutableNotificationContent()
content.title = "Reminder"
content.body = notificationItem.name
content.sound = .default
// Local notification trigger
let calendar = Calendar.current
var triggerDate = calendar.dateComponents([Calendar.Component.day, Calendar.Component.month, Calendar.Component.year], from: notificationItem.reminderDate!)
triggerDate.hour = Calendar.current.component(.hour, from: userSettings.reminderTimeOfDay)
triggerDate.minute = Calendar.current.component(.minute, from: userSettings.reminderTimeOfDay)
let trigger = UNCalendarNotificationTrigger(dateMatching: triggerDate, repeats: false)
// Local notification request with content and trigger
let notificationUUID = "\(notificationItem.id)" + "-localNotificationID"
let request = UNNotificationRequest(identifier: notificationUUID, content: content, trigger: trigger)
// Schedule the request
UNUserNotificationCenter.current().add(request) { error in
guard error == nil else { return }
}
} // End of notificationItem.reminder == true
} // End of notificationItem in items
} catch {
print("Local notification error")
} // End of catch
} // End of createLocalNotifications()
Подробнее здесь: [url]https://stackoverflow.com/questions/79362486/persist-and-deliver-scheduled-local-notifications-after-ios-app-update[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия