【问题标题】:ShareKit - share on FacebookShareKit - 在 Facebook 上分享
【发布时间】:2014-08-07 05:05:39
【问题描述】:

我正在使用 ShareKit 在 Facebook 上分享一个简单的文本。我使用 cocoapods 在我的应用程序(使用 iOS7 和 XCode5)上安装 ShareKit,并按照配置教程 ConfigurationShareKit。 更具体地说,我做了以下事情:

1) 将 URL Scheme 写入 plist。

2) 创建一个 DefaultSHKConfigurator 子类:

@interface MySHKConfigurator : DefaultSHKConfigurator @结尾 @implementation MySHKConfigurator - (NSString*)facebookAppId { 返回@“xxx”; } -(NSString *)appName { 返回@“我的应用程序名称”; } - (NSArray*)facebookWritePermissions { 返回 [NSArray arrayWithObjects:@"publish_actions",@"publish_stream", nil]; //@"offline_access", } - (NSArray*)facebookReadPermissions { 返回零; // 这是 SDK 的默认值,将提供基本的读取权限 } @结尾

3) 在 AppDelegate 中进行初始配置:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // 应用程序启动后自定义的覆盖点。 DefaultSHKConfigurator *configurator = [[MySHKConfigurator alloc] init]; [SHKConfiguration sharedInstanceWithConfigurator:configurator]; //[SHK flushOfflineQueue]; 返回是; } - (void)applicationDidBecomeActive:(UIApplication *)application { // 重新启动任何在应用程序处于非活动状态时暂停(或尚未启动)的任务。如果应用程序之前在后台,可选择刷新用户界面。 [SHKFacebook handleDidBecomeActive]; } - (void)applicationWillTerminate:(UIApplication *)application { // 当应用程序即将终止时调用。如果合适,保存数据。另请参阅 applicationDidEnterBackground:。 // 如果合适,保存数据 [SHKFacebook 处理WillTerminate]; } - (BOOL)应用程序:(UIApplication *)应用程序 openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication 注释:(id)注释 { NSString* 方案 = [url 方案]; if ([scheme hasPrefix:[NSString stringWithFormat:@"fb%@", SHKCONFIG(facebookAppId)]]) { return [SHKFacebook handleOpenURL:url]; } 返回是; }

4) 在 Facebook 上分享

- (IBAction)shareFacebook:(id)sender { //- url 应该是指向您在应用商店中的应用的链接 NSURL *url = [NSURL URLWithString:@"http://www.google.com"]; //- 在脸书上分享 SHKItem *item = [SHKItem URL:url 标题:self.textView.text contentType:SHKURLContentTypeWebpage]; [SHKFacebook shareItem:item]; }

现在,我在真实设备上得到的结果是一个带有问题的 facebook 确认对话框:“您已经授权了 MyApp”。按 OK 按钮后,它会返回共享对话框。在我推送“发送到 Facebook”之后,它再次返回到 Facebook 确认对话框,上面有上述问题。这个循环永远循环。

你知道我错过了什么吗?谢谢

【问题讨论】:

  • 您没有使用帐户框架的任何特殊原因?
  • 账户框架是什么意思?你能告诉我更多细节吗?我只知道 ShareKit 是在多个社交网络上共享的最佳库。没有?
  • 我确实花了一些时间在 ShareKit 上,所以我不想切换到另一个。因为我不知道使用 Accounts Framework,所以我没有收到同样的错误。
  • 你可能也想看看 UIActivityViewController,个人不喜欢分享工具包。
  • 似乎无论出于何种原因,ShareKit 都在使用 SHKFacebook,而不是现代的 SHKiOSFacebook(应该使用 Accounts.framework)。 SHKFacebook 在历史上并不完美,我现在正在重写它,我也遇到了循环错误。应该很快修复。但是,您最好使用 SHKiOSFacebook 共享器。你有自定义的 Sharers.plist 吗?这可能是 ShareKit 无法回到旧的 SHKFacebook 共享器的原因。

标签: ios objective-c facebook facebook-graph-api sharekit


【解决方案1】:

哦,我现在明白了 - 如果您更喜欢直接致电共享者,而不是致电

[SHKiOSFacebook shareItem:item];

SHKFacebook和SHKiOSFacebook的区别在于前者使用Facebook iOS SDK,而后者使用Accounts.framework和Social.framework。

【讨论】:

  • 我已经使用 SHKiOSFacebook 解决了这个问题。但是,使用 SHKiOSFacebook,我们无法捕捉到 SHKSharerDelegate 协议的事件,如开始发送、发送结束等。
  • 另一件事是我使用 SHKGooglePlus 分享文本 [SHKGooglePlus shareItem:item]。通过将文本存储在 SHKItem 中,文本不会包含在 GooglePlus 对话框的文本视图中。我该如何解决?
  • 你能解释一下SHKSharerDelegate协议吗?您是否提供了自己的代表?也许通知会更好?你需要委托做什么?
  • 我认为 SHKSharerDelegate 协议可以让我们知道共享何时成功完成或失败并出现特定错误。没有???
  • 是的,但是如果您不通过配置提供自己的委托,则默认的委托仅显示活动指示器。 ShareKit 的通知更适合这个目的。它们在 SHK.h 中定义。但是,我很好奇 SHKSharerDelegate 是如何不起作用的?您能否详细描述一下,您在哪里提供了委托?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多