【问题标题】:Facebook share dialog callback not working in iOSFacebook 分享对话框回调在 iOS 中不起作用
【发布时间】:2015-09-27 15:19:04
【问题描述】:

我正在使用适用于 iOS 的 Facebook SDK 实现共享对话框。 一切正常,除了回调。 这是显示对话框的函数:

FBSDKShareLinkContent *content = [[FBSDKShareLinkContent alloc] init];
    content.contentURL = <my content url>;
    content.contentTitle = <my title>;
    content.contentDescription = my description;
    content.imageURL = <my image url>;
    [FBSDKShareDialog showFromViewController:self
                                 withContent:content
                                    delegate:self];

视图控制器实现了 FBSDKSharingDelegate 和三个必需的方法:

- (void)sharer:(id<FBSDKSharing>)sharer didCompleteWithResults:(NSDictionary *)results;

- (void)sharer:(id<FBSDKSharing>)sharer didFailWithError:(NSError *)error;

- (void)sharerDidCancel:(id<FBSDKSharing>)sharer;

基本上,我必须检测用户是否按下了取消按钮,因为只有当他们有效地分享内容时,我才会给他们奖励。 问题是即使我按下取消按钮,调用的唯一回调是:

- (void)sharer:(id<FBSDKSharing>)sharer didCompleteWithResults:(NSDictionary *)results;

而不是

- (void)sharerDidCancel:(id<FBSDKSharing>)sharer;

正如预期的那样。此外,在 iOS8 中,如果按下取消按钮,变量 results 为空,否则它包含 post_id,但在 iOS7 中不会发生这种情况,结果为 always 为空。

我做错了什么?我应该怎么做才能让 sharerDidCancel 回调正常工作?

感谢您的帮助!

【问题讨论】:

  • “因为我只有在他们有效分享内容的情况下才会给他们奖励” – 您不允许奖励分享的用户。请阅读Platform Policy - 4.5 说,“仅激励人们登录您的应用程序,在您的应用程序页面上输入促销信息,或在某个地方签到。不要激励其他行为。”
  • 太棒了!非常感谢你,我不知道。无论如何,现在问题仍然存在。知道如何解决吗?
  • @Prem,我也面临同样的问题。你有什么解决办法吗?
  • 不。它实际上只适用于 iPhone 6 或更高版本。我找不到让它在 iPhone 5s / 5 / 4s 等设备上运行的方法......
  • 如果使用FBSDKShareDialog显示模式为FBSDKShareDialogModeWeb,可以解决这个问题,希望对您有所帮助。

标签: ios facebook sdk share


【解决方案1】:

尝试将此输入到您的 appdelegate。我可以调用正确的委托,但结果字典仍然是空的,我无法获取 post_id。

#import <FBSDKCoreKit/FBSDKCoreKit.h>

- (void)applicationDidBecomeActive:(UIApplication *)application {
  [FBSDKAppEvents activateApp];
}

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  return [[FBSDKApplicationDelegate sharedInstance] application:application
                              didFinishLaunchingWithOptions:launchOptions];
}

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
  return [[FBSDKApplicationDelegate sharedInstance] application:application
                                                    openURL:url
                                          sourceApplication:sourceApplication
                                                 annotation:annotation];
}

【讨论】:

  • 谢谢洛伦佐,我要试试!
猜你喜欢
  • 1970-01-01
  • 2014-08-02
  • 2013-05-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多