Я пытаюсь открыть ссылку в браузере Safari из моего приложения для iOS. Это гибридное приложение, поэтому я внес изменения в нативную часть iOS (с которой я совершенно незнаком)
Я попробовал этот код из следующих сообщений: Open target = "_ blank" ссылки вне UIWebView в Safari
NSLog(@"open safari");
// NSLog(urlSafari);
// [[UIApplication sharedApplication] openURL:urlSafari];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:[request.URL.absoluteString substringFromIndex:7]]];
//[NSURL URLWithString:@"http://apple.com"] options:@{} completionHandler:nil];
return NO;
Этот код отлично работает в 6/10 случаях, в 4 случаях он выдает ошибку ниже и прекращает навигацию в браузере Safari. Если я снова загружаю ту же страницув приложении, а затем он работает нормально. В другой раз это не так.
Ошибка выдает меня при нажатии на следующие ссылки: 2019-10-29 12: 07: 35.341 AppName [62467: 679879] open safari
2019-10-29 12: 07: 35.363 AppName [62467: 679879] - [NSURL _fastCStringContents:]: нераспознанный селектор отправлен в экземпляр 0x60000006ed50
2019-10-29 12: 07: 35.363AppName [62467: 679879] *** WebKit отбросил необработанное исключение в веб-представлении: managePolicyForNavigationAction: request: frame: SolutionListener: делегат: - [NSURL _fastCStringContents:]: нераспознанный селектор, отправленный экземпляру 0x60000006ed50
2019-10-29 12: 07: 36.045 AppName [62467: 679879] DataManager saveAppData appData: <> |
2019-10-29 12: 07: 36.249 AppName [62467: 679879] Не удается завершить BackgroundTask: без фоназадание существует с идентификатором 22 (0x16) или, возможно, оно уже завершено. Перерыв в UIApplicationEndBackgroundTaskError () для отладки.
Из всего проведенного поиска он указывает на проверку NSURL или передается неверное значение, которое не может пройти проверку NSURL. но не уверен, как это исправить