我在我的应用程序中使用facebook android sdk v3.5进行消息共享。对于统计信息,我需要跟踪邮件是否已成功发布。但是,在FacebookDialog.getNativeDialogCompletionGesture
onActivityResult()
后,我总是为空
我使用的代码非常标准。
调用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登录您的应用并且完成时才可用。值为“post”或“cancel”。
但我无法理解这句话究竟是什么意思。
答案 0 :(得分:3)
这意味着如果用户已经“认证”了您的应用,那么您只能获得completionGesture(即他们在您的应用中通过Facebook按钮点击某种形式的登录,并为您的应用提供至少基本权限)。< / p>
如果他们没有,那么你得到的只是getNativeDialogDidComplete,它总是返回true(无论用户点击“分享”还是“取消”),除非发生错误。