【问题标题】:Open iTunes links to apps in UIWebView if app is already installed如果应用程序已安装,则在 UIWebView 中打开指向应用程序的 iTunes 链接
【发布时间】:2012-04-06 08:33:41
【问题描述】:

如果我在 Safari 中打开 this url,iOS 会检查我是否安装了这个应用程序。如果是 - 应用程序将启动,否则我将被重定向到 AppStore 应用程序。

是否可以让UIWebView 做同样的事情? 关键是系统会检查安装的应用程序的天气情况,并注册了CFBundleURLTypes 来响应。

编辑: 对不起,伙计们,我在识别问题上是错误的。实际上还有另一个链接重定向到为应用程序注册的直接(本地)链接。我现在在

-(BOOL) webView:(UIWebView *)inWeb 
    shouldStartLoadWithRequest:(NSURLRequest *)inRequest 
    navigationType:(UIWebViewNavigationType)inType

并调用

[[UIApplication sharedApplication] openURL:url]

【问题讨论】:

  • 您始终可以使用UIApplication openURL 在 Safari 中打开此 URL。我不确定是否可以在您的应用程序中进行操作(没有 Safari),但请注意 Safari 以不同的权限(更高)运行,因此可能无法在标准沙箱中进行操作。

标签: iphone ios uiwebview itunes


【解决方案1】:

如果UIApplication openURL 做你想做的事(在 App Store 中打开应用程序页面,或者如果已安装,则打开应用程序;我猜它会这样做)你可以通过以下方式“窃取”UIWebView 中的 url 打开事件:

// myWebView will be your initialized web view
[myWebView setDelegate:self];

// implement this method in the owning class
-(BOOL) webView:(UIWebView *)inWeb 
 shouldStartLoadWithRequest:(NSURLRequest *)inRequest 
             navigationType:(UIWebViewNavigationType)inType 
{
    if (inType == UIWebViewNavigationTypeLinkClicked) {
        [[UIApplication sharedApplication] openURL:[inRequest URL]];
        return NO;
    }

    return YES;
}

这将打开 所有 在 Safari / App Store / 默认处理应用程序的 web 视图中单击的链接。如果您想以这种方式仅打开 iTunes 链接,您可能希望在此方法中实现一些 URL 解析并仅重定向这些链接。如果您返回YES,将调用默认处理程序,即链接将在 Web 视图中打开。

【讨论】:

    【解决方案2】:

    你描述的行为不是它目前在 iOS 5.1 上的工作方式

    再次点击 iTMS 链接仍会启动 App Store。


    这可以帮助您检测是否已安装应用

    https://stackoverflow.com/a/5746603/515359

    【讨论】:

      猜你喜欢
      • 2012-01-07
      • 1970-01-01
      • 2014-10-16
      • 2011-12-31
      • 1970-01-01
      • 1970-01-01
      • 2016-07-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多