открыть конкретное приложение из уведомлений Action Button на IOS? - PullRequest
0 голосов
/ 19 октября 2019

Я работаю над частью функциональности для приложения 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, который уведомляет его делегата. Так что он не будет действительно закрыт (не запущен).

1 Ответ

0 голосов
/ 21 октября 2019

Я только что нашел решение. В тот момент, когда вы определяете действие Notification, вы устанавливаете actionIdenfier, title и параметры. Для аргументов arg должна быть опция UNNotificationActionOptionForeground, которая, согласно документации Apple, приведет к открытию приложения на переднем плане, а затем в методе didReceiveNotificationResponse, если у вас есть openURL, вы будете перенаправлены на приложение или сафари в соответствии со схемой URL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...