2013-07-30 57 views
1

我試圖在iOS應用中實現Facebook共享對話框。我想無論是分享對話框iOS上的Facebook Share對話框/ Feed對話框 - 如何知道是否點擊共享按鈕或取消按鈕

https://developers.facebook.com/ios/share-dialog/ 

和飼料對話框

https://developers.facebook.com/docs/howtos/feed-dialog-using-ios-sdk/ 

在這兩個我能夠真正分享我的內容的情況下,但我的問題是我無法追蹤用戶是否真正「共享」或「取消」刪除。

上面的鏈接顯示處理程序(即使有評論),如果用戶實際共享內容,則會被觸發。但是當代碼實際運行時,它總是返回正值,換句話說,我無法區分取消按鈕是否被點擊或分享按鈕。

如果我錯過了任何東西,或者其他人面臨同樣的問題,請指出我的看法。

感謝,

+0

在您的第二個鏈接中有一個如何知道用戶是否取消共享的示例。 – giorashc

+0

@giorashc是的,但是當代碼片段在設備上運行時,即使用戶實際共享內容,流程也不會到達成功塊,這就是很大的謎團。它總是進入'用戶取消'模塊。即使在該鏈接中的git倉庫中提供的示例代碼庫的行爲方式也完全相同。 –

回答

0

更新,以防萬一這可以幫助任何人,下面的鏈接終於爲我工作:

https://developers.facebook.com/docs/howtos/ios-6/#nativepostcontroller 

雖然它有它的限制(沒有在iOS < 6運行),但當用戶取消對話時,它會成功返回我。以下是我使用的代碼:

BOOL displayedNativeDialog = [FBDialogs presentOSIntegratedShareDialogModallyFrom:self 
        initialText:[NSString stringWithFormat:@"%@", url] 
        image:nil 
        url:url 
        handler:^(FBOSIntegratedShareDialogResult result, NSError *error) {             
        if(result == 0) 
        { 
         //Fire our callback 

        } 
        else{ 
         NSLog(@"USER CANCELLED"); 
        } 
      }]; 
0

以下是如何在控制檯上獲得顯式結果的方法。

FBDialogs.PresentShareDialog(myAction,"altimeterthree:share","flight",(call, results, error) => { 
    if(call != null)show("Call = " + call.ToString()); 
    if(results != null)Console.WriteLine("Results = "+results.ToString()); 
    if(error != null)Console.WriteLine("Error = "+FBErrorUtility.UserMessage(error)); 
}); 

下面是控制檯輸出的樣子。注意結果也出現在通話信息中。

2014-05-11 10:09:26.067 AltimeterThree[18988:60b] Call = <FBAppCall: 0x19e02350, ID: 4589F102-3D11-40D5-BC95-1A1852B341AC 
dialogData: <FBDialogsData: 0x19e04e20, method: ogshare 
arguments: { 
    action =  { 
     flight =   { 
      data =    { 
      }; 
      description = "my description"; 
      "fbsdk:create_object" = 1; 
      id = 1413672752238899; 
      image =    (
           { 
        url = "<UIImage: 0x147f9180>"; 
        "user_generated" = true; 
       } 
      ); 
      title = "Flight 23"; 
      type = "altimeterthree:flight"; 
      url = "http://http://samples.ogp.me/1413756595563848"; 
     }; 
    }; 
    actionType = "altimeterthree:share"; 
    previewPropertyName = flight; 
} 
results: { 
    completionGesture = cancel; 
    didComplete = 1; 
}> 
> 
2014-05-11 10:09:26.070 AltimeterThree[18988:60b] Results = { 
    completionGesture = cancel; 
    didComplete = 1; 
} 
相關問題