Сервер отправляет данные, когда приложение iOS завершено

У меня есть приложение, которое имеет связь с удаленным сервером. Сервер должен вводить в него данные с помощью удаленного уведомления, а мне нужно получить и сохранить эти данные в базе данных CoreData. Пользователь не будет знать обо всем процессе.

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

Я искал возможные решения. Например, этот вопрос SO был хорош, если я не склонен использовать молчаливое уведомление. Я также видел возможности PushKit, но я не уверен в результате Apple Review.

  1. Каково возможное решение?
  2. Если я хочу использовать VoIP и PushKit для получения уведомлений о прекращении работы приложения, отклонит ли Apple мое приложение?

person Hassan Shahbazi    schedule 03.02.2018    source источник
comment
Если ваша категория приложений оправдывает VoIP, Apple может не отклонить. Например, если вы создаете приложение для телефона, Apple может не отклонить его, иначе есть вероятность отказа.   -  person Raviprakash    schedule 03.02.2018
comment
@Raviprakash Мое приложение взаимодействует с устройством Bluetooth с низким энергопотреблением, и я хочу использовать сервер для его настройки. Будет ли он совместим с категорией VoIP? Могу ли я использовать PKPushType: complication, предназначенный для Apple Watch?   -  person Hassan Shahbazi    schedule 03.02.2018
comment
С таким количеством деталей трудно сказать вам категорию. Я предлагаю вам связаться с Apple либо через вопросы DTS, либо через технических евангелистов.   -  person Raviprakash    schedule 03.02.2018


Ответы (2)


Если вы не создаете приложение VoIP и хотите, чтобы ваше приложение было в App Store, правильный ответ: это невозможно. Единственное, что можно сделать, это каким-то образом скорректировать свои требования.

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

person algrid    schedule 03.02.2018
comment
Ключевым моментом является то, что я не хочу вовлекать пользователя. Я хочу, чтобы это было сделано молча, чтобы пользователь не мог пропустить или отклонить это. - person Hassan Shahbazi; 04.02.2018

Доставка push-уведомлений не гарантируется, поэтому не стоит полагаться на них для синхронизации данных.

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

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

person Paulw11    schedule 03.02.2018
comment
Это еще один недостаток использования Push-уведомлений. Есть ли у вас какое-либо альтернативное решение для сервера, чтобы молча передавать некоторые данные в мое приложение? Я не хочу вовлекать пользователя в процесс. - person Hassan Shahbazi; 04.02.2018
comment
Вы можете использовать тихие push-уведомления, но вам также необходимо проверять свой сервер при запуске приложения. - person Paulw11; 04.02.2018
comment
Тихие push-уведомления не будут доставлены, когда приложение будет закрыто, кроме того, это заставит пользователей открывать приложение. А Пушкит? Будет ли это решением? - person Hassan Shahbazi; 04.02.2018
comment
Вы можете использовать pushkit только в том случае, если ваше приложение является voip-приложением. Что имеет значение, если толчок не получен? В любом случае пользователь не запускает ваше приложение, чтобы увидеть новые данные. Когда они запускают ваше приложение, вы получаете новые данные с сервера, и тогда они видят новые данные. - person Paulw11; 04.02.2018
comment
Уведомление содержит некоторые настройки для подключенного BLE-устройства. Цель состоит в том, чтобы настроить наше устройство BLE через нашу веб-панель без участия пользователя. - person Hassan Shahbazi; 04.02.2018
comment
Затем вы должны объяснить своим пользователям, как важно не завершать работу приложения. - person Paulw11; 04.02.2018