Расширение общего доступа к iOS 8.3 - запуск схем URL
После обновления iOS 8.3 мое расширение общего ресурса (которое вызывает мое основное приложение с использованием схем URL) перестало работать. Итак, я узнал, что подход UIWebView, который мне пришлось запустить, больше не работает. Я также попробовал подход, который Apple рекомендует, используя NSExtensionContext, но все еще безрезультатно. Есть мысли по этому поводу? Мой код выглядит следующим образом:
UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 0, 0)];
[self.view addSubview: webView];
NSString *urlString = "com.myappscheme://shareextension";
NSString * content = [NSString stringWithFormat : @"<head><meta http-equiv='refresh' content='0; URL=%@'></head>", urlString];
[webView loadHTMLString:content baseURL:nil];
а также
[self.extensionContext openURL:[NSURL URLWithString:urlString] completionHandler:^(BOOL success)
{
NSLog(@"fun=%s after completion. success=%d", __func__, success);
}];
Я пытаюсь выполнить оба блока кода на методе didSelectPost из моего контроллера SLComposeServiceViewController, в котором он работал ранее, до обновления моего устройства до iOS 8.3
2 ответа
extensionContext.openURL
предназначен только для расширений Today. Apple не предоставляет общедоступный API для достижения этой цели, и, похоже, в iOS 8.3 Apple заблокировала некоторые обходные пути. Это похоже на дизайн. Если вы считаете, что эта функциональность необходима, откройте запрос на улучшение или отчет об ошибке.
Вы можете попробовать этот код, это работает, но я не знаю, будет ли принят Apple.
UIResponder* responder = self;
while ((responder = [responder nextResponder]) != nil) {
NSLog(@"responder = %@", responder);
if ([responder respondsToSelector:@selector(openURL:)] == YES) {
[responder performSelector:@selector(openURL:) withObject:[NSURL URLWithString:@""]];
}
}