openURL не открывает сафари из приложения

Я должен уточнить, что я знаю, как открыть URL-адрес из нашего приложения для iOS, например

[[UIApplication sharedApplication] openURL:[NSURL URLWithString: urlAddress]];

В моем коде я сделал то же самое. Это старое приложение, и я должен обновить его прямо сейчас. Я работаю над Xcode 7 прямо сейчас. У него есть код для открытия моего сайта из приложения. Для этого я закодировал ниже для своего сайта. Я также пробовал использовать все другие URL-адреса основного сайта, но он все еще не открывает сафари, чтобы открыть эту страницу.

    NSURL *url = [NSURL URLWithString:@"http://www.google.com"];
    if([[UIApplication sharedApplication] canOpenURL:url]) {
        NSLog(@"OK");
        [[UIApplication sharedApplication] openURL:url];
    } else {
        NSLog(@"Failed to open url: http://www.google.com");
    }

Я напечатал, что он находится в состоянии canOpenURL:url, и он печатает OK, но не будет перенаправляться в сафари. Я проверил в симуляторе, а также в устройстве, но результат тот же. Пожалуйста помоги. Заранее спасибо.

==== РЕДАКТИРОВАТЬ =======

Это может быть полезно для получения дополнительной информации о приложении.

Это приложение tabbarcontroller, и панель навигации отображается для всех представлений.

Приведенный выше код находится в действии кнопки

-(IBAction)onSiteClick:(id)sender
{
        NSURL *url = [NSURL URLWithString:@"http://www.google.com"];
        if([[UIApplication sharedApplication] canOpenURL:url]) {
            NSLog(@"OK");
            [[UIApplication sharedApplication] openURL:url];
        } else {
            NSLog(@"Failed to open url: http://www.google.com");
        }
}

Если я помещу этот код в метод делегата приложения didFinishLaunchingWithOptions, он откроет сафари и заработает. Но он не работает при нажатии кнопки. Даже я пробовал код в viewDidLoad и viewWillAppear, но он тоже не работает.

===== РЕДАКТИРОВАТЬ 1 ====

Я еще не нашел решения для этого. Итак, на данный момент я сделал веб-просмотр внутри приложения и открыл ссылку в приложении.


person Max    schedule 13.10.2015    source источник


Ответы (3)


Это новая функция безопасности iOS 9. вам нужно добавить URL-адрес в plist.

 <key>LSApplicationQueriesSchemes</key>
<array>
    <string>http://www.google.com</string>
</array>
person Sunny Shah    schedule 13.10.2015
comment
Я пробовал это, но все та же проблема. И я думаю, что для пользовательского URL-адреса открывается другое приложение из нашего приложения. - person Max; 13.10.2015

Надеюсь, это поможет вам:

    <key>NSAppTransportSecurity</key>
    <dict>
     <!--Include to allow all connections -->
     <key>NSAllowsArbitraryLoads</key>
     <true/>
     </dict>

введите здесь описание изображения

person soumya    schedule 13.10.2015

код отлично работает в Xcode 7, iOS 9.0, os x 10.11

Так что с безопасностью думаю проблем нет.

person Jamil    schedule 13.10.2015