为什么目标朋友没有收到我的 Facebook AppInviteDialog 请求?

Why is my Facebook AppInviteDialog request not being received by target friend?

简而言之:客户端似乎一切正常,但 Facebook 目标朋友没有收到任何消息。

这些是带有代码和屏幕截图的详细步骤:

AppInviteContent content = new AppInviteConent.Builder()
    .setApplinkUrl("App link url created via the Facebook AppLink creator tool")
    .setPreviewImageUrl("http://www.redacted.com/previewImage.png")
    .build();

appInviteDialog.show(this, content);

这会导致显示一个对话框,其中包含应用安装 link 的预览,以及在顶部输入消息的选项:

然后我点击下一步,select一个或多个朋友点击右上角的发送按钮:

结果看似成功发送:

我还附上了回调以确保发送成功:

appInviteDialog.registerCallback(facebookCallbackManager, new FacebookCallback<AppInviteDialog.Result>() {
    @Override
    public void onSuccess(AppInviteDialog.Result result) {
    Log.d(TAG,"onSuccess result = "+ result.getData().toString()); 
    }

    @Override
    public void onCancel() {}

    @Override
    public void onError(FacebookException e) {
        Log.d(TAG,"onError message = "+ e.getMessage());
    }
});

这会打印出 "onSuccess result = Bundle[{didComplete=1}]"

预期结果:好友收到通知。 实际结果:朋友什么也没收到。

更多可能有用的信息:

这很令人沮丧,因为一切似乎都正常,而且没有办法(据我所知)调试这个问题。

我希望有人能帮助我或指出正确的方向。

谢谢!

好的,事实证明一切正常。我的错误是假设没有安装应用程序,并且没有授权应用程序应该生成推送通知。

创建新的测试用户后,使用当前未安装该应用程序且该应用程序从未获得用户授权的设备。

所以这里的关键是如果目标设备上安装了应用程序,则不会生成推送通知,即使用户没有授权以前的应用。另外,貌似,如果用户之前授权过该应用程序,即使它在某个时候被删除,它也不会生成通知。

因此,如果您想对此进行测试,请创建一个全新的测试用户并在您正在测试的平台上登录 Facebook 应用程序,并确保该应用程序未安装在设备上.

我认为尽管安装了应用程序,它仍应生成通知,因为多个用户可能正在使用同一台设备,但这就是现在的情况。

我会把它留在这里,以防将来有人遇到类似的问题。

长命百岁!