「招待」を送信するために、アプリに新しい 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 ダイアログを使用してコールバックを取得したい場合は、ユーザーに最初に遅れをとらせる必要があります。