美文网首页
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 之间数据共享

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