Android用のAppInviteDialogを実装するために、Facebook 4.0に切り替えました。 このリファレンス に従いました。
ダイアログが表示され、友達を選択して招待することができます。onSuccess()
コールを受け取りますが、友達は招待を受け取りません。
以下のapplink URLを使用しました:https://fb.me/****412097*****
ダイアログにアプリの画像が表示されていても、previewImageURLはありません。
コード:
//Inside onCreate -
callbackManager = CallbackManager.Factory.create();
mInvititeDialog = new AppInviteDialog(this);
mInvititeDialog.registerCallback(callbackManager,
new FacebookCallback<AppInviteDialog.Result>() {
@Override
public void onSuccess(Result result) {
NetworkController.showCustomToast(
InviteFriendsActivity.this,
"Invitation Sent Successfully!");
finish();
}
@Override
public void onCancel() {
Log.d("Result", "Cancelled");
NetworkController.showCustomToast(
InviteFriendsActivity.this, "Cancelled");
finish();
}
@Override
public void onError(FacebookException exception) {
Log.d("Result", "Error " + exception.getMessage());
NetworkController.showCustomToast(
InviteFriendsActivity.this,
"Error while inviting friends");
finish();
}
});
if (AppInviteDialog.canShow()) {
AppInviteContent content = new AppInviteContent.Builder()
.setApplinkUrl(appLinkUrl).build();
AppInviteDialog.show(InviteFriendsActivity.this, content);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode, resultCode, data);
}
類似のリンクの下からの助けはありません(iosからのものであっても)
https://stackoverflow.com/questions/27547826/facebook-app-invites-issue
結局のところ、すべてが正常に機能していたことがわかりました。私の間違いは、アプリがインストールされておらず、アプリが承認されていないとプッシュ通知が生成されると想定していたことです。
新しいテストユーザーを作成した後、アプリが現在インストールされていないデバイスを使用し、アプリがユーザーに承認されたことがない。
そのため、ここで重要なことは、ユーザーがアプリを以前に承認していない場合でも、アプリがターゲットデバイスにインストールされている場合、プッシュ通知が生成されないことです。また、ユーザーがアプリを以前に承認している場合、ある時点でアプリが削除されたとしても、通知も生成されないようです。
これをテストする場合は、まったく新しいテストユーザーを作成し、テスト対象のプラットフォームでFacebookアプリにログインして、アプリがデバイスにインストールされていないことを確認します。
複数のユーザーが同じデバイスを使用している可能性があるため、アプリがインストールされていても通知を生成する必要があると思いますが、それは今のようです。
将来同様の問題が発生する場合に備えて、ここに残しておきます。
長く生きると繁栄!
それは実際に私にとってはうまくいきましたが、それがすべてのシナリオをカバーし、完璧なソリューションであるかどうかはよくわかりません。他のユーザーのためのここへの投稿と、もしあれば提案。
私は次のコードを使用していますが、うまく機能しています...しかし、友人を招待した後(Androidアプリケーションを共有している場合、招待者はモバイルアプリケーションをチェックする必要があります..)ブラウザから見えない
private CallbackManager sCallbackManager;
public void openDialogInvite(final Activity activity) {
String AppURl = "https://fb.me/421570...5709"; //Generated from //fb developers
String previewImageUrl = "http://someurl/13_dp.png";
sCallbackManager = CallbackManager.Factory.create();
if (AppInviteDialog.canShow()) {
AppInviteContent content = new AppInviteContent.Builder()
.setApplinkUrl(AppURl).setPreviewImageUrl(previewImageUrl)
.build();
AppInviteDialog appInviteDialog = new AppInviteDialog(activity);
appInviteDialog.registerCallback(sCallbackManager,
new FacebookCallback<AppInviteDialog.Result>() {
@Override
public void onSuccess(AppInviteDialog.Result result) {
Log.d("Invitation", "Invitation Sent Successfully");
finish();
}
@Override
public void onCancel() {
}
@Override
public void onError(FacebookException e) {
Log.d("Invitation", "Error Occured");
}
});
appInviteDialog.show(content);
}
}
これは同じ問題のある人を助けるかもしれませんこのコードを使用してください
private void InviteFbFriends()
{
String appLinkUrl, previewImageUrl;
appLinkUrl = "app url(create it from facebook)"; //your applink url
previewImageUrl = "image url";//your image url
if (AppInviteDialog.canShow()) {
AppInviteContent content = new AppInviteContent.Builder()
.setApplinkUrl(appLinkUrl)
.setPreviewImageUrl(previewImageUrl)
.build();
AppInviteDialog.show(this, content);
}
}
注意。 デバイスでのみ招待を表示できます