2013-09-25 5 views
6

Ich benutze facebook android sdk v3.5 in meiner app für messsage teilen. Für Statistiken muss ich verfolgen, ob die Nachricht erfolgreich gebucht wurde oder nicht. Allerdings bekomme ich immer Null, indem ich FacebookDialog.getNativeDialogCompletionGesture in onActivityResult()Android Facebook SDK Freigeben Dialog: nie zurück Completion Geste

bekomme. Der Code, den ich benutze, ist sehr Standard.

-Code Facebook teilen Dialog aufzurufen:

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()); 

    } 

Code I zu Prozessaufruf Ergebnis verwenden:

@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    
        } 
       } 
      }); 
} 

In Facebook sdk Dokumentation, dass heißt:

FacebookDialog. getNativeDialogCompletionGesture - Nur verfügbar, wenn der Nutzer sich über Facebook bei Ihrer App angemeldet hat und den Vorgang abgeschlossen hat. Wert ist entweder "Post" oder "Abbrechen".

Aber ich kann nicht verstehen, was genau sie mit dieser Phrase meinen.

Antwort

3

Es bedeutet, dass Sie die completionGesture nur erhalten, wenn der Benutzer Ihre App "autorisiert" hat (d. H. Sie hat eine Form der Anmeldung über die Facebook-Schaltfläche in Ihrer App angeklickt und Ihrer App mindestens grundlegende Berechtigungen erteilt).

Wenn dies nicht der Fall ist, erhalten Sie getNativeDialogDidComplete, das immer true zurückgibt (ob der Benutzer auf "Share" oder "Cancel" geklickt hat), es sei denn, es ist ein Fehler aufgetreten.

+1

Vielen Dank! Dies erklärt das Problem. Aber es ist ziemlich komisch von Facebook Seite. –

+0

Warum Facebook ??? Verwenden wir Single Sign On über die Standard-Facebook-App? Warum brauchen wir das? – BQuadra

+1

Die Grundüberlegung liegt darin, dass, wenn der Benutzer Ihre App nicht per FB autorisiert hat, Ihre App nicht wissen kann, was der Benutzer auf dem FB macht. –

Verwandte Themen