Я работаю над частью функциональности приложения IOS (с целью C) с локальными уведомлениями, используя структуру UserNotification. К настоящему времени я смог запланировать уведомление, и оно отображается правильно. Когда я достигаю проблемы с активными типами уведомлений (с категориями и действиями), мне удается отобразить уведомление с действием. На самом деле я мог правильно реализовать 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
arg. Но когда я пробую это с помощью кнопки в моем приложении (приложение на переднем плане), это действительно работает. Итак, мой вопрос:
Есть ли способ открыть другое приложение (откуда уведомление было запланировано) с помощью кнопок действий в уведомлении, а не только карты, я имею в виду любое приложение, даже если оно закрыто или находится в фоновом режиме?
Я сказал закрытое приложение, но в документации Apple говорится, что когда пользователь выбирает и выполняет действие, система запускает приложение в фоновом режиме и уведомляет общий объект UNUserNotificationCenter, который уведомляет своего делегата. Так что он не будет по-настоящему закрыт (не запущен).