UIApplication openURL 在 iOS7 中没有指向正确的目的地

Posted

技术标签:

【中文标题】UIApplication openURL 在 iOS7 中没有指向正确的目的地【英文标题】:UIApplication openURL does not point to the correct destination in iOS7 【发布时间】:2013-11-11 11:06:23 【问题描述】:

我有一个应用程序,在单击按钮后会将客户端发送到 AppStore 以下载新应用程序。这是通过以下代码完成的:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"itms-apps://ax.itunes.apple.com/app/yyy-mobile/id4xxxxx89"]]; 

这行代码在 ios6 之前运行良好,但在最新的 v7 iOS SDK 之后,代码就坏了。

我们如何解决这个问题?如果设备安装了 iOS 7,我们是否需要 if/else 逻辑检查?例如:

if( iOS < 7 )  // keep old logic 
     [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"itms-apps://ax.itunes.apple.com/app/yyy-mobile/id4xxxxx89"]];  
else // new logic for iOS 7  
     //TBD 

或者最好用新代码替换旧行,以便为 iOS7 和 iOS6 工作(即向后兼容的新方法)?

【问题讨论】:

也许这有帮助:***.com/a/18906304/1515075 【参考方案1】:

我可以推荐使用在 Appirater 项目中看到的 iOS 6+ SKStoreProductViewController:https://github.com/arashpayan/appirater/blob/master/Appirater.m#L485 (+rateApp)

它将在您的应用内显示应用商店窗口,这比使用 -openURL 的旧解决方案要快得多

【讨论】:

谢谢,但我不想要这个解决方案。我希望 AppStore 在单独的应用中打开 您是否尝试过 Appirater for iOS 7 中使用的 URL? NSString *templateReviewURLiOS7 = @"itms-apps://itunes.apple.com/app/idAPP_ID"; 我已经在 iOS6 上尝试过了,它确实有效。如果这适用于 iOS7,我将使用这个字符串,因为我不需要 if/else sn-p

以上是关于UIApplication openURL 在 iOS7 中没有指向正确的目的地的主要内容,如果未能解决你的问题,请参考以下文章

无法在 [UIApplication sharedApplication] 中使用 openURL 打开 url?

iOS UIApplication功能十分强大的openURL方法

UIApplication openURL 在 iOS7 中没有指向正确的目的地

如果其他应用程序调用 openURL: 使用有效 URL,UIApplication 会阻止应用程序移动到前台

如何拦截任何 UIApplication openURL 调用?

UIApplication openUrl 不适用于格式化的 NSString