经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 移动开发 » iOS » 查看文章
App间相互跳转及图片分享
来源:cnblogs  作者:贝贝le  时间:2018/10/8 9:04:08  对本文有异议

A-app:

Info--URL Types--URL Schemes:A-app(一个标识,允许别的app调用本App)

info.plist 添加白名单:

LSApplicationQueriesSchemes(Array)

B-app(String)

 

//使用

- (void)jumpToBapp {

    

    UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];

    pasteboard.image = [UIImage imageNamed:@"qq"];

 

//    NSData *imageDataa = UIImageJPEGRepresentation([UIImage imageNamed:@"qq"], 1);

//    [pasteboard setData:imageDataa forPasteboardType:@"shareImageLE"];

    

    NSString *stra = [NSString stringWithFormat:@"B-app://Page2?A-app"];

    NSURL *appUrla = [NSURL URLWithString:stra];

    

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

        [[UIApplication sharedApplication] openURL:appUrla];

    } else {

        NSLog(@"=====can not OpenURL");

    }

}

 

 

 

 

B-app:

Info--URL Types--URL Schemes:B-app(一个标识,允许别的app调用本App)

info.plist 添加白名单:

LSApplicationQueriesSchemes(Array)

A-app(String)

 

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

    // 1.获取导航栏控制器

    UINavigationController *rootNav = (UINavigationController *)self.window.rootViewController;

    // 2.获得主控制器

//    ViewController *mainVc = [rootNav.childViewControllers firstObject];

    // 3.每次跳转前必须是在跟控制器(细节)

//    [rootNav popToRootViewControllerAnimated:NO];

    

    // 4.根据字符串关键字来跳转到不同页面

    if ([url.absoluteString containsString:@"Page1"]) {

        [rootNav pushViewController:[ViewController new] animated:NO];

 

    } else if ([url.absoluteString containsString:@"Page2"]) {

        MJViewController *mvc = [MJViewController new];

        mvc.urlString = url.absoluteString;

        [rootNav pushViewController:mvc animated:NO];

        //        [mainVc performSegueWithIdentifier:@"homeToPage2" sender:nil];

    }

    

    return YES;

}

 

 

//MJViewController.m

if (self.urlString) {       

        UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];

        self.imageV.image = pasteboard.image;

 

  //      NSData *data = [pasteboard dataForPasteboardType:@"shareImageLE"];

  //      self.imageV.image = [UIImage imageWithData:data];

        

        self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"关闭" style:UIBarButtonItemStyleDone target:self action:@selector(backToApp)];

    }

 

/*

    关于UIPasteboard,如果直接使用pasteboard.string/ pasteboard.URL /pasteboard.image等,一次只能使用一个,且用系统的话,都可以被使用(- (void)setXXX:(id)data forPasteboardType:(NSString *)pasteboardType;)

    可以避免全局被使用(需要typeName);

    

    传字典:需要归档

    NSDictionary *dic = @{@"name":@"哈哈碉堡啦",@"image":[UIImage imageNamed:@"qq"]};

    UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];

    NSData *dictData = [NSKeyedArchiver archivedDataWithRootObject:dic];

    [pasteboard setData:dictData forPasteboardType:@"AType"];

    

    接收:

    UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];

    NSDictionary *dict = [NSKeyedUnarchiver unarchiveObjectWithData:[pasteboard dataForPasteboardType:@"AType"]];

    NSString *name = [dict objectForKey:@"name"];

    */

 

 

 

- (void)backToApp {

    // 1.拿到对应应用程序的URL Scheme

    NSArray *arr = [self.urlString componentsSeparatedByString:@"?"];

    NSString *urlSchemeString = arr[1];

    NSString *urlString = [urlSchemeString stringByAppendingString:@"://"];

    

    // 2.获取对应应用程序的URL

    NSURL *url = [NSURL URLWithString:urlString];

    

    // 3.判断是否可以打开

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

        [[UIApplication sharedApplication] openURL:url];

    }

}

 

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号