0

我正在更新一个现有的 IOS 应用程序,该应用程序使用 ShareKit 来分享到 Facebook 和 Twitter。我已经集成了 ShareKit 2.0 并按照所有说明进行操作。我在 IOS 6 下分享到 Facebook 和 Twitter 没有问题。

然而,在 IOS 5 上,Twitter 可以正常工作,但 Facebook 不能。这是我看到的行为:

  1. 我有一个按钮可以将文本发布到 Facebook。当我点击它时,它会将我带到一个 Safari 窗口以登录 Facebook。
  2. 我登录,它把我带到另一个 safari 页面,说我已经授权了该应用程序。
  3. 我点击右上角的“确定”按钮,它会带我回到我的应用程序并在窗口中覆盖一个类型。
  4. 我输入一些内容并点击“发送到 Facebook”按钮。
  5. 现在它带我回到与#2 相同的 Safari 窗口。如果我点击确定,我会再次回到我的应用程序,并显示“保存到 Facebook”的活动指示器。该指标永远旋转。我也遇到了崩溃:

2013-03-25 15:04:57.570 APPNAME[72699:c07]-[__NSCFDictionary setObject:forKeyedSubscript:]:无法识别的选择器发送到实例 0xb468f30

2013-03-25 15:04:57.596 APPNAME[72699:c07] *由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[__NSCFDictionary setObject:forKeyedSubscript:]:无法识别的选择器发送到实例 0xb468f30”

*首先抛出调用栈:

(0x6e6022 0x1fbbcd6 0x6e7cbd 0x64ced0 0x64ccb2 0x1e7818 0x1e7396 0x1e2587 0x1c6c00 0x1c6413 0x1dd0aa 0x1db4ad 0x1d7729 0x1e0263 0x1e0999 0x17c6a49 0x17c4e84 0x17c5ea7 0x17c4e3f 0x17c4fc5 0x1709f5a 0x94aa39 0xa17596 0x941120 0xa17117 0x940fbf 0x6ba94f 0x61db43 0x61d424 0x61cd84 0x61cc9b 0x24a87d8 0x24a888a 0xdc3626 0x23b9 0x22f5) terminate called throwing an exception(lldb)

我试过打开调试但没有得到帮助。

非常感激任何的帮助!

干杯,

  • 乔恩
4

2 回答 2

1

您需要在 AppDelegate 中实现以下内容

-(BOOL) application:(UIApplication *)application 
            openURL:(NSURL *)url
  sourceApplication:(NSString *)sourceApplication
         annotation:(id)annotation
{
    NSString* scheme = [url scheme];

    if ([scheme hasPrefix:[NSString stringWithFormat:@"fb%@", SHKCONFIG(facebookAppId)]]) {
        return [SHKFacebook handleOpenURL:url];
    }

    return YES;
}

在这种情况下,当 Safari 带回您的应用程序时,ShareKit 将显示对话框以输入共享消息,您将能够发送它。

于 2013-04-23T12:15:30.480 回答
1

我过去遇到过与此类似的问题,并认为这与直到 iOS 6 才添加选择器有关,可能会看到这个堆栈交换线程:

iOS5 中我的 UITableView 中的 dequeueReusableCellWithIdentifier 错误

于 2013-03-25T22:33:05.700 回答