AppInviteDialog 在 Android Facebook SDK 4.0 中不工作
AppInviteDialog not working in Android Facebook SDK 4.0
经过长时间的研究并尝试自行解决此问题,我没有找到任何可接受的工作结果。
正在关注 this documentation 我正在尝试邀请朋友使用我的应用程序。所有元素(例如共享按钮)都可以正常工作。
唯一的问题是 "Invite to app" 对话框。选择好友后,对话框显示红色警告图标,"send" 按钮变为 "retry" 按钮。
我已尝试通过多种方式解决此问题 - 在 FB dev page (like changing app category: game, travel .etc), adding new permission for sharing (but I haven't found, that inviting is required it), using GamesRequests 中配置我的应用程序(但我的应用程序不是游戏,它是 android + canvas 应用程序)。所以我又回到了 AppInviteDialog。
此外,我尝试使用它自己的实例和监听器,而不是静态的 class。
inviteDialog = new AppInviteDialog(this);
inviteDialog.registerCallback(callbackManager, new FacebookCallback<Result>() {
@Override
public void onSuccess(Result result) {
Log.i(TAG, "MainACtivity, InviteCallback - SUCCESS!");
}
@Override
public void onCancel() {
Log.i(TAG, "MainACtivity, InviteCallback - CANCEL!");
}
@Override
public void onError(FacebookException error) {
Log.e(TAG, "MainACtivity, InviteCallback - ERROR! " + error.getMessage());
}
});
然后调用它,就像在 tutorial 中一样:
if(AppInviteDialog.canShow()) {
AppInviteContent content = new AppInviteContent.Builder()
.setApplinkUrl(appUrl)
.setPreviewImageUrl(imagePreviewUrl)
.build();
//AppInviteDialog.show(this, content); //static
inviteDialog.show(content); //my instance
}
但我得到的是:
编辑:
使用 AppLinks 为我的应用程序创建 link 并在 AppInviteDialog 中使用它后,现在一切正常。
有点迷惑,在documentation中没有明确说明,需要用什么样的link:"AppLinks link"还是"app link (link to your fb app)".
是否有错误信息?
如果我不使用 AppLink,我会得到这个。
https://developers.facebook.com/quickstarts/1374389166202673/?platform=app-links-host
我遇到了同样的问题,我的原因是没有在 facebook CallbackManager 上调用 onActivityResult
。我就是这样修复它的:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
facebookCallbackManager = CallbackManager.Factory.create();
// ...
}
然后这里是我遇到错误的地方:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// This is the line I was lacking
facebookCallbackManager.onActivityResult(requestCode, resultCode, data);
}
添加 onActivityResult 后,我的回调被触发:
AppInviteDialog appInviteDialog = new AppInviteDialog(activity);
FacebookCallback callback = new FacebookCallback<AppInviteDialog.Result>() {
@Override
public void onSuccess(AppInviteDialog.Result result) {
}
@Override
public void onCancel() {
}
@Override
public void onError(FacebookException error) {
}
};
appInviteDialog.registerCallback(facebookCallbackManager, callback);
appInviteDialog.show(content);
经过长时间的研究并尝试自行解决此问题,我没有找到任何可接受的工作结果。
正在关注 this documentation 我正在尝试邀请朋友使用我的应用程序。所有元素(例如共享按钮)都可以正常工作。
唯一的问题是 "Invite to app" 对话框。选择好友后,对话框显示红色警告图标,"send" 按钮变为 "retry" 按钮。
我已尝试通过多种方式解决此问题 - 在 FB dev page (like changing app category: game, travel .etc), adding new permission for sharing (but I haven't found, that inviting is required it), using GamesRequests 中配置我的应用程序(但我的应用程序不是游戏,它是 android + canvas 应用程序)。所以我又回到了 AppInviteDialog。
此外,我尝试使用它自己的实例和监听器,而不是静态的 class。
inviteDialog = new AppInviteDialog(this);
inviteDialog.registerCallback(callbackManager, new FacebookCallback<Result>() {
@Override
public void onSuccess(Result result) {
Log.i(TAG, "MainACtivity, InviteCallback - SUCCESS!");
}
@Override
public void onCancel() {
Log.i(TAG, "MainACtivity, InviteCallback - CANCEL!");
}
@Override
public void onError(FacebookException error) {
Log.e(TAG, "MainACtivity, InviteCallback - ERROR! " + error.getMessage());
}
});
然后调用它,就像在 tutorial 中一样:
if(AppInviteDialog.canShow()) {
AppInviteContent content = new AppInviteContent.Builder()
.setApplinkUrl(appUrl)
.setPreviewImageUrl(imagePreviewUrl)
.build();
//AppInviteDialog.show(this, content); //static
inviteDialog.show(content); //my instance
}
但我得到的是:
编辑:
使用 AppLinks 为我的应用程序创建 link 并在 AppInviteDialog 中使用它后,现在一切正常。 有点迷惑,在documentation中没有明确说明,需要用什么样的link:"AppLinks link"还是"app link (link to your fb app)".
是否有错误信息?
如果我不使用 AppLink,我会得到这个。
https://developers.facebook.com/quickstarts/1374389166202673/?platform=app-links-host
我遇到了同样的问题,我的原因是没有在 facebook CallbackManager 上调用 onActivityResult
。我就是这样修复它的:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
facebookCallbackManager = CallbackManager.Factory.create();
// ...
}
然后这里是我遇到错误的地方:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// This is the line I was lacking
facebookCallbackManager.onActivityResult(requestCode, resultCode, data);
}
添加 onActivityResult 后,我的回调被触发:
AppInviteDialog appInviteDialog = new AppInviteDialog(activity);
FacebookCallback callback = new FacebookCallback<AppInviteDialog.Result>() {
@Override
public void onSuccess(AppInviteDialog.Result result) {
}
@Override
public void onCancel() {
}
@Override
public void onError(FacebookException error) {
}
};
appInviteDialog.registerCallback(facebookCallbackManager, callback);
appInviteDialog.show(content);