Share Extension 是 iOS 8 開發(fā)的脐雪,準(zhǔn)確的說 Share Extension 只是一個(gè)寄存在 App 上的插件。通過沙盒實(shí)現(xiàn)Extension 和 App 之間的數(shù)據(jù)同步
1恢共、 數(shù)據(jù)同步有三種方式
1战秋、NSUserDefault // 比較適用于較小數(shù)組的存儲(chǔ),當(dāng)數(shù)據(jù)大于20MB時(shí)讨韭,會(huì)造成界面卡頓脂信,同步數(shù)據(jù)會(huì)有一定的延遲
代碼:
// 注意這里的SHARE_APPGROUP為證書里設(shè)置的App Group
NSUserDefaults *defaults = [[NSUserDefaults alloc] initWithSuiteName:SHARE_APPGROUPS]; [defaults setValue:value forKey:key];
2、NSFileManager // NSFileManager 和 Core Data 可按個(gè)人習(xí)慣使用
代碼:
[NSFileManger defaultManager] containerURLForSecurityApplicationGroupIdentifier:
3透硝、CoreData
2狰闪、自定義界面,iOS系統(tǒng)提供了源生的系統(tǒng)界面濒生,但是界面比較不美觀埋泵,如果想自定義界面的話,只需在plist文件里面修改NSExtensionPrincipalClasss屬性為自定義的類名即可罪治,如下圖
同時(shí)注意界面之間的跳轉(zhuǎn)方式為:
3丽声、遇到的問題
1.在設(shè)置Share Extension 的NSExtensionActivationRule時(shí),注意每一個(gè)屬性的類型觉义,如下圖:
2.在 Apple 官網(wǎng)上配置 App Groups 時(shí)的ID即為 Share Extension 與 App 之間同步數(shù)據(jù)的key
同時(shí)該key也需要在App targets --- Capabilities --- App Groups設(shè)置雁社,如下圖:
3.倘若 App Share Extension 的名字為 ShareTarget, App 的 Bundle Identifier 為com.company.mobile, 那么 Share Extension 的 Bundle Identifier 就應(yīng)該是: com.company.mobile.Share, 那么問題來了,缺少 Share 的描 Provisioning Profile谁撼,所以歧胁,應(yīng)該在 Apple Deleloper上創(chuàng)建一個(gè)對(duì)應(yīng) Share 的 Provisioning Profile