简体   繁体   English

Android Facebook SDK Share对话框:永远不会返回完成手势

[英]Android Facebook SDK Share dialog: never return Completion Gesture

I am using facebook android sdk v3.5 in my app for messsage sharing. 我在我的应用程序中使用facebook android sdk v3.5进行消息共享。 For statistics I need to track if the message was successfully posted or not. 对于统计信息,我需要跟踪邮件是否已成功发布。 However I always get null by getting FacebookDialog.getNativeDialogCompletionGesture in onActivityResult() 但是我总是通过在onActivityResult()获取FacebookDialog.getNativeDialogCompletionGesture来获得null

The code I use is very standard. 我使用的代码非常标准。

Code to call facebook share dialog: 调用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());

    }

Code I use to process call result: 我用来处理调用结果的代码:

    @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 documentation it is stated that: 在facebook sdk文档中声明:

FacebookDialog.getNativeDialogCompletionGesture - Only available if the user logged into your app using Facebook and did complete is true. FacebookDialog.getNativeDialogCompletionGesture - 仅当用户使用Facebook登录您的应用程序并且完成时才可用。 Value is either "post" or "cancel". 值为“post”或“cancel”。

But I can not understand what exactly do they mean by this phrase. 但我无法理解这句话究竟是什么意思。

It means that you only get the completionGesture if the user has "auth"ed your app (ie they've clicked on some form of login via Facebook button in your app, and gave your app at least basic permissions). 这意味着如果用户已经“认证”了您的应用程序(即他们在您的应用中点击了某种形式的登录通过Facebook按钮,并且至少为您的应用提供了基本权限),那么您只能获得completionGesture。

If they have not, then all you get is getNativeDialogDidComplete, which always returns true (whether the user clicked "Share" or "Cancel") unless an error occurred. 如果他们没有,那么你得到的只是getNativeDialogDidComplete,它总是返回true(无论用户点击“分享”还是“取消”),除非发生错误。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM