2017-02-08 16 views
1

Я создаю приложение «Здоровье», которое отправляет ежедневные уведомления пользователю. Количество уведомлений в день зависит от текущего дня (например, день 2 от первого использования), а продолжительность тренировки «работоспособность» также зависит от текущего дня (после этого я посылаю другое уведомление, чтобы уведомить пользователя о том, что упражнение закончено).Установка ежедневных локальных уведомлений, когда приложение убито

Зная, что мы не можем планировать более 64 уведомлений Я пробовал следующее: 1. Настройка уведомлений для текущего дня и следующего дня, когда пользователь выбирает параметры своего приложения, а затем 2. каждую неделю уведомляет о событиях с помощью фоновой выборки (например, независимо от того, насколько часто это происходит, по крайней мере, один раз в день).

Однако это не работает так, как если бы пользователь убил приложение из многозадачного списка, фоновая выборка не будет выполнена.

Есть ли способ запланировать уведомления «на следующий день», не заставляя пользователя открывать приложение для этого? Идея состоит в том, что пользователь может следить за программой без необходимости открывать приложение в каждый день или около того.

Я видел эти молчащие push-уведомления (это позволяет запускать код без необходимости открывать приложение?), Или pushkit может сделать трюк, но мое приложение не является приложением VoIP и поэтому может быть отклонено ...

У кого-нибудь есть решение этой проблемы?

Большое спасибо за ваши ответы.

+1

Вам не нужен pushKit для тихих уведомлений. См. Http://stackoverflow.com/questions/39625687/apple-rejection-after-implementing-silent-notifictaions-with-pushkit – shallowThought

ответ

1

Вам не требуется VoIP для отправки тихих уведомлений. Приложения VoIP имеют бесшумные нажатия, и они являются «превосходными» для обычных тихих нажатий, потому что они доставляются в приложение, даже если пользователь убил приложение, что не соответствует регулярному молчанию.

Недостаток тихого толчка является то, что есть несколько ситуаций, когда он не будет доставлен в приложении: - пользователь может отключить их - пользователь расторг приложение - есть длинный активный телефонный звонок в тот момент, толкающий отправляются - устройство может находиться в автономном режиме - и т.д. и т.п.

Поэтому тихий толчок не может быть использован для убедиться ваше приложение работает каждый день.

В вашем случае, так как это в конечном счете является пользователем, который уведомляется, возможно ли, чтобы сервер отправил пользователю направленный push на них? Я имею в виду, может ли сервер иметь доступную информацию, чтобы знать, что помещать в содержание уведомления? (Пользовательский push-файл по-прежнему доставляется пользователю, даже если пользователь прекратил приложение).

Если на сервере нет этой информации, тогда еще одна вещь, которую следует учитывать, - это push-расширения. Нажимное расширение позволяет перенаправлять пользователя, чтобы его перехватывали, а его содержимое изменялось/обновлялось до его отображения пользователю. Таким образом, вы будете обеспечивать push-уведомление, отображаемое пользователю каждый день, даже если приложение было прекращено (хотя все еще зависит от того, что пользователь может отключить уведомления для приложения). Это может быть сложно, поскольку расширение push не является полной частью вашего приложения, его отдельный, хотя приложение и расширение могут совместно использовать базовые данные, если они хранятся в группе.

Таким образом, каждый день ваш сервер мог бы отправить направленный пользователем push, это будет перехвачено вашим добавочным номером, ваше расширение будет выполняться и определяет, какой должен быть контент push, а затем нажмите на пользователя.

Это некоторые варианты, не могу сказать, какие из них подходят для вас, поскольку вы точно знаете точные детали своих требований.

+0

Спасибо @Gruntcakes за ваш ответ, который очень ясен. Содержимое довольно прямолинейно, поэтому сервер может иметь информацию. В этом случае серверу также необходимо получить информацию о днях, когда пользователь входит в программу работоспособности, чтобы запланировать push-уведомления в нужное время/правильное количество раз. Я собираюсь попробовать это! Очень плохо, что Apple не позволяет запускать несколько кодов один раз в день, как на Android с будильниками ... – CharlyStudio

0

Есть ли вообще планировать свои «следующий день» уведомления, не заставляя пользователя открыть приложение, чтобы сделать так

Не без участия пользователя в некотором роде. Если вы можете быть уверены, что пользователь будет по меньшей мере нажимать в уведомлении о предупреждении каждый день, ваше приложение может быть вызвано (не обязательно на переднем плане) и может запустить код в ответ.

В противном случае, способ попытаться удостовериться, что ваше приложение запускается каждый день - это push-уведомление (потому что импульс исходит от вашего сервера, который работает все время). И даже это, конечно, не на 100%.