iOS / iPhone 端末内に保存してある Twitter アカウントの情報を取得するサンプルコード。 ACAccount を利用する。


// completion コールバック関数の引数で ACAccount の配列と NSError を取得する
func getTwitterAccounts(completion:(accounts:[ACAccount]?, error: NSError?) -> Void) {
  
  // iOS 端末で使用可能な Twitter アカウントの一覧を取得する
  let accountStore = ACAccountStore()
  let accountType = accountStore.accountTypeWithAccountTypeIdentifier(ACAccountTypeIdentifierTwitter)
  
  accountStore.requestAccessToAccountsWithType(accountType, options: nil) { (granted:Bool, error:NSError?) -> Void in
    
    if let err = error {
      completion(accounts: nil, error: err)
      return;
    }
    
    if !granted {
      let info = [NSLocalizedDescriptionKey: "Cannot access to account data"]
      let nserr = NSError.init(domain: "", code: -1, userInfo: info)
      completion(accounts: nil, error: nserr)
      return;
    }

    let accounts = (accountStore.accountsWithAccountType(accountType) as? [ACAccount])!

    // Twitter アカウントの情報を出力
    for account in accounts {

      // screen_name は ACAccount.username で取得
      print("screen_name: \(account.username)")

      // user_id と ACPropertyFullName は properties から取得
      if let properties = account.valueForKey("properties") as? [String:String] {

        print("user_id: \(properties["user_id"])")
        print("ACPropertyFullName: \(properties["ACPropertyFullName"])")

        // properties の中身を出力してみたら、
        // user_id と ACPropertyFullName しか無かった。
        print("properties: \(properties)")
      }

    }

    completion(accounts: accounts, error: nil)
  }
}

# 取得できる Twitter アカウントの情報 (user_id とか) が Apple の公式リファレンスでは見つからなかったけど、どこかにあるんだろうか。。。

tags: swift ios iphone

Posted by NI-Lab. (@nilab)