有人可以在iOS中解释以下两种方法,以及它们如何用于实现Facebook共享?

时间:2011-11-22 20:03:07

标签: objective-c ios sharekit

我继承了一个使用sharekit库的项目。然后我被老开发者告知我需要使用以下方法来实现facebook共享。

 - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{

     [SHKFacebook handleOpenURL:url]
        return YES;
    }

    - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
    {

     [SHKFacebook handleOpenURL:url]
        return YES;
    }

我只是希望有人向我解释这两个函数的作用以及它们在理论上如何用于使facebook共享工作。

3 个答案:

答案 0 :(得分:3)

当您的应用程序被告知打开URL,链接到文件或文件本身时,会发送这两个。如果您在应用的info.plist中定义了可以接受的URL /文件类型,则只会将其发送到您的应用程序。第一个用于收集有关发送链接/文件的应用程序的更多信息,然后让您决定如何处理I信息(包括打开文件/链接)。第一个也可以用于获取发送URL的应用程序的信息。就像在IOS 5中从iTunes应用程序打开iTunes商店时一样,它会显示一个新的“库”按钮。这样,iTunes可以将另一个URL发送回音乐应用程序以重新启动库页面。

第二个(在我看来)应该被弃用,因为第一个提供了更多的信息并完成了同样的任务。

在Facebook的背景下,它对你来说无济于事。也许如果用户需要将照片从电子邮件发布到他们的墙上,或者可能在Facebook上共享文档。

答案 1 :(得分:3)

可能这些方法实现了Facebook SSO的一半(单点登录)。通常的方式是:

  1. 用户点击按钮或其他内容以“通过Facebook登录”
  2. 你的应用程序在safari中加载Facebook SSO登录URL(在此过程中有效地为自己的应用程序设置背景)
  3. 用户在浏览器中输入登录信息并将其发送到Facebook进行验证。
  4. 成功后,Facebook会重定向到带有特制方案的网址(通常为“fbYOUR_FB_APP_ID”,因此类似于fb12000392304://)
  5. 您的应用将自己注册为具有该方案的网址的目标。因此,当Facebook重定向到该URL时,它会导致您的应用再次启动,并传入access_token。因为您是为了响应打开URL而启动的,所以将调用上述方法之一。在这一点上,SHKFacebook对象显然对所述access_token做了一些魔术。

答案 2 :(得分:1)

两种方法都要求委托打开由URL标识的资源。现在已弃用handleOpenURL,您必须使用application:openURL:sourceApplication:annotation:

您的应用程序可以提供myapp://等URL方案参考,您可以通过发送提供的URL从其他应用程序打开此应用程序。打开应用程序后,application:openURL:sourceApplication:annotation:将被触发。您也可以向app发送查询,然后解析它。

我不知道SHKFacebook是什么以及它是如何运作的,但我认为它与这些网址一起运作 - facebook schemes