Не получать предупреждения от периферии Bluetooth, если приложение iOS находится в фоновом режиме [дубликат]

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

19
задан Norbert 25 February 2013 в 10:32
поделиться

3 ответа

Нет, iOS не гарантирует, что ваше приложение будет оставаться в фоновом режиме. Документы говорят:

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

(Документация applicationWillTerminate )

3
ответ дан Christoph Wimberger 22 August 2018 в 23:18
поделиться
  • 1
    Это говорит о том, что ваше приложение не будет оставаться активным после нескольких дней использования фона. – Kyle Richter 19 March 2013 в 17:57
  • 2
    Этот ответ неверен. Проверьте приложение «Темное небо». в App Store. Это приложение для определения местоположения на основе местоположения. Он работает в фоновом режиме в моем телефоне в течение нескольких месяцев и постоянно уведомляет меня, когда идет дождь. – Penghe Geng 28 May 2013 в 21:15
  • 3
    Это приложение, вероятно, использует Push Notifications. Для этого приложение не должно работать в фоновом режиме. – allprog 8 August 2013 в 07:53
  • 4
    Обратите внимание, что iOS7 собирается внедрить новые функции для решения этой проблемы. Хотя это будет сложно. – allprog 8 August 2013 в 07:55
  • 5
    @ChristophWimberger Я сомневаюсь в вашем предположении Dropbox с помощью службы определения местоположения: 1) он должен был попросить разрешения пользователя использовать службу определения местоположения, и я не знаю, что это когда-либо делало. 2) Я считаю, что использование службы определения местоположения таким образом является нарушением правил в App Store. - Можете ли вы дать ссылку на источник своей информации? – Penghe Geng 12 August 2013 в 16:05

Начиная с iOS 7, ваш прецедент теперь легко поддерживать. Перед iOS 7 ваше приложение могло зарегистрироваться для уведомлений об этом периферии, и оно будет разбужено в фоновом режиме, когда система получила уведомление о доставке. Однако, если система попала под давлением памяти, когда ваше приложение было задумано или перезагружено, оно не будет перезапущено. iOS 7 добавила восстановление состояния в CBCentralManager и CBPeripheralManager, поэтому теперь ОС перезапустит ваше приложение в ограниченной емкости, даже если оно не было запущено из-за любого из вышеупомянутых условий. Дополнительную информацию см. В руководстве CoreBluetooth .

Короче говоря, для вашего варианта использования вы можете сделать следующее:

  • Продолжить поддержку bluetooth-central в качестве режима фонового исполнения.
  • Исключить сохранение и восстановление состояния, как описано здесь здесь в разделе «Добавление поддержки для сохранения и восстановления состояния».
15
ответ дан cbowns 22 August 2018 в 23:18
поделиться
  • 1
    Благодарим вас за это обновление. – Norbert 22 October 2013 в 13:10
  • 2
    Привет @cbowns У меня есть вопрос здесь ... Я добавил добавление поддержки для сохранения и восстановления состояния, но так как я не могу проверить, когда приложение завершается самостоятельно, а система перезапускает приложение. Что я делаю, это убийство моего приложения и чем когда я снова запускаю приложение, я получаю BluetoothCentralKey как ноль. Я уверен, что я получу свой массив ключей, если система перезапустит приложение самостоятельно? – sheetal 6 December 2013 в 15:28
  • 3
    @sheetal Хм. Я еще не реализовал его сам, поэтому я не знаю, как точно его проверить. Все, что я прочитал на форумах Apple и в списке bluetooth-dev, показывает, что это очень сложно проверить. – cbowns 6 December 2013 в 20:34
  • 4
    @sheetal Важно отметить, что вы убиваете приложение для проверки вещей: devforums.apple.com/message/908637#908637 Начиная с iOS 7.0 любое приложение, которое выходит из многозадачности UI not перезагружается ОС по любой причине, кроме пользователя, предпринимающего действия для открытия приложения (т. Е. Выбора значка на главном экране или выбора push-уведомления). ( devforums.apple.com/message/921969#921969 - это еще один способ поставить его. Я все еще ищу, где я читаю такое поведение, описанное кем-то из Apple.) – cbowns 6 December 2013 в 20:41
  • 5
    Найди его! devforums.apple.com/message/886796#886796 от Пола Маркоса. – cbowns 6 December 2013 в 20:43

Использовать IOS7 BLE State Preservation & amp; Восстановление

Если ваше приложение прекращено IOS, из-за давления памяти (поэтому ваше приложение не может работать после нескольких дней), он больше не может обрабатывать делегатов Bluetooth. В этом случае, если вы использовали State Preservation & amp; Восстановление, ваше приложение может быть перезапущено на задний план, чтобы запустить снова, а также всего за 10 секунд. Через 10 секунд он переместится в приостановленное состояние. Только в этой ситуации может запускаться функция willRestoreState CBCentralManager.

Удачи.

3
ответ дан Roy Zhang 22 August 2018 в 23:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: