【问题标题】:Reliably opening App Store links from a UIWebView从 UIWebView 可靠地打开 App Store 链接
【发布时间】:2010-11-30 00:52:14
【问题描述】:

我有一个应用程序可以在 UIWebView 中显示网页。它显示的页面可能包含指向 App Store 上其他 iPhone 应用程序的链接。

在台式计算机上的普通浏览器中,单击这些 App Store 链接将带我通过许多 URL 重定向,最终打开 iTunes 并带我到该应用程序的页面。

有没有办法确保在我的 UIWebView 中点击 App Store 链接时,iPhone 上的 App Store 应用会打开并显示该应用?

我在测试中看到的是,有几种类型的链接可以生成 App Store 页面,它们是:

  • phobos 链接 - phobos.apple.com/etc 等
  • itunes.com/app/appname 链接
  • 推荐/附属链接
  • 我不知道的任何事情

当我在桌面浏览器中打开这些链接中的任何一个时,它们都会起作用并最终打开 iTunes。 当我从 iPhone 中打开这些链接中的任何一个时,UIWebView 会经历许多重定向,最终会发生以下两种情况之一:

  • 重定向无法正常工作,我最终得到一个页面确实无法加载方法调用
  • 重定向工作,iTunes 应用程序打开,应用程序名称搜索完成,然后我从 iTunes 收到一条消息,说明它无法连接到商店。

我唯一能够打开 App Store 应用程序的方法是使用指向该应用程序的直接 iTunes 链接,无需任何推荐或重定向。

显然,对于推荐或附属链接,我不想去掉推荐 ID 或附属 ID。如果点击的是他们的链接,我不应该剥夺他们的推荐。

因此,我们将不胜感激。

谢谢。

【问题讨论】:

    标签: iphone uiwebview


    【解决方案1】:

    我发现这个来自 Apple 的 Technical Q&A 回答了我的问题:

    基本要点是这样的:

    正确构建的 phobos.apple.com 链接将直接重定向到 App Store 应用。 itunes.apple.com 链接必须转换为 phobos 链接。 必须使用 NSURLConnection 遍历推荐/附属链接,最终生成的 URL 将是可以使用的 phobos 链接。

    感谢你们的帮助。

    【讨论】:

      【解决方案2】:

      在我的测试中,我只有 phobos.apple.com 链接可以自动重定向到 AppStore(没有任何 Safari 重定向)。

      【讨论】:

        【解决方案3】:

        除了developer documentation,我认为他们应该有redirectResponsenil 的情况。 我花了一些时间才弄清楚出了什么问题。

        // Save the most recent URL in case multiple redirects occur
        // "iTunesURL" is an NSURL property in your class declaration
        - (NSURLRequest *)connection:(NSURLConnection *)connection willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)response {
            if (response) {
                self.iTunesURL = [response URL];
            }
            else {
                self.iTunesURL = [request URL];
            }
        
            return request;
        }
        

        【讨论】:

          【解决方案4】:

          如果您尚未在实际设备上对此进行测试,我可以告诉您 iPhone 模拟器在将这些链接重定向到 App Store 时存在问题(可能是因为模拟器没有它)。在设备上运行您的应用程序会在该特定区域产生不同的行为,因此请确保您在那里对其进行测试。

          【讨论】:

          • 我从来没有在模拟器中测试过......真的没有意义。始终在设备上进行测试。
          【解决方案5】:

          我一直在尝试做同样的事情。我想在免费版本中放置一个指向我的应用程序完整版本的链接。我刚刚确认文档中使用的方法有效。仅在实际设备上。永远不要相信模拟器!

          the document 中添加东西,然后这样称呼它:

          NSString *testLink = @"http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=284417350&mt=8";   
          
          self.iTunesLink = [NSURL URLWithString:testLink];
          
          [self openReferralURL:iTunesLink];
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2015-07-09
            • 2021-04-13
            • 2018-07-20
            • 1970-01-01
            • 2014-03-11
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多