IOS9两个适配问题

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关键字下面的,应该就是了。

 

好了,就到这,有问题希望大家能够给我指出。。。

 
 
posted @ 2015-12-13 16:36  小虎叫我大狗熊  阅读(254)  评论(0编辑  收藏  举报