Social.frameworkを使うときに使うACAccountStoreの挙動がわかりにくいので備忘録として残したいと思います。
注:Twitterのみで検証
##デバイスにアカウントが登録されているか否か
//SLComposeViewControllerクラス
+ (BOOL)isAvailableForServiceType:(NSString *)serviceType;
登録されてるとYES
登録されていないとNOが返ります。
アカウントへのアクセスをユーザーが許可していなくても、デバイスにアカウントが登録されてるとYESが返ります。
##デバイスに登録されているアカウントの取得
//ACAccountStoreクラス
- (NSArray *)accountsWithAccountType:(ACAccountType *)accountType;
デバイスにアカウントが登録されていても、アクセスを許可されていない場合はゼロObjectになります。
もちろん、デバイスにアカウントが登録されていない場合も内容はカラになります。
##認証確認
AccountStoreにアクセスしようとすれば自動的に認証確認画面になるが呼ばれない時は
- (void)requestAccessToAccountsWithType:(ACAccountType *)accountType
options:(NSDictionary *)options
completion:(ACAccountStoreRequestAccessCompletionHandler)completion;
等を呼べば確認画面になる。
しかし一度でも認証を拒否すれば、確認画面は出てこなくなる。
その場合は「設定-プライバシー-Twitter」から、ユーザー自身が設定を変更する必要がある。
認証確認画面が出てくる条件とかイマイチ把握できていませんので、もしよければツッコミお願いします。