iOS由于沙盒的存在除盏,應用程序不能越過自己的區(qū)域去訪問別的存儲空間的內(nèi)容噩斟,不過可能有許多場景我們需要在應用程序之間共享數(shù)據(jù)阳欲,比如多個應用共用用戶名密碼進行登錄等巴元。
1毡咏、UIPasteboard
剪貼板是應用程序之間傳遞數(shù)據(jù)的簡單方式,建議不要使用全局的粘貼板务冕,而是自己根據(jù)名字創(chuàng)建一個新的粘貼板血当,防止其它地方全局拷貝的影響。然后把需要共享的內(nèi)容復制到粘貼板禀忆,粘貼板的內(nèi)容可以是文本臊旭、URL、圖片和UIColor等箩退,另一個app就可以根據(jù)粘貼板的名字去讀取相關的信息离熏。
設置粘貼板的內(nèi)容:
UIPasteboard *pasteboard = [UIPasteboard pasteboardWithName:@"myPasteboard" create:YES];
pasteboard.string = @"myShareData";
讀取粘貼板的內(nèi)容:
UIPasteboard *pasteboard = [UIPasteboard pasteboardWithName:@"myPasteboard" create:NO]; NSString *content = pasteboard.string;
2、Custom URL Scheme
NSURL *myURL = [NSURL URLWithString:@"todolist://newid=20"];
[[UIApplication sharedApplication] openURL:myURL];
3戴涝、Shared Keychain Access
保存數(shù)據(jù)到keychain(為了簡單使用SSKeychian)
- (void)setKeyChain
{
[SSKeychain setPassword:@"shareData" forService:@"myservice" account:@"jiangbin"];
}
讀取數(shù)據(jù)
- (IBAction)getByKeychain:(id)sender
{
NSString *myData = [SSKeychain passwordForService:@"myservice" account:@"jiangbin"];
}
4滋戳、App Groups
iOS8之后蘋果加入了App Groups功能钻蔑,應用程序之間可以通過同一個group來共享資源,app group可以通過NSUserDefaults進行小量數(shù)據(jù)的共享奸鸯,如果需要共享較大的文件可以通過NSFileCoordinator咪笑、NSFilePresenter等方式。
根據(jù)group name設置內(nèi)容:
- (void)setAppGroup
{
NSUserDefaults *myDefaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.com.jiangbin.SharedData"];
[myDefaults setObject:@"shared data" forKey:@"mykey"];
}
根據(jù)group name讀取數(shù)據(jù)
- (void)getByAppGroup
{
NSUserDefaults *myDefaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.com.jiangbin.SharedData"];
NSString *content = [myDefaults objectForKey:@"mykey"];
}