我在我的應用程序中使用facebook android sdk v3.5進行消息共享。對於需要跟蹤消息是否成功發佈的統計信息。不過,我總是得到空FacebookDialog.getNativeDialogCompletionGesture
onActivityResult()
Android Facebook SDK共享對話框:永不返回完成手勢
我使用的代碼是非常標準的。
代碼調用Facebook共享對話框:我使用過程調用結果
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。 getNativeDialogCompletionGesture - 僅當用戶使用Facebook登錄到您的應用程序並確實完成時纔可用。值是「發佈」或「取消」。
但我不明白這句話究竟是什麼意思。
謝謝!這解釋了這個問題。然而,從臉譜來看,這很奇怪。 –
爲什麼Facebook?我們是否通過默認的Facebook應用程序使用單點登錄?爲什麼我們需要這個? – BQuadra
基本原因歸結爲,如果用戶沒有通過FB授權您的應用程序,那麼您的應用程序無法知道用戶在FB上做了什麼。 –