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];

}

}

App间相互跳转及图片分享的更多相关文章

  1. 【转】iOS开发--一步步教你彻底学会『iOS应用间相互跳转』

    1. 应用间相互跳转简介 在iOS开发的过程中,我们经常会遇到需要从一个应用程序A跳转到另一个应用程序B的场景.这就需要我们掌握iOS应用程序之间的相互跳转知识. 下面来看看我们在开发过程中遇到的应用 ...

  2. iOS - 白名单应用间相互跳转

    1. 应用间相互跳转简介 在iOS开发的过程中,我们经常会遇到需要从一个应用程序A跳转到另一个应用程序B的场景.这就需要我们掌握iOS应用程序之间的相互跳转知识. 下面来看看我们在开发过程中遇到的应用 ...

  3. iOS应用间相互跳转

    使用第三方用户登录,跳转到需授权的App.如QQ登录,微信登录等. 需要用户授权,还需要"返回到调用的程序,同时返回授权的用户名.密码". 应用程序推广,跳转到另一个应用程序(本机 ...

  4. IOS:程序的退出、App间的跳转

    今天在做一个音乐播放器的项目,发现这个点击退出程序的功能不能实现终于找到了一些有用的资料,就去网上看了半天资料,下面是退出程序的代码: 在动画里面可以自己添加一些,动画,达到相应的效果. AppDel ...

  5. Url Scheme实现APP间通信、分享

    代码地址如下:http://www.demodashi.com/demo/12748.html 简介: URL Scheme就是一个可以让app相互之间可以跳转的对外接口.通过给APP定义一个唯一的U ...

  6. iOS中两个APP之间的跳转和通信

    app间的跳转 一:在第一个app首先要做下面这些操作: 1.在info.plist文件中的Information Property List下添加一项:URL types. 2.点开URL type ...

  7. iOS应用程序开发之应用间的跳转(用着微信等第三方分享登陆)

    简介 配置和实现 判断应用启动方式 一.简介 最实际项目开发中,我们难免会遇到需要从一个应用跳转到另一个应用的情况.比如微信分享,实际就是一种应用间的跳转.但是有时候我们需要实现自己的两个应用间的跳转 ...

  8. iOS 总结APP间跳转的常用以及非常用需求 APP跳转Safari APP跳转APP

    需求驱动技术,有了新的需求,旧技术无法实现时,就会有新的技术出现. 一般的APP跳转需求有以下几种: 1.  从自己的APP跳转到别人的APP. 2. 从自己的APP跳转系统APP. 3. 让别人的A ...

  9. iOS开发之App间账号共享与SDK封装

    上篇博客<iOS逆向工程之KeyChain与Snoop-it>中已经提到了,App间的数据共享可以使用KeyChian来实现.本篇博客就实战一下呢.开门见山,本篇博客会封装一个登录用的SD ...

随机推荐

  1. Java读取一个文本文件拼接成一个字符串(readFileToString)

    import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.I ...

  2. Sping 里面的适配器模式的实现

    适配器模式----------设计模式最近在看SpringMVC源码,从中看到了比较优秀的设计模式所以来分享下. 1.适配器模式(Adapter):将一个类的接口转换成客户希望的另外一个接口,Adap ...

  3. ABP core学习之二 IIS部署.NET CORE

    本文是关于IIS部署.NET CORE的总结,以后有碰到问题将陆续添加 IIS部署.NET CORE总结 一.服务器环境 首先确定自己项目的core版本,然后下载对应的包在服务器上安装 下载地址: h ...

  4. msdn原版系统和原版office

    建议使用迅雷下载工具进行下载 激活详见:在线激活win10.win8/8.1和office2019.2016.2013等的kms激活工具 windows 10 家庭版/家庭单语言版/专业版/教育版/专 ...

  5. Cassandra 原理介绍

    Cassandra最初源自Facebook,结合了Google BigTable面向列的特性和[Amazon Dynamo](http://en.wikipedia.org/wiki/Dynamo(s ...

  6. 使用gethostname()函数和gethostbyname()函数获取主机相关信息

    gethostname() : 返回本地主机的标准主机名. 原型如下: #include <unistd.h> int gethostname(char *name, size_t len ...

  7. 经验分享:PDF怎么提取页面

    PDF文件的页面有很多但有需要的并不是全部,有时候需要其中一页或几页的时候,这个时候我们就需要把单独的页面提取出来,这个时候应该怎么做呢,上次有小伙伴来询问小编,今天小编就为大家分享一下小编自己的编辑 ...

  8. shell实用

    nginx日志切割 [root@localhost ~]# vim /opt/fenge.sh #!/bin/bash #Filename:fenge.sh d=$(date -d "-1 ...

  9. C++ STL容器总结

    1.    STL 容器 1.    按种类划分 顺序容器( sequence containers):是一种各元素之间有顺序关系的线性表,是一种线性结构的可序群集.顺序性容器中的每个元素均有固定的位 ...

  10. 利用阿里云搭建frp实现外网远程桌面链接内网电脑

    主要应用场景:针对学生放假回家使用外网无法远程操作学校的服务器或者电脑,这里通过阿里云的云服务器搭建一个frp服务,实现内网穿透,从而可以直接通过远程桌面或者其他工具实现对校园网内的服务器或者电脑进行 ...