2013-09-25 8 views
6

私はメッセージブックの共有のために私のアプリでfacebook android sdk v3.5を使用しています。統計については、メッセージが正常に投稿されたかどうかを追跡する必要があります。しかし、私はいつもヌルになるFacebookDialog.getNativeDialogCompletionGestureonActivityResult()AndroidのFacebook SDKの共有ダイアログ:完了のジェスチャーを返すことはありません

私が使用しているコードは非常に標準的です。私は、プロセスの呼び出し結果に使用

private void sendToFacebook() 
    { 
     if (!FacebookDialog.canPresentShareDialog(getActivity().getApplicationContext(),  FacebookDialog.ShareDialogFeature.SHARE_DIALOG)) 
     { 
     return; 
     } 

     FacebookDialog shareDialog = new FacebookDialog.ShareDialogBuilder(getActivity()) 
       .setName(getString(R.string.refer_friend_facebook_name)) 
       .setDescription(getString(R.string.refer_friend_facebook_description)) 
       .setCaption(getString(R.string.facebook_app_name)) 
       .setLink(getString(R.string.web_endpoint)) 
       .setPicture(getString(R.string.facebook_picture_90)) 
       .build(); 

     activity.getFacebookUiHelper().trackPendingDialogCall(shareDialog.present()); 

    } 

コード:

@Override 
    public void onActivityResult(int requestCode, int resultCode, Intent data) 
    { 
      facebookUiHelper.onActivityResult(requestCode, resultCode, data, new FacebookDialog.Callback() 
      { 
       @Override 
       public void onError(FacebookDialog.PendingCall pendingCall, Exception error, Bundle data) 
       { 
       // track on error             
       } 

       @Override 
       public void onComplete(FacebookDialog.PendingCall pendingCall, Bundle data) 
       { 
        if (FacebookDialog.getNativeDialogDidComplete(data)) 
        { 
         if (FacebookDialog.getNativeDialogCompletionGesture(data) == null 
           || FacebookDialog.COMPLETION_GESTURE_CANCEL.equals(FacebookDialog.getNativeDialogCompletionGesture(data))) 
         { 
          // track cancel             
         } 
         else 
         { 
          // track post 
         } 
        } 
        else 
        { 
         // track cancel    
        } 
       } 
      }); 
} 

FacebookのSDKドキュメントのそれが記載されている:

FacebookDialog

コードは、Facebookの共有]ダイアログを呼び出します。 getNativeDialogCompletionGesture - Facebookを使用してアプリケーションにログインし、完了したユーザーが本当である場合にのみ使用できます。値は「投稿」または「キャンセル」です。

しかし、私はこのフレーズが何を意味するのかを正確に理解できません。

答えて

3

これは、ユーザーがあなたのアプリを「認証」している(つまり、あなたのアプリでFacebookのボタンを使用して何らかのログインをクリックし、アプリに少なくとも基本的なアクセス許可を与えた)場合にのみ、完了のジェスチャーを受け取ることを意味します。

エラーが発生していない場合は、getNativeDialogDidCompleteが返され、エラーが発生しない限り、常にtrue(ユーザーが「共有」または「キャンセル」をクリックしたかどうか)が返されます。

+1

ありがとうございました!これは問題を説明します。しかし、それはかなり面白いです。 –

+0

なぜFacebookですか?デフォルトのFacebookアプリでシングルサインオンを使用していますか?なぜこれが必要なの? – BQuadra

+1

基本的な推論は、ユーザがFBを介してあなたのアプリを承認していない場合、あなたのアプリはFB上で何をしているのかを知ることができません。 –

関連する問題