更新-可以做到
So the 应用程序能够共享到 Facebook,而无需使用帐户框架来获取用户权限......他们使用UIActivityViewController
并且帖子显示为“via Digg”,我联系了 Digg 的某人,他们告诉我这是一个手动过程,您必须在 Apple App Store 中发布您的 iOS 应用程序,并且还必须在 Facebook 中接受并发布您的 Facebook 应用程序应用商店。
然后Facebook可以通过这种方式手动处理两者的链接。
这样做的明显缺点是UIActivityViewController
意味着您可以在不与 Facebook 集成的情况下从您的应用程序进行共享,无需 Facebook 应用程序...但是要“通过您的应用程序名称”获得,您将需要一个 Facebook 应用程序,一旦一切完成,Facebook 将批准该应用程序进入他们自己的应用程序商店已上线,您需要联系开发者关系部门将其全部链接起来。
请注意,我的其余答案(我之前的答案)是正确的,解决方案是 Facebook 可以为您执行的手动过程,您的 iOS 代码不应受到影响。
以前的答案和解决方法
您想要的原生 Facebook 集成实际上是 Composer 视图控制器。这是通过使用SLComposeViewController
具有服务类型的类SLServiceTypeFacebook
.
此类仅提供单向通信,正如您所注意到的,您是通过点击“发布”按钮确认任何墙贴的人。该视图控制器属于 iOS 系统,而不是您的应用程序。通过与这个组合视图控制器交互,您实际上绕过了您的应用程序。
用户喜欢这样做,因为这可以给他们带来安全感。
除非您的应用程序仅通过更深入的双向 Facebook 集成来运行,否则您应该使用SLComposeViewController
(更深入的集成意味着您的应用程序需要您的朋友列表或现有的墙贴、相册等...)。
为了使源自您的应用程序的帖子在 Facebook 上显示为“via xxxx”而不是“via iOS”,您需要通过以下方式与 Facebook 进行交互:SLRequest
班级。为了做到这一点,您还必须与Account.framework
此外Social.framework
.
在设置方面,它类似于以前使用的(并且仍然可以使用)之前的 Facebook iOS SDK,您可以获得设备帐户存储的引用,您请求 Facebook 帐户并发送您的 Facebook 应用程序 ID 和一系列权限。
如果获得许可,您可以通过以下方式与 Facebook Graph API 进行交互:SLRequest
班级。通过在这个庄园的墙上张贴,您将获得所需的“via xxx”。
要使用此功能,请查看SLRequest 的文档 https://developer.apple.com/library/ios/#documentation/Social/Reference/SLRequest_Class/Reference/Reference.html#//apple_ref/doc/constant_group/Service_Type_Constants.
请注意,在这种情况下,您有责任创建自己的撰写视图。
您当然可以从本机 UI 中获得灵感,也可以查看 iPhoto 的 iOS 应用程序,尝试使用该应用程序共享到 Facebook,您会注意到它请求与您的 Facebook 帐户交互的权限(使用时不会发生这种情况)SLComposeViewController
),然后它呈现出非常接近的东西SLComposeViewController
用于 Facebook 帖子撰写。
但如果你仔细观察,你会发现它不一样。这也适用于 Twitter 及其本机应用程序与本机集成。他们有自己的撰写视图,值得注意的是他们使用本机 iOS 集成(Apple 框架)。我们之所以知道这一点,是因为转到“设置”>“隐私”>“Twitter”,您可以看到 Twitter 应用程序是使用设备上的 Twitter 帐户的授权应用程序。
Facebook 也是如此。
如果您没有获得许可,那么您将无法发布您的应用程序 - 又名“通过 myApp”。
抱歉让您失望了,我也一直在寻找一种方法来集成ACAccount
进入SLComposeViewController
但也找不到路。这是一个耻辱......因为本机用户界面很甜蜜。