【问题标题】:Why cant open itms-services protocol inside an UIWebView iOS7.1 app?为什么无法在 UIWebView iOS7.1 应用程序中打开 itms-services 协议?
【发布时间】:2014-07-16 22:07:31
【问题描述】:

我使用以下链接打开一个 UIWebView:

itms-services://?action=download-manifest&url=https://XXX.plist

启用 SSL (https) 的服务器。如果我在 Safari 中打开页面可以正常工作,我可以下载并安装更新,但是当我在应用程序中打开等号链接时,按链接并没有任何反应。

编辑:

控制台:当 state=1 时开始导航

【问题讨论】:

  • 你实现了所有必要的委托方法吗?
  • 控制台::webView:didFailLoadWithError - CDVWebViewDelegate:当 state=1 时开始导航

标签: ios objective-c ios7 uiwebview


【解决方案1】:

要更新应用程序,只需使用打开此类链接 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"itms-service://....."]];

【讨论】:

    【解决方案2】:

    应用必须自行处理自定义方案。捕获UIWebViewDelegate中的URL并通过UIApplication打开它(如果它可以处理的话):

    - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
        NSURL *url = request.URL;
        if (!([url.scheme isEqualToString:@"http"] || [url.scheme isEqualToString:@"https"] || [url.scheme isEqualToString:@"about"])) {
            UIApplication *app = [UIApplication sharedApplication];
            if ([app canOpenURL:url]) [app openURL:url];
            return NO;
        }
        return YES;
    }
    

    【讨论】:

    • 控制台::webView:didFailLoadWithError - CDVWebViewDelegate:当 state=1 时开始导航
    • 要更新应用程序,只需使用[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"itms-service://....."]]; 打开此类链接 - 如果是企业/临时应用程序用户,系统会询问他是否要安装它(如果只有链接和清单都可以),iTunes链接将打开 AppStore 应用程序。无论如何,在这两种情况下,用户都不能允许更新,你也不能阻止它。
    • 上面的警告看起来与在应用程序/网络视图中打开自定义方案无关。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-25
    • 1970-01-01
    • 1970-01-01
    • 2021-04-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多