IOS9适配
1、APP间跳转的适配:
在做APP跳转的时候发现IOS8好使的情况下,IOS9并不好使提示错误:
-canOpenURL: failed for URL: “XXXXXXX” - error: “This app is not allowed to query for scheme XXXX”
查资料后发现是因为苹果公司iOS9系统策略更新,限制了http协议的访问,此外应用需要在“Info.plist”中将要使用的URL Schemes列为白名单,才可正常检查其他应用是否安装。
解决方案:
找到Info.plis文件,右键Open As--->Source Code 添加如下:
<key>LSApplicationQueriesSchemes</key>
<array>
<string>xxxxx</string>
</array>
目的就是将要使用的URL Schenmes列为白名单,如果发现还是不能跳转,那么在看下文的Http访问的适配。
2、Http访问:
上面说了,IOS9限制了Http的访问,只能使用Https,两者的对比,简单说就是Https更安全。。。好吧,我之后会有博客详细写的。。。
各种原因的存在,如果必须要使用Http,那么也不是不行的。
解决方案:找到Info.plis文件,右键Open As--->Source Code
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
建议使用这种Source Code方式去更改,之前试过直接操作pilst文件,不太好使。。。
更改后再去试试。。。
3、APP间的跳转
跳转到另一个APP,先确定是不是把上面的步骤使用过了。。。
- (IBAction)wimagebutton_onclick{if ([self APCheckIfAppInstalled:@"xxxx:"]) {
UIAlertView * alert12 = [[UIAlertView alloc]initWithTitle:@"" message:@"“xxxx”想要打开“xxx”" delegate:self cancelButtonTitle:@"打开" otherButtonTitles:@"取消", nil];
[alert12 setTag:12];
[alert12 show];
}else{
UIAlertView * alert13 = [[UIAlertView alloc]initWithTitle:@"" message:@"未安装“xxx”,是否跳转到APP Store?" delegate:self cancelButtonTitle:@"打开" otherButtonTitles:@"取消", nil];
[alert13 setTag:13];
[alert13 show];
}
}//打开工作圈确认事件
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
if (alertView.tag == 12) {
if (buttonIndex == 0) {
NSURL *url = [NSURL URLWithString:@"xxxx:"];//打开
[[UIApplication sharedApplication]openURL:url];
return;
}else{
return;
}
}else{
if (buttonIndex == 0) {
[self openAppaleShop];
return;
}else{
return;
}
}
}
- (void)openAppaleShop
{
NSString *appleID = @"xxxx";
NSString *str = [NSString stringWithFormat:@"itms-apps://itunes.apple.com/app/id%@",appleID];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:str]];
}
这里我做了一个判断,判断是否安装了目标APP,[self APCheckIfAppInstalled:@"xxxx:"],注意!!!后面的“:”不可少。。。吃过亏
根据判断结果弹出对话框,若没有安装目标APP跳转到商店,openAppaleShop方法。
如果已经安装了目标APP
NSURL *url = [NSURL URLWithString:@"xxxx:"];//打开
[[UIApplication sharedApplication]openURL:url];
使用这两句去打开就好了,测试发现,IOS好想自带跳转提示。。。没有深入研究,望大神告知。。。
这里有必要说一下appleID是如何获取的,我是去网页的APP Store查了一下,看网址上面就会有。。。
id后面的问号之前的就是该APP的ID。
还有一个比较难找的APCheckIfAppInstalled:@"xxxx:"中xxxx ,如果不是那种比较有名和流行的APP一般很难在网上直接搜到,所以一种方式是,使用windows系统将需要的APP下载下来,下载后的是IPA格式的,直接重命名将格式改为.rar或者.zip格式,再去解压。。。去里面找一个info什么的文件,打开后找URL Schemes关键字下面的,应该就是了。
好了,就到这,有问题希望大家能够给我指出。。。