Приложение didFinishLaunchingWithOption: определение того, было ли приложение запущено после входа в регион iBeacon.

Приложение, которое не было запущено, запускается iOS при входе в регион iBeacon. Первый вызываемый метод — - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions. Поскольку причина запуска может различаться, я хотел бы иметь возможность определить из параметров запуска, был ли запуск связан с входом в конкретный (тот, который я отслеживал) регион iBeacon или нет. Это возможно?

Я нашел следующее из документации ApplicationDelegate, но я не уверен, что это правильно, поскольку в нем нет прямого упоминания об iBeacons.

UIApplicationLaunchOptionsBluetoothCentralsKey Наличие этого ключа указывает на то, что приложение ранее имело один или несколько объектов CBCentralManager и было перезапущено системой Bluetooth для продолжения действий, связанных с этими объектами. Значением этого ключа является объект NSArray, содержащий один или несколько объектов NSString.

Каждая строка в массиве представляет собой идентификатор восстановления для объекта центрального менеджера. Это та же строка, которую вы присвоили ключу CBCentralManagerOptionRestoreIdentifierKey при инициализации объекта центрального менеджера ранее. Система предоставляет идентификаторы восстановления только для центральных менеджеров, которые имели активные или ожидающие подключения к периферийным устройствам или сканировали периферийные устройства.

Доступно в iOS 7.0 и более поздних версиях.


person mm24    schedule 06.11.2015    source источник


Ответы (1)


Чтобы узнать, запустило ли ваше приложение обнаружение маяка, проверьте файл UIApplicationLaunchOptionsLocationKey. Это не скажет вам, какая CLBeaconRegion запись запустила ваше приложение. Для этого вы должны дождаться последующего didEnterRegion и проверить переданное значение.

person davidgyoung    schedule 06.11.2015
comment
Спасибо, это блестяще. - person mm24; 06.11.2015