Facebook SDK を使用する iOS アプリがあります。3.2 から 3.5.1 にアップグレードした理由の 1 つは、摩擦のない友達リクエストを使用できるようにするためです。プロセスは次の場合に正常に機能します。
NSMutableDictionary* params = [NSMutableDictionary dictionaryWithObjectsAndKeys:nil];
[FBWebDialogs presentRequestsDialogModallyWithSession:[FBSession activeSession]
message:[NSString stringWithFormat:@"I just posted an action - give me some points!"]
title:@"Get Points from your friends"
parameters:params
handler:^(FBWebDialogResult result, NSURL *resultURL, NSError *error) {
if (error) {
// Case A: Error launching the dialog or sending request.
NSLog(@"Error sending request.");
} else {
if (result == FBWebDialogResultDialogNotCompleted) {
// Case B: User clicked the "x" icon
NSLog(@"User canceled request.");
} else {
NSLog(@"Request Sent.");
}
}}];
しかし、友達キャッシュを追加するとすぐに (Facebook Web サイトからコピー/貼り付け):
NSMutableDictionary* params = [NSMutableDictionary dictionaryWithObjectsAndKeys:nil];
FBFrictionlessRecipientCache *friendCache = [[FBFrictionlessRecipientCache alloc] init];
[friendCache prefetchAndCacheForSession:nil];
[FBWebDialogs presentRequestsDialogModallyWithSession:[FBSession activeSession]
message:[NSString stringWithFormat:@"I just posted an action - give me some points!"]
title:@"Get points from your friends"
parameters:params
handler:^(FBWebDialogResult result, NSURL *resultURL, NSError *error) {
if (error) {
// Case A: Error launching the dialog or sending request.
NSLog(@"Error sending request.");
} else {
if (result == FBWebDialogResultDialogNotCompleted) {
// Case B: User clicked the "x" icon
NSLog(@"User canceled request.");
} else {
NSLog(@"Request Sent.");
}
}}
friendCache:friendCache];
アプリはダイアログを読み込みますが、[FBWebDialogInternalDelegate completeWithResult:url:error:] at FBWebDialogs.m:93: でクラッシュします。[X] ボタンをタップしてダイアログをキャンセルするか、リクエストを送信しようとするとします。
依存関係を追加したり、新しい方法でセッションを開始したり、https://developers.facebook.com/docs/tutorial/iossdk/upgrading-from-3.2- ~3.5/ ?
ありがとう。