FBDialogs canPresentMessageDialogWithParams 返回 false
Posted
技术标签:
【中文标题】FBDialogs canPresentMessageDialogWithParams 返回 false【英文标题】:FBDialogs canPresentMessageDialogWithParams returns false 【发布时间】:2014-08-18 01:14:37 【问题描述】:我目前正在尝试将 Facebook SDK 添加到我的应用的 ios 版本。登录、注销、共享和请求功能目前都在工作,但我很难让 MessageDialog 功能工作。 Facebook 应用程序和 Facebook Messenger 应用程序目前已安装在我的设备上。但是,每次我调用 'FBDialog canPresentMessageDialogWithParams:params' 时它都会返回 false。
我的猜测是,当应用程序仍处于开发模式时,此功能不起作用,但这只是猜测。有谁知道 Message Dialog 是否适用于正在开发的应用程序?或者您对我做错了什么有任何想法?
我还包含了我的代码,以防我犯了任何严重的错误。非常感谢任何帮助!
// Check if the Facebook app is installed and we can present the share dialog
FBLinkShareParams *params = [[FBLinkShareParams alloc] init];
params.link = [NSURL URLWithString:@"https://www.facebook.com/"];
params.name = @"Flash Bear";
params.caption = nil;
params.picture = nil;
params.linkDescription = @"I'm playing Flash Bear. Why don't you come join me?";
// If the Facebook Messenger app is installed and we can present the share dialog
if ([FBDialogs canPresentMessageDialogWithParams:params])
// Present message dialog
[FBDialogs presentMessageDialogWithParams:params
clientState:nil
handler: ^(FBAppCall *call, NSDictionary *results, NSError *error)
if(error)
// An error occurred, we need to handle the error
// See: https://developers.facebook.com/docs/ios/errors
NSLog(@"Error messaging link: %@", error.description);
else
// Success
NSLog(@"result %@", results);
];
else
// Present the feed dialog
// Put together the dialog parameters
UIAlertView *message = [[UIAlertView alloc] initWithTitle:@"Sorry!"
message:@"There was an error connecting to FB Messenger. Please make sure that it is installed."
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[message show];
【问题讨论】:
只是一个更新,以防其他人遇到这个问题,这似乎不是开发问题。我最近启动了我的应用程序,但消息对话框仍然无法在 iOS 上运行。不过,我确实设法让它在 android 上运行。我决定从我的 iOS 版本中删除此功能,但如果有人对出了什么问题有任何想法,我很乐意听到。 【参考方案1】:我的申请也有同样的问题。
我通过检查活动会话状态解决了这个问题。如果活动会话的状态不是打开,那么我们需要再次打开会话。
为了做同样的事情,请使用以下代码。
if([FBSession activeSession].state != FBSessionStateOpen)
BOOL result = [FBSession openActiveSessionWithAllowLoginUI:NO];
if(result)
//Do your stuff here
祝你好运。
【讨论】:
以上是关于FBDialogs canPresentMessageDialogWithParams 返回 false的主要内容,如果未能解决你的问题,请参考以下文章
“FBDialogs canPresentShareDialogWithPhotos”总是返回 NO
我可以使用 [FBDialogs presentOSIntegratedShareDialogModallyFrom] 通过 SDK 3.5 将图像发布到 facebook 吗?