ASCredentialListProviderViewController
extensionContext: 上下文,通过此context回调
- (void)prepareCredentialListForServiceIdentifiers:(NSArray<ASCredentialServiceIdentifier *> *)serviceIdentifiers;
展示Credentials List让用户选择,系统会触发该方法,并传入serviceIdentifiers数组,以便用户过滤或者对数据排序。如果serviceIdentifiers数组存在多个,那么越靠前的数据价值越大。当然数组也可能是空的。
- (void)provideCredentialWithoutUserInteractionForIdentity:(ASPasswordCredentialIdentity *)credentialIdentity;
如果用户可信则直接返回数据,否则可以触发ASExtensionErrorCodeUserInteractionRequest让用户进行身份验证。该方法触发时ViewController并没有展示,所以不要做任何的UI操作。
- (void)prepareInterfaceToProvideCredentialForIdentity:(ASPasswordCredentialIdentity *)credentialIdentity;
该方法是验证,比如提供一个解锁页面,当用户输入密码正确则调用[ASCredentialProviderExtensionContext completeRequestWithSelectedCredential:completionHandler:]对外提供数据;如果输入错误,则调用[ASCredentialProviderExtensionContext cancelRequestWithError:]错误类型选用ASExtensionErroCode中的ASExtensionErroDomain,如果Extension无法为外部提供数据则选用ASExtensionErrorCodeCredentialIdentityNotFound。
- (void)prepareInterfaceForExtensionConfiguration;
系统Setting打开Extension时触发。这时会展示ViewController。该方法触发需要配置。