Я работаю над частью функциональности для приложения IOS (с целью C) с локальными уведомлениями с использованием инфраструктуры UserNotification. К настоящему времени я смог запланировать уведомление, и оно отображается правильно. Когда я достигаю проблемы с Actionable Notification Types (с категориями и действиями), мне удается отобразить уведомление с действием. Я действительно мог правильно реализовать UNUserNotificationCenterDelegate
и убедиться, что метод didReceiveNotificationResponse
вызывается, и это так. Но моя проблема в том, что я пытался открыть приложение карт оттуда, используя схему URL, такую как
- (void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)(void))completionHandler{
NSString * mapsURL = @"http://maps.apple.com/?saddr=35.6813023,139.7640529&daddr=33.4657901,132.6201192";
//if ( [response.actionIdentifier isEqualToString:@"GoToMaps" ]) {
//Display the map with URL
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:mapsURL] options:@{} completionHandler:^(BOOL success) {
NSLog(@"BOOL value: %d",success);
}];
//}
completionHandler();
}
ПРИМЕЧАНИЕ. Я тестирую это приложение в симуляторе.
Но это не работаетпотому что, когда приложение находится в фоновом режиме, это дает мне 0 на success
аргумент. Но когда я пытаюсь сделать это с помощью кнопки, которая находится в моем приложении (приложение на переднем плане), это на самом деле работает. Итак, мой вопрос:
Есть ли способ, которым я могу открыть другое приложение (из того, где было запланировано уведомление) с помощью кнопок действий в уведомлении, а не только карты, я имею в виду, любое приложение, даже если приложениезакрыто или в фоновом режиме?
Я сказал, что закрытое приложение, но в документации Apple сказано, что когда пользователь выбирает и выполняет действие, система запускает приложение в фоновом режиме и уведомляет общий объект UNUserNotificationCenter, который уведомляет его делегата. Так что он не будет действительно закрыт (не запущен).