App Group---APP之間數(shù)據(jù)共享

  • 實(shí)際開發(fā)中,我們也許會(huì)有這種需求:公司有兩個(gè)APP,當(dāng)用戶登錄其中一個(gè)APP后,在下載第二個(gè)APP的時(shí)候,可以實(shí)現(xiàn)自動(dòng)登錄的功能。
  • 這種情況如何實(shí)現(xiàn)呢?我之前的項(xiàng)目一直都是用第三方類庫KeychainAccess實(shí)現(xiàn)的鑰匙串分享數(shù)據(jù)的模式Keychain share。但是幾天前查資料,開始認(rèn)識(shí)另外一種方式,不依賴第三方庫就可以實(shí)現(xiàn),那就是APP Groups。iOS8新開放的功能

配置APP Groups

  • 創(chuàng)建兩個(gè)APP,并且在Apple Developer中創(chuàng)建兩個(gè)APP的id創(chuàng)建APPid時(shí),在APP Groups復(fù)選框打上對鉤,當(dāng)我們配置完成App ID之后,會(huì)發(fā)現(xiàn)App Groups是Configurable狀態(tài),這是因?yàn)樵蹅冞€沒有配置相應(yīng)的app groups,別著急,咱們等會(huì)再來管它。

  • 還是要打開Apple Developer,在id那一組中又一個(gè)App Groups選項(xiàng),我們新創(chuàng)建一個(gè)APP Groups,


    111.png

    這里一共有兩個(gè)選項(xiàng),第一個(gè)是我們這個(gè)app group的描述,第二個(gè)是我們app group的id。這個(gè)id默認(rèn)是要group.打頭,并且是不能去掉的。

  • 現(xiàn)在去配置新創(chuàng)建的兩個(gè)APP ID,因?yàn)樵賱?chuàng)建的時(shí)候勾選了APP Groups,但是并沒有配置它,所以它回事黃色的狀態(tài),現(xiàn)在點(diǎn)擊Edit,進(jìn)入之后選擇新創(chuàng)舉的groups。


    111.png
  • 點(diǎn)擊Edit---勾選上剛創(chuàng)建好的App Group----配置完成,在返回來看一下咱們的App ID,完美~Enabled狀態(tài)了。

配置Xcode中的APP Groups

  • 分別打開兩個(gè)程序,切換到Capabilities選項(xiàng)卡,找到App Groups選項(xiàng),刷新一下,將App developer中的App Groups同步下來,然后勾選上咱們剛才創(chuàng)建的開發(fā)組。


    111.png
  • 當(dāng)我們配置完以后,會(huì)在文件目錄下多出來一個(gè).entitlements的文件。

如何實(shí)現(xiàn)數(shù)據(jù)共享

配置工作做完了,接下來,就是我們的代碼表現(xiàn)的時(shí)間了。
在這里,我只創(chuàng)建了一個(gè).txt來存儲(chǔ)數(shù)據(jù),其他類型的持久化存儲(chǔ)同理

  • 首先是Main App寫入數(shù)據(jù)
//Main App 通過TextField來向共享文件appGroup.txt中寫入數(shù)據(jù)
- (void)textFieldDidEndEditing:(UITextField *)textField {
    //獲取App Group的共享目錄
    NSURL *groupURL = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:@"group.com.simon.app.test"];
    NSURL *fileURL = [groupURL URLByAppendingPathComponent:@"appGroup.txt"];

    //寫入文件
    [textField.text writeToURL:fileURL atomically:YES encoding:NSUTF8StringEncoding error:nil];
}
  • 接下來是兩一個(gè)APP讀取數(shù)據(jù)
//Sub App 通過獲取appGroup.txt中的數(shù)據(jù),展現(xiàn)在label上

//獲取App Group的共享目錄
    NSURL *groupURL = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:@"group.com.simon.app.test"];
    NSURL *fileURL = [groupURL URLByAppendingPathComponent:@"appGroup.txt"];

    //讀取文件
    NSString *str = [NSString stringWithContentsOfURL:fileURL encoding:NSUTF8StringEncoding error:nil];
    self.shareLabel.text = str;
  • containerURLForSecurityApplicationGroupIdentifier,沒錯(cuò),就是這個(gè)方法,用來在share path中創(chuàng)建share document。

  • NSUserDefaults使用

//初始化一個(gè)供App Groups使用的NSUserDefaults對象
NSUserDefaults *userDefaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.company.appGroupName"];

//寫入數(shù)據(jù)
[userDefaults setValue:@"value" forKey:@"key"];

//讀取數(shù)據(jù)
NSLog(@"%@", [userDefaults valueForKey:@"key"]);
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容