美文网首页iOS 开发iOS中js交互
IOS的APP实现相互调起和参数的传值

IOS的APP实现相互调起和参数的传值

作者: 朦胧之眼 | 来源:发表于2016-11-11 15:59 被阅读2480次

    很多次都用到了,iOS中实现一个应用启动另外一个应用的功能。

    一、首先为要跳转的APP,添加自定义URL协议的Schemes的id,很多成熟的app都有固定的Schemes的id,下面再说,首先添加自定义URL协议,添加方法这里介绍两种:

        第一种:直接在Info.plist里面添加,如图:

    添加URL types

    在这里,URL Schemes 的item的值是APP跳转过程中的key,也就是自定义的url协议向iphone注册的key,URL identifier就相当于参数,你可以跳转到你的app的某一个具体功能页面,甚至事件。这里也可以不填写

    第二种:可以直接在info的URL types中添加如图:

    添加URL types

    二、实现跳转的代码,在这里使用openURL来实现APP之间的跳转,随着xcode的更新,目前需要添加白名单,过程如下:

      第一:添加白名单,在自己的的应用程序的的info.plist中添加LSApplicationQueriesSchemes属性,其类型为数组,然后在数组的下面添加要跳转的app的URL Schemes的key。添加白名单如图:

    添加白名单

     第二:编写代码实现跳转,这里跳转用的是openurl,跳转的test02的app,如图:

    无参数的打开url  schemes为test02的app 

    代码如下:

    - (IBAction)skipOtherApp:(UIButton *)sender {

    NSURL* open_URL_A = [NSURL URLWithString:@"test02://"];

    //判断是否是否有can打开应用程序,如果成功就打开

    if ([[UIApplication sharedApplication] canOpenURL:open_URL_A]) {

    NSLog(@"可以打开");

    [[UIApplication sharedApplication] openURL:open_URL_A];

    }

    }

    三:app在跳转过程中的参数传输,当跳转到url Schemes为test02时,将指定的数据传送过去,url Schemes为test02的程序在对数据处理(常用的参数传输为:test02登录数据,test02跳转到指定界面等)

    (1)参数传递

    将上面的代码:NSURL* open_URL_A = [NSURL URLWithString:@"test02://"];

    修改成为:NSURL* open_URL_A = [NSURL URLWithString:@"test02://name=test01&password=123456"];

    这样test01跳转到test02时的传输数据为"name=test01&password=123456",而在test02中处理传递数值的位置为appdelegate.m,在这里添加方法如下:

    -(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation;

    具体解释如图:

    test02 接受参数

    (2)从自己的app跳转到app store 下载指定的app,具体代码如下:

    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"itms://itunes.apple.com/gb/app/id391945719?mt=8"]];

    其中id391945719可以改为你指定的app的id,当然你也可以将指定app的下载地址的https改为itms就可以了。

    相关文章

      网友评论

        本文标题:IOS的APP实现相互调起和参数的传值

        本文链接:https://www.haomeiwen.com/subject/xilfpttx.html