openURL: опции: завершение Хендлер: некоторые вопросы - PullRequest
0 голосов
/ 12 сентября 2018

Мне нужно использовать функцию openURL:options:completionHandler: для открытия сторонних приложений (таких как qqmusic, netease, Tmall и т. Д.). Когда мое приложение находится на переднем плане, оно работает, но когда мое приложение переходит в фоновый режим, эта функция не работает. У кого-нибудь есть решения?

Это мой код:

if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"qqmusic://"]]){
    NSURL *url = [NSURL URLWithString:@"qqmusic://"];
    if (@available(iOS 10.0, *)) {
        [[UIApplication sharedApplication] openURL:url options:@{} completionHandler:^(BOOL success) {}];
    } else {
        [[UIApplication sharedApplication] openURL:url];
    }
}

1 Ответ

0 голосов
/ 12 сентября 2018

Есть ли шанс, что вы примете ответ, который просто говорит вам, что то, что вы хотите сделать, невозможно? Потому что это невозможно. Это намеренное дизайнерское решение Apple, запрещающее подобные вещи.

openURL работает только тогда, когда ваше приложение находится на переднем плане. Вы не можете вызвать этот метод, пока он находится в фоновом режиме. И нет также никаких других API, которые бы имели подобный эффект.

Я использую iPhone в течение многих лет, и я не видел других приложений, открывающих URL-адреса в фоновом режиме. Как пользователь iPhone, я очень рад, что это не работает. Было бы очень плохо, если бы я просто читал электронные письма, и вдруг появилось приложение Музыка, потому что его открыло какое-то фоновое приложение. И у меня не было бы способа выяснить, какое приложение сделало это. Этого не происходит, потому что это невозможно.

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