美文网首页
iOS | App 之间数据共享

iOS | App 之间数据共享

作者: Leon_520 | 来源:发表于2018-11-14 11:44 被阅读0次

1. UIPasteboard 剪切板

剪贴板是应用程序之间传递数据的简单方式,建议不要使用全局的粘贴板,而是自己根据名字创建一个新的粘贴板,防止其它地方全局拷贝的影响。然后把需要共享的内容复制到粘贴板,粘贴板的内容可以是文本、URL、图片和UIColor等,另一个app就可以根据粘贴板的名字去读取相关的信息。

// Example1:
UIPasteboard *pasteboard = [UIPasteboard pasteboardWithName:@"myPasteboard" create:YES];
pasteboard.string = _sharedDataTextField.text;
        
// Example2:
UIPasteboard *pasteboard = [UIPasteboard pasteboardWithName:@"myPasteboard" create:NO];
NSString *content = pasteboard.string;
_sharedDataLable.text = content;

2.Shared Keychain Access 钥匙串

iOS的keychain提供一种安全保存信息的方式,可以保存密码等数据,而且keychain中的数据不会因为你删除app而丢失,你可以在重新安装后继续读取keychain中的数据。通常每个应用程序只允许访问自己在keychain中保存的数据,不过假如你使用同一个证书的话,不同的app也可以通过keychain来实现应用间的数据共享

// Example1保存数据到keychain
- (void)setKeyChain{
    [SSKeychain setPassword:@"shareData" forService:@"myservice" account:@"jiangbin"];
}
Example2读取数据
- (IBAction)getByKeychain:(id)sender{
    NSString *myData = [SSKeychain passwordForService:@"myservice" account:@"jiangbin"];
}

3.App Groups (iOS8之后苹果加入了App Groups)

iOS8之后苹果加入了App Groups功能,应用程序之间可以通过同一个group来共享资源,app group可以通过NSUserDefaults进行小量数据的共享,如果需要共享较大的文件可以通过NSFileCoordinator、NSFilePresenter等方式。

// Example1根据group name设置内容:
- (void)setAppGroup{
    NSUserDefaults *myDefaults = [[NSUserDefaults alloc]
                                  initWithSuiteName:@"group.com.jiangbin.SharedData"];
    [myDefaults setObject:@"shared data" forKey:@"mykey"];
}

//Example2根据group name读取数据
- (void)getByAppGroup {
    NSUserDefaults *myDefaults = [[NSUserDefaults alloc]
                                  initWithSuiteName:@"group.com.jiangbin.SharedData"];
    NSString *content = [myDefaults objectForKey:@"mykey"];
}

4.Custom URL Scheme

URL Scheme能够让我们通过自定义的协议在应用程序间传递信息,当你想要发送数据给一个实现了自定义URL Scheme的应用时,只需要创建好合适格式的URL,然后调用openURL:方法,系统就会载入注册了该scheme的应用然后将你的URL传递给他

NSURL *myURL = [NSURL URLWithString:@"todolist://newid=20"];
[[UIApplication sharedApplication] openURL:myURL];

// Eaxmple1发送携带参数的URL到Example2:
NSString *string = @"Example2://name=jiangbin#age=1";
NSURL *url = [NSURL URLWithString:string];
[[UIApplication sharedApplication] openURL:url];

// Example2处理URL请求并解析:
-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
    if ([[url scheme] isEqualToString:@"Example2"]) {
        NSString *content = [url resourceSpecifier];
        //解析content获取数据
        //...
        return YES;
    }
    return NO;
}

相关文章

  • iOS App Groups

    iOS学习笔记-APP之间数据共享空间_APPGroup iOS应用程序间共享数据

  • iOS:app之间共享数据

    一、 Keychain Sharing(同一个证书)https://github.com/soffes/SAMKe...

  • iOS 8 中扩展(Extension)和容器应用(Contai

    iOS 8 中扩展(Extension)和容器应用(Containing App)的之间的数据共享原文 http...

  • iOS | App 之间数据共享

    1. UIPasteboard 剪切板 剪贴板是应用程序之间传递数据的简单方式,建议不要使用全局的粘贴板,而是自己...

  • iOS APP之间数据共享

    前言 iOS中的沙盒可以让平台更加的安全,这也是沙盒给用户带来的最主要好处。不过由于沙盒的严格限制,导致程序之间共...

  • iOS APP之间相互访问

    14年以前:iOS应用间资源共享几种方式iOS应用间交互分享app间共享(交互)方法: 1.iOS应用程序之间可以...

  • App Groups简单使用

    iOS8 之后添加了App Groups,应用可以通过App Groups共享数据,原文如下: AppGroup ...

  • iOS APP之间数据共享与UUID

    最近的一个项目,遇到了应用之间数据共享和设备唯一标识的问题。经过多方面的搜索、验证,得到了一些结论。现在总结如下:...

  • 多个APP之间共享存储数据-iOS keyChain

    最近公司有个需求是一个app根据一些信息生成一个唯一码,后边安装的app也是用这一个唯一码。即多个app公用同一个...

  • APP之间共享数据(一)

    传递Text数据 如果有安装过的多个APP能够匹配ACTION_SEND这个action并且能够接受MIME TY...

网友评论

      本文标题:iOS | App 之间数据共享

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