iOS两个APP之间的数据传递和跳转

来源:互联网 发布:mba值得读吗 知乎 编辑:程序博客网 时间:2024/04/29 12:08

两个APP之间的跳转是通过[[UIApplication sharedApplication] openURL:url]这种方式来实现的。

首先假设现在我们有APP_1和APP_2


1.首先设置第一个APP的url地址



2.再设置第二个APP的url地址



3.注意设置白名单 

如果不填写则无法跳转,可能会提示下面

-canOpenURL: failed for URL: "baiduqianbao://" - error: "This app is not allowed to query for scheme baiduqianbao"


4.需要跳转的时候 【app_1】

     1、测试数据
   NSDictionary *payContent =[NSDictionarydictionaryWithObjectsAndKeys:@"AAA",@"Key1",@"BBB",@"Key2",@"CCC",@"Key3",nil];

   2、Json转字符串 【注:这里我用的是类别方法,网上很多可以】
   NSString *paramaStr = [payPargumentIZC_JSONString];

   3、组装跳转Url,切记编码,这里楼主有被坑
    NSString *param = [NSStringstringWithFormat:@"AppJumpSecond://page2?param=%@",paramaStr];
    param = [param stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

   4、跳转另一个平台
    NSURL * myURL = [NSURLURLWithString:param];
    if ([[UIApplicationsharedApplication]canOpenURL:myURL]) {
        //已安装唤醒
        [[UIApplicationsharedApplication]openURL:myURL];
    }else{
        //未安装
        NSLog(@"未检测到相关应用");

    }


注: param 参数构成

AppJumpSecond  跳转的目的app的Url——scheme

page2          指定跳转的页面

paramaStr      所传递的参数


5.接收传递的数据 【app_2】

在APP delegate的方法内拦截 并做相应的处理

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*,id> *)options

{

   NSString *urlString = [urlabsoluteString];

   NSLog(@"string===%@",urlString);

}

如下图:


0 0