打开第三方应用程序

来源:互联网 发布:增值税开票软件 金税盘 编辑:程序博客网 时间:2024/05/17 01:31

原文链接:http://www.jianshu.com/p/169e31cacf42

注意事项

关于info.plist 第三方登录 添加URL Schemes白名单
近期苹果公司iOS 9系统策略更新,限制了http协议的访问,此外应用需要在“Info.plist”中将要使用的URL Schemes列为白名单,才可正常检查其他应用是否安装。
受此影响,当你的应用在iOS 9中需要使用 QQ/QQ空间/支付宝/微信SDK 的相关能力(分享、收藏、支付、登录等)时,需要在“Info.plist”里增加如下代码:

设置步骤:项目名->TARGETS->info->URL Types,设置其中的identifier,URL Schemes,Role:Viewer(代表只读)
<key>LSApplicationQueriesSchemes</key><array><!-- 微信 URL Scheme 白名单--><string>wechat</string></array>
  1. 自定义 URL Scheme
    URL Scheme能够让我们通过自定义的协议在应用程序间传递信息,当你想要发送数据给一个实现了自定义URL Scheme的应用时,只需要创建好合适格式的URL,然后调用openURL:方法,系统就会载入注册了该scheme的应用然后将你的URL传递给他,比如如下的代码,todolist是一个其它应用注册的scheme,通过openURL便可以将服务请求发送到该应用(自定义的URL Scheme要能够唯一标示该APP,如果你的URL Scheme跟别人冲突了,那么你的app就不一定会被调起,iOS并不保证调用哪个应用);
    例如:
    NSURL *myURL = [NSURL URLWithString:@”todolist://newid=20”];
    [[UIApplication sharedApplication] openURL:myURL];

处理:

-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{if ([[url scheme] isEqualToString:@"Example2"]) {NSString *content = [url resourceSpecifier];//解析content获取数据//...return YES;}return NO;}//获取NSURL中的query参数-(NSDictionary *)getParamsFromNSURL:(NSString *)query{NSMutableDictionary *data = [NSMutableDictionary dictionary];NSArray *array = [query componentsSeparatedByString:@"&"];for(NSString *tmp in array){NSArray *params = [tmp componentsSeparatedByString:@"="];MyLog(@"第三方的请求参数:%@-%@",params[0],params[1]);[data setObject:params[1] forKey:params[0]];}return data;}打开第三方应用代码:NSString *str = @"schydbg://?account=liuliu";//下面这句必须得加,不加你会后悔的str = [str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];NSURL *url = [NSURL URLWithString:str];[[UIApplication sharedApplication] openURL:url];
原创粉丝点击