IMSCredentialManager Class Reference

Inherits from NSObject
Declared in IMSCredentialManager.h

Overview

用于管理和刷新用户身份凭证, 该类下的 credentialasyncRefreshCredential: 两个方法是线程安全的

此分类供宿主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

+ sharedManager

单例

+ (instancetype _Nonnull)sharedManager

Discussion

单例

获取该单例前请先调用 initWithAccountProtocol: 来初始化 IMSCredentialManager,否则会抛出异常

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