2012-02-15 7 views
23

Я ответил two разным questions сейчас, оба объясняя, как приложения VOIP не начинаются с запуска, но люди, похоже, думают, что они делают.Могут ли приложения iPhone запускаться при запуске?

Я не уверен на 100% сам, кто-то связал меня с part of the apple docs, что на самом деле ничего не говорит об автозапуске приложений.

Первоначально я изначально собирался на знание и this answer, но после того, как другой человек сказал, что они это делают, я действительно не уверен.

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

Можем ли мы уточнить, можно ли автоматически запускать приложение или нет?

+5

Скучно? Ни за что. Это становится очень напряженным. – Costique

+0

@ Костик обновлен соответствующим образом :) –

+0

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

ответ

27

Посмотрите на раздел UIBackgroundModes в this document - это, кажется, утверждать, что добавление voip ключ будет AUTOSTART приложение на ботинке.

Редактировать: a sample app, похоже, подтверждает это поведение.

+0

Это интересно, может кто-нибудь подтвердить это? Существуют ли реальные примеры приложений, которые используют эту функцию? – sch

+0

Только что написал (и сообщил об этом, если вы не хотите копать код): https://github.com/lithium3141/BootLaunch и http://lithium3141.com/2012/02/18/ios- запуск-на-boot-apps-fact-or-fiction /, соответственно. – Tim

+0

+1: для очень хорошего наблюдения. –

2

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

Редактировать

Оказывается, как уже упоминалось Тим, может быть сделано исключение для VOIP приложений.

+0

Неправильное использование. Возможно, это когда-то было, но есть несколько способов, которые работают с начала 2016 года, подробно описанные в других ответах. – DefenestrationDay

+0

Предыдущий комментарий вообще не помогает при общении с ответом. Теперь я не знаю, где искать или что искать. –

0

Значительное изменение местоположения или мониторинг региона также заставляет приложение запускаться при загрузке, пока оно включено и остается включенным. Для этого не нужен ключ UIBackgroundModes.

+1

Привет, можете ли вы предоставить документацию для этого? – joscas

+0

Пока конечный пользователь не отключил «Обновление фонового обновления» в целом или для конкретного приложения, в противном случае он заблокирован для такого повторного активации через CL или VOIP, например. – LenArt

+1

В соответствии с [Руководство по программированию местоположения и карт] (https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/LocationAwarenessPG/CoreLocation/CoreLocation.html): 'Если ваше приложение завершается либо пользователем или системой, система автоматически не перезапускает ваше приложение, когда появятся новые обновления местоположения. Пользователь должен явно перезапустить приложение до возобновления обновления местоположения. Единственный способ автоматического возобновления вашего приложения - использовать мониторинг региона или услугу значительного изменения местоположения. « – DefenestrationDay

5

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

3

ОК, я не знаю, классифицируется ли это как ответ, но я чувствую себя обязанным сказать. Я разрабатываю приложение, которое отслеживает значительные изменения местоположения и предоставляет функции VoIP. Приложение имеет voip ключ в Требуемые фоновые режимы. Я попробовал некоторые случаи, которые я хотел бы поделиться результатами:

  • App находится в режиме отладки - выключен, пока приложение был запущен (активный или фона) - IOS 7.1.1 (11D201) и iPhone 4 (название продукта : iPhone3,2):

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

  • Приложение находится в режиме отладки - выключено, когда приложение было прервано - iOS 7.1.1 (11D201) и iPhone 4 (название продукта: iPhone3,2):

При загрузке приложение не работает, нет журналов в утилите конфигурации, сервер говорит пользователь не зарегистрирован, я не могу назвать его с других устройств; и все же другие приложения, которые не связаны с отслеживанием voip или местоположения, но были открыты перед выключением, по крайней мере загружаются в память. Значение, voip ключ не работал.

Я продолжал тест с тем же приложением, но на этот раз загрузил его из магазина приложений. Результаты те же. Изменено устройство и ОС на iPhone 3G (название продукта: iPhone2,1) и iOS 6.1.6 (10B500). Ничего не изменилось в режимах отладки и выпуска.

Я сказал своему начальнику, что Apple предоставляет такое поведение, и это можно сделать. Затем у меня появились другие мысли и попытались, теперь я отчаянно пытаюсь найти другой путь. Пойдем, чтобы рассказать об этом Apple.

+0

Я думаю, что основная проблема, с которой мы имеем дело, - это: если до перезагрузки приложение не было запущено (BG/FG) то после перезапуска он не будет автозапускаться (например, если наше приложение является VOIP). – OhadM

0

Я разрабатываю VoIP-приложения, и я могу подтвердить, что приложение VoIP будет автозапуск при перезагрузке iPhone, пока пользователь не убьет его перед перезагрузкой. Когда приложение iOS autostart voip будет запущено только application:didFinishLaunchingWithOptions:, т. Е. applicationDidBecomeActive: не будет запущен.

Я усомнился, будет ли iOS автоматически перезапускать приложение voip при его сбое. После расследования я обнаружил, что iOS автоматически перезапускает приложение voip, но если он продолжает терпеть крах, iOS будет проверять время сервалов, прежде чем он, наконец, сдастся.

Если проверить iPhone консольный вывод из Xcode, вы можете увидеть, как эти журналы после первой аварии

.. 
Service exited due to signal: Abort trap: xxx 
Unable to get short BSD proc info for xxxx: No such process 
Application 'UIKitApplication:xxxxx]' crashed. 
... 
Смежные вопросы