サイトのトップへ戻る

Twitter 開発者 ドキュメント日本語訳

Digits機能: 友達を探す

“友達発見(Find Your Friends)” 機能では、ユーザーはアドレス帳をアップロードして、アプリでDigits機能を使っている知り合いのユーザーを探すことができます。



はじめに

“友達発見(Find Your Friends)”機能はDGTContactsクラスを通じて使用できますアクセスできます。 Provide the initializer with a user session of the type DGTSession, which can be obtained from the Digits shared instance [Digits sharedInstance].session.

“友達発見(Find Your Friends)”を開始するには、プロセスでstartContactsUploadWith... メソッドを実行します。外観やタイトル、表示するビューコントローラーのようなプロパティを上書きすることもできます。

// Objective-C
DGTSession *userSession = [Digits sharedInstance].session;
DGTContacts *contacts = [[DGTContacts alloc] initWithUserSession:userSession];

[contacts startContactsUploadWithCompletion:^(DGTContactsUploadResult *result, NSError *error) {
   // resultsオブジェクトとerror オブジェクトを調べ、アップロードが成功したかどうかを判別します。
}];
// Swift
let userSession = Digits.sharedInstance().session;
let contacts = DGTContacts(userSession: userSession);

contacts.startContactsUpload() { result, error in
  // resultsオブジェクトとerror オブジェクトを調べ、アップロードが成功したかどうかを判別します。
}



アドレス帳へのアクセス

startContactsUploadWith...を初めて実行した時、ユーザーのアドレス帳をアップロードする許可を求めるダイアログが表示されます。



アクセス許可の制御フロー

ユーザーが“OK”をタップした場合はシステムによってアドレス帳へのアクセス許可がプロンプト表示され、ユーザーが許可するとバックグラウンドでアドレス帳がアップロードされ、modal UIは即座に終了します。

ユーザーが“Not now”をタップした場合、modal UI は終了してDigits 機能はコールバック関数のerror 引数にDGTErrorCodeUserCanceledFindContactsを渡します。

ユーザーが“OK”をタップしたがその後アプリがアドレス帳にアクセスするのを承認しなかった場合、modal UI は終了してDigits 機能はコールバック関数のerror 引数にDGTErrorCodeUserDeniedAddressBookAccessを渡します。

注意:

アドレス帳へのアクセスをユーザーが既に承認か拒否かした場合、以降はstartContactsUploadWith...を実行してもmodal UIは表示されません。 ユーザーが “Not now”をタップすると、 modal UIが再び表示されます。-[DGTContacts contactsAccessAuthorizationStatus] を実行して modal UI を表示するかどうか決めてください。

アドレス帳のアップロードが完了すると、設定していたコールバック関数がDGTContactsUploadResultオブジェクトや発生したエラーを渡されて実行されます。 DGTContactsUploadResultオブジェクトは、 いくつの連絡先がアップロードされたかを表すtotalContactsと実際にいくつのアップロードが成功したかを表すnumberOfUploadedContacts をプロパティとして持っています。 アップロードが失敗した場合、DGTContactsUploadResultオブジェクトはnilになるので注意してください。



合致するユーザーを探す

ユーザーがアドレス帳をアップロードすると、 Digits機能では lookupContactMatchesWithCursor:completion:を実行してアドレス帳に合致する他のDigitsユーザーを探せるようになります。 Matches will return the Digits userID’s of users of your app that the authenticated user knows and any other users of your app that may know your user.

任意に設定できる cursor 引数は、検索合致結果に対する前回リクエストからのオフセットとして使用できます。例えば、 if after the first request the nextCursor in the callback is not nil and 100 matches were found, pass the given nextCursor to a second call of this method to retrieve the second 100 matches (if any).

// Objective-C
DGTSession *userSession = [Digits sharedInstance].session;
DGTContacts *contacts = [[DGTContacts alloc] initWithUserSession:userSession];

[contacts lookupContactMatchesWithCursor:nil completion:^(NSArray *matches, NSString *nextCursor, NSError *error) {
  // 検索合致結果はDGTUser オブジェクトの配列になります
  // follow-up の実行時にnextCursor を使っていた場合、このメソッドでは検索合致結果をオフセットします。
}];
// Swift
let userSession = Digits.sharedInstance().session;
let contacts = DGTContacts(userSession: userSession);

contacts.lookupContactMatches(cursor:nil) { matches, nextCursor, error in
  // 検索合致結果はDGTUser オブジェクトの配列になります
  // follow-up の実行時にnextCursor を使っていた場合、このメソッドでは検索合致結果をオフセットします。
}


アップロードした連絡先を削除する

ユーザーがアップロードした連絡先は全て、deleteAllUploadedContactsWithCompletionを実行することでDigitsから削除できます。

注意:

ユーザーの連絡先を削除した後でも、まだlookupContactMatchesWithCursor:completionの検索合致結果に残っている場合があります。 これは 逆引き(reverse lookup) が原因です。- 他のDigits ユーザーのアドレス帳の中にこのユーザーの電話番号が入っていると、検索合致結果の中に残り続けます。

// Objective-C
DGTSession *userSession = [Digits sharedInstance].session;
DGTContacts *contacts = [[DGTContacts alloc] initWithUserSession:userSession];

[contacts deleteAllUploadedContactsWithCompletion:^(NSError *error) {
  // errorオブジェクトを調べて削除が成功したかどうか判別する
}];
// Swift
let userSession = Digits.sharedInstance().session;
let contacts = DGTContacts(userSession: userSession);

contacts.deleteAllUploadedContacts() { error in
  // errorオブジェクトを調べて削除が成功したかどうか判別する
}