IMSCredentialManager Class Reference
Inherits from | NSObject |
---|---|
Declared in | IMSCredentialManager.h |
Overview
用于管理和刷新用户身份凭证,
该类下的 credential
和 asyncRefreshCredential:
两个方法是线程安全的
此分类供宿主App使用、用于将Credential写入AppGroup共享内存区域中
此分类供AppExtension使用、例如TodayExtension、用于从appGroup共享内存区域中读取Credential信息
Other Methods
+ initWithAccountProtocol:
初始化 IMSCredentialManager
有且仅有调用一次
+ (BOOL)initWithAccountProtocol:(id<IMSAccountProtocol> _Nonnull)accountProtocol
Parameters
accountProtocol |
账号抽象协议 |
---|
Return Value
成功返回 YES,失败返回 NO
Discussion
初始化 IMSCredentialManager
有且仅有调用一次
通过账号抽象协议来初始化,IMSCredentialManager 会监听账号登录和登出通知
1)在账号登录的时候根据 accountType 和 token 创建用户身份凭证 IMSCredential
2)在账号登出的时候清除用户身份凭证
Declared In
IMSCredentialManager.h
credential
同步获取 IoT 用户身份凭证,用户成功登录后会生成该凭证并持久化,用户退出登录后清除
@property (atomic, strong, readonly, nullable) IMSCredential *credential
Return Value
成功返回 IMSCredential
实例,失败返回 nil
Discussion
同步获取 IoT 用户身份凭证,用户成功登录后会生成该凭证并持久化,用户退出登录后清除
Declared In
IMSCredentialManager.h
– asyncRefreshCredential:
异步刷新用户身份凭证
- (void)asyncRefreshCredential:(void ( ^ _Nonnull ) ( NSError *_Nullable error , IMSCredential *_Nullable credential ))completionHandler
Parameters
completionHandler |
刷新回调 |
---|
Discussion
异步刷新用户身份凭证
总是会发起网络请求,有两种场景需要用到该接口:
1)credential
同步接口返回为空,通过该接口来刷新一个凭证(前提是用户账号已经登录)
2)IMSCredential
中的 iotToken
过期时间比较短,比如 24小时,在 iotToken 过期的时候需要调用该接口刷新一个新的 iotToken
,刷新失败请参考 IMSCredentialManagerErrorDomain
下的错误码列表 IMSCredentialManagerErrorCode
来处理错误。
Declared In
IMSCredentialManager.h
ContainingApp Methods
– addCredentialStoreWithAppGroupName:
添加一个AppGroup名称、每次更新或创建Credential后、都将其保存至AppGroup的共享内存区域中 需要开通AppGroups权限、并设置appGroupName属性值、该方法才会生效
- (BOOL)addCredentialStoreWithAppGroupName:(NSString *)appGroupName
Parameters
appGroupName |
AppGroup的名称、可以通过该名称找到对应的共享内存区域 |
---|
Return Value
成功返回 YES,失败返回 NO
Discussion
添加一个AppGroup名称、每次更新或创建Credential后、都将其保存至AppGroup的共享内存区域中 需要开通AppGroups权限、并设置appGroupName属性值、该方法才会生效
Declared In
IMSCredentialManager+AppGroup.h
AppExtension Methods
+ initWithAppGroupName:
初始化 IMSCredentialManager
有且仅有调用一次
+ (BOOL)initWithAppGroupName:(NSString *)appGroupName
Parameters
appGroupName |
AppGroup的名称 |
---|
Return Value
成功返回 YES,失败返回 NO
Discussion
初始化 IMSCredentialManager
有且仅有调用一次
通过AppGroup的名称来初始化 1)在初始化之时,根据AppGroup的名称,找到对应的共享内存区域中保存的Credential
Declared In
IMSCredentialManager+AppGroup.h
– synchronizeCredentialFromAppGroup
根据初始化之时传入的AppGroups的名称、从对应的共享内存区域中更新Credential。Extension在宿主App重新登录或注销后需要调用。
- (void)synchronizeCredentialFromAppGroup
Discussion
根据初始化之时传入的AppGroups的名称、从对应的共享内存区域中更新Credential。Extension在宿主App重新登录或注销后需要调用。
Declared In
IMSCredentialManager+AppGroup.h