Мое приложение (префикс «AAS») - это в основном игра, в которой пользователи теряют очки каждый день, когда они не играют. Я использую UILocalNotifications, чтобы предупредить пользователя о том, что они потеряли очки, и пригласить их вернуться к игре. Один из моих диспетчеров отображает, когда точки изменились, и довольно просто отправить NSNotification, когда UILocalNotification запущена, когда приложение открыто).Запланированная NSNotification (вместо UILocalNotification) ... Быстрые решения?
func application(application: UIApplication, didReceiveLocalNotification notification: UILocalNotification) {
if notification.userInfo != nil {
if let notificationName = notification.userInfo![AASNotification.ActionKey] as? String {
NSNotificationCenter.defaultCenter().postNotificationName(notificationName, object: nil, userInfo: nil)
}
}
}
Когда приложение будет вновь открыт после того, как неактивный, один из классов вычисляет, сколько точек теряются. Отлично. Пуленепробиваемый, за исключением случаев, когда пользователь запрещает моему приложению использовать NotificationCenter, приложение не будет обновляться, если оно открыто, когда уведомление должно срабатывать. В этом случае я написал собственную реализацию очереди времени ожидания, которая в некоторой степени имитирует UILocalNotification, пока мое приложение открыто. Но я подумал, что у кого-то должна была быть эта проблема раньше, и, возможно, для нее есть кокоапод.
Итак, мой вопрос сообществу, знает ли кто-нибудь о библиотеке, которая отправляет временные NSNotifications? Или другой подход к этой проблеме? Here's my solution, which is barebones and works for the purpose I need:
https://github.com/JamesPerlman/JPScheduledNotificationCenter
Я хотел бы использовать тот, который был закодирован профессионалом и хорошо испытанный и богатые. (мне сообщили, что этот запрос отключен от темы для SO.)
Редактирование: Я хочу, чтобы у вас была возможность поставить в очередь любое количество NSNotifications, которое будет запущено в произвольные даты. Очевидно, что NSNotifications может быть получен только моим приложением, пока оно открыто, это нормально. Я не знаю расходов на использование одного NSTimer для каждой NSNotification (может быть сотни NSTimers все в цикле запуска), поэтому в моем решении используется только один NSTimer за раз. Я хочу иметь возможность планировать и отменять NSNotifications так же, как вы можете делать с помощью UINotifications.
не будет работать, чтобы просто проверить последний раз, когда они играли, когда они открывают приложение и вычитают необходимые очки в это время? –
Я делаю это, и я также хочу осветить случай, когда очки вычитаются, пока приложение открыто. – jperl
Как это что-то меняет? Когда вы работаете, установите таймер (или используйте 'UIApplicationSignificantTimeChangeNotification').И когда вы вернетесь с фона или запустите, проверьте, как долго вы отсутствуете. Определенно нет причин тратить время и время автономной работы, запуская ваше приложение, чтобы отметить «ничего не сделал». (Обратите внимание, что рекомендации для ресурсов вне сайта, такие как рекомендации библиотеки, неактуальны для StackOverflow.) –