2016-03-29 3 views
0

Я создаю приложение iOS, ориентированное на местоположение, которое отправляет локальное уведомление, когда рядом с iBeacon. Я установил геозонность, чтобы вызвать, когда устройство находится примерно в 5 метрах от маяка.iOS Local Push уведомление не пробуждает устройство

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

Есть ли что-нибудь, что я могу сделать, чтобы уведомление просыпалось, поэтому дисплей загорается/вибрирует/играет звук, например, iMessage.

ответ

1

Если вы используете iBeacons, вам фактически не нужно использовать геообъекты. То, что вы хотите сделать, это использовать мониторинг через Core Location так:

CLBeaconRegion *beaconRegion = [[CLBeaconRegion alloc] initWithProximityUUID:uuid identifier:uuid.UUIDString]; 
       [self.locationManager startMonitoringForRegion:beaconRegion]; 
       beaconRegion.notifyEntryStateOnDisplay = YES; 
       beaconRegion.notifyOnEntry = YES; 
       beaconRegion.notifyOnExit = YES; 

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

- (void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region; 
- (void)locationManager:(CLLocationManager *)manager didExitRegion:(CLRegion *)region; 

Внутри этих методов вы можете указать местное уведомление.

Обратите внимание, что для iOS версии 7.0 и новее вам необходимо ввести NSLocationAlwaysUsageDescription в свой info.plist, чтобы получить службы определения местоположения, работающие с iBeacons.

0

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

См. here для получения дополнительной информации.

if ([[UIApplication sharedApplication] 
    respondsToSelector:@selector(registerUserNotificationSettings:)]) { 
    UIUserNotificationType types = (UIUserNotificationType) (UIUserNotificationTypeBadge | 
                  UIUserNotificationTypeSound | UIUserNotificationTypeAlert); 

    UIUserNotificationSettings *mySettings = [UIUserNotificationSettings settingsForTypes:types categories:nil]; 

    [[UIApplication sharedApplication] registerUserNotificationSettings:mySettings];  
}