ユーザーがFacebookの友達とメッセージを共有できるアプリケーションを開発しています。私はAndroid用のFacebookAPIを使用しています。
ユーザーを認証でき、Facebookユーザーとして友達リストを取得したり、ウォールにメッセージを投稿したりできますが、友達にプライベートメッセージを送信したいので、解決策がありませんでした。どんな体も私を助けることができます、どうすればこれを達成できますか?
グラフAPIを使用して、ユーザーに代わってプライベートメッセージを送信することはできません。
ただし、Androidで試したことはありませんが、送信ダイアログを使用できるはずですが、次のようになります。
Bundle params = new Bundle();
params.putString("to", "USER_ID");
params.putString("name", "TITLE HERE");
params.putString("link", "A URL"); // this link param is required
facebook.dialog(context, "send", params, new DialogListener() {
@Override
public void onComplete(Bundle values) {
....
}
@Override
public void onFacebookError(FacebookError error) {}
@Override
public void onError(DialogError e) {}
@Override
public void onCancel() {}
});
使用できるもう1つのアプローチは、ユーザーに代わってメッセージを送信できるチャットAPIxmpp_login
です。これには、アクセス許可が必要であり、xmppクライアントを実装する必要があります。
このダイアログはAndroidではまだサポートされていないため、次の3つのオプションがあります。
xmpp_login
xmppクライアント(つまり、asmack )を要求して追加すると、独自の「メッセージの送信」ダイアログを実装できます。最新のAndroidSDK機能が(プライベート)メッセージダイアログ
https://developers.facebook.com/docs/android/message-dialog/になりました
MessengerUtilsを使用して、添付ファイル付きのメッセージを送信できます。
次のMIMEタイプで添付ファイルを送信できます。
画像を送信するためのサンプルコードは次のとおりです
String mimeType = "image/jpeg";
// contentUri points to the content being shared to Messenger
ShareToMessengerParams shareToMessengerParams =
ShareToMessengerParams.newBuilder(contentUri, mimeType)
.build();
// Sharing from an Activity
MessengerUtils.shareToMessenger(
this,
REQUEST_CODE_SHARE_TO_MESSENGER,
shareToMessengerParams);
その他のドキュメントはhttps://developers.facebook.com/docs/messenger/androidにあります
以下のコードを使用してFacebookのプライベートメッセージを送信することが可能です。
if (isPackageExisted("com.facebook.orca")) {
Uri uri = Uri.parse("fb-messenger://user/");
uri = ContentUris.withAppendedId(uri, Long.parseLong("Enter user id here"));
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
} else {
Toast.makeText(this, "Please install facebook messenger", Toast.LENGTH_LONG).show();
}
}
Facebookメッセンジャーがインストールされているかどうかを確認してください
public boolean isPackageExisted(String targetPackage) {
PackageManager pm = getPackageManager();
try {
PackageInfo info = pm.getPackageInfo(targetPackage, PackageManager.GET_META_DATA);
} catch (PackageManager.NameNotFoundException e) {
return false;
}
return true;
}