Facebook Messenger Dialog回调不是'工作

时间:2014-06-12 09:07:56

标签: android facebook onactivityresult facebook-messenger

我已在我的应用中实施了新的Facebook Messenger对话框,以发送"邀请":

builder = new FacebookDialog.MessageDialogBuilder(getActivity())
        .setLink("http://demo.fivestarday.se/tidningsklippet/index.html")
        .setName("Inbjudan till Tidningsklippet")
        .setCaption("Inbjudan till Tidningsklippet")
        .setDescription("Du har blivit inbjuden till tidningsklippet med inbjudningskod:")      
        .setFragment(this);

...

FacebookDialog dialog = builder.build();
                    dialog.present();

这可以正常工作,并显示Facebook Messenger应用程序,并允许用户发送消息。

但是当我想要捕获回调时:

public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        uiHelper.onActivityResult(requestCode, resultCode, data, new FacebookDialog.Callback() {
            @Override
            public void onError(FacebookDialog.PendingCall pendingCall, Exception error, Bundle data) {
                Log.e("Activity", String.format("Error: %s", error.toString()));
            }

            @Override
            public void onComplete(FacebookDialog.PendingCall pendingCall, Bundle data) {
                Log.i("Activity", "Success!");
            }
        });

未调用onError或onComplete,我不知道用户是取消了请求还是发送了请求。但是,onActivityResult被称为。

Fragment早些时候已注册了UiLifeCycleHelper

uiHelper = new UiLifecycleHelper(getActivity(), null);
uiHelper.onCreate(savedInstanceState);

是否有人使用Messenger对话框完成Android的此任务?或者这是另一个Facebook的错误?

更新

在向Facebook报告此问题后,我得到了与以下atablash相同的答案。但是,除非用户已经对您的应用程序进行了初始化(登录),否则您无法在使用Messenger对话框时获得完成手势。在我的应用程序中,用户不会这样做,因为Messenger对话框不需要这样做。所以基本上如果你想使用Messenger对话并获得一个回调,你必须强迫用户先滞后。

1 个答案:

答案 0 :(得分:2)

演示对话框时需要致电uiHelper.trackPendingDialogCall( dialog.present() )

见这里: https://developers.facebook.com/docs/android/share/ (使用“共享”对话框共享链接,步骤2)