iOS开发 打开第三方应用并且传参数
iOS由于系统权限问题,对于打开第三方应用会有各种限制。要想打开别人的App,得先让人家开发者自己就设置好自己的URL Schemes,一般这个参数都是唯一的,苹果审核的时候会检验,当然有些是没有审核的,这样会劫持他人的App(想打开A应用,却跳转到我恶意开发的应用,这样子就不安全了,所以还是在苹果商城下载App吧,不然遇到恶意软件就不好了)。iOS 9之后还需要添加白名单,需要我们的App添加别人的Schemes到白名单列表里面,这是新规则。设置好之后就可以打开别人的App了。传参也可以进行了。
创建两个App,一个作为主端(打开方,传递参数),一个作为接收端(被打开方,接收参数)。适配iOS 8 ~ iOS 10。如打开baidumap、mqq、weixin/wechat、sinaweibo、alipay、taobao、openapp.jdmobile等。往这几个App传参需要看他们的开发文档咯,这样才能打开指定页并传参数。
配置接收端
1、设Bundle Identifier为com.company.openapp
2、选中工程文件,TARGETS -> Info,找到最下面的URL Types项添加一个Item;
3、将URL Schemes设置为openapp(大小写都可以,推荐小写)。
配置主端
1、设Bundle Identifier为com.company.mainapp(随意)
2、找到Info.plist文件,选中按右键,Open As -> Source Code,添加上面Schemes的值openapp到白名单列表。
在主端添加打开接收端方法
1、添加一个按钮,并实现点击事件;
2、拼接参数到字符串openapp://后面;
3、配置链接,实现苹果打开第三方协议。
注:有中文字符的要记得转换一下。
NSString *string = [NSString stringWithFormat:@"openapp://%@", @"我是好人"];
NSURL *url = [NSURL URLWithString:[string stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
[[UIApplication sharedApplication] openURL:url];
在接收端实现接收参数方法
1、打开AppDelegate.m文件;
2、添加系统自带代理方法,接收Url参数。
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
{
if ([[url scheme] isEqualToString:@"openapp"]) {
NSString *text = [[url host] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSLog(@"接收到:%@", text);
return YES;
}
return NO;
}
完成。运行两个App,然后在主端打开,弹出权限提示,允许后就发现会跳转到接收端,并显示接收到的参数。
如果您喜欢,请按投票;如果有疑问,欢迎一起探讨。
版权声明:本站【趣百科】文章素材来源于网络或者用户投稿,未经许可不得用于商用,如转载保留本文链接:https://www.qubaik.com/answer/111763.html