統(tǒng)一存儲常見問題
更新時間:
本文將 iOS 常見問題及解決方法整理如下:
如何設(shè)置統(tǒng)一存儲用戶態(tài)?
解答:接入 mPaaS 的應(yīng)用會使用自己的賬號體系,如果需要使用統(tǒng)一存儲來管理用戶態(tài)數(shù)據(jù),請第一時間通知統(tǒng)一存儲,讓統(tǒng)一存儲進行用戶數(shù)據(jù)庫的切換,再通知其它業(yè)務(wù)層。
[[APDataCenter defaultDataCenter] setCurrentUserId:userId];
當用戶登出時,可以不調(diào)用 setCurrentUserId 方法,統(tǒng)一存儲會繼續(xù)打開上一個用戶的數(shù)據(jù)庫,不會產(chǎn)生影響。
如何設(shè)置自己的默認加密 key?
解答:統(tǒng)一存儲提供默認的加密方法,密鑰會使用 mPaasInit 方法傳入的 appKey 來自動生成,建議接入 mPaaS 的應(yīng)用使用自己的密鑰。
實現(xiàn) mPaasAppInterface 接口的下列方法,將密鑰以 NSData 的方式傳給統(tǒng)一存儲。
#pragma mark 統(tǒng)一存儲
/**
* 如果實現(xiàn)這個方法,要把統(tǒng)一存儲默認使用的加密 key 返回,32 字節(jié)。這個 key 應(yīng)用可以使用無線保鏢管理,也可以自己加密混淆后寫在客戶端。
* 如果不實現(xiàn)也可以,統(tǒng)一存儲會使用 mPaas 和 appKey 計算出的一個結(jié)果做為加密 key,安全性也足夠了。
*
* @return 32 字節(jié)的 key,放在 NSData 里
*/
- (NSData*)appDataCenterDefaultCryptKey;
建議應(yīng)用生成自己的 32 字節(jié)密鑰,并轉(zhuǎn)成 Base64 字符串保存在無線保鏢中,在此方法里通過無線保鏢的靜態(tài)接口取出這個字符串,并反解成 NSData。
統(tǒng)一存儲是線程安全的嗎?
解答:是的,統(tǒng)一存儲的數(shù)據(jù)存儲接口都考慮了線程安全性問題,可以在任意線程進行調(diào)用。
如何解決與百度地圖 SDK 的沖突?
描述:當與某一版本的百度地圖 SDK 集成時,可能出現(xiàn)如下 crash。
解答:您需要在 App 初始化時進行如下設(shè)置(10.1.32 及以上版本支持)。
#import <MPDataCenter/APDataCenter.h>
// App 初始化方法中設(shè)置
APDataCenter.compatibility = YES;
archiveObject 是如何存儲和讀取變量的?
解答:請參考以下代碼:
- 對象持久化存儲:
MPCodingData *obj = [MPCodingData new]; obj.name = @"Amelia";: obj.age = 1; [APUserPreferences archiveObject:obj forKey:@"archObjKey" business:dataBusiness];
統(tǒng)一存儲中- 讀取變量:
MPCodingData *encodeObj = [APUserPreferences objectForKey:@"archObjKey" business:dataBusiness];
文檔內(nèi)容是否對您有幫助?