与iOS 6.0本机Facebook集成共享:"通过我的应用名称发布"?

Ale*_*x G 44 xcode facebook objective-c ios ios6

我刚刚通过ios 6将facebook集成到我的应用程序中,但是在我的墙上发布时遇到了问题.它只是说"通过ios app发布".我希望它说"通过应用名称发布".我已经与Facebook建立了应用程序标识,我有他们分配的应用程序编号,但我不确定如何将其与facebook集成集成.

以下是我的代码.如果有人可以提供帮助,我们将不胜感激.谢谢!

{
NSString *message;
message= [[NSString alloc] initWithFormat:@"I've earned %@ points", [self retrieveScore]];

if([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) {

    SLComposeViewController *controller = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook];
    [controller setInitialText:message];
    [controller addURL:[NSURL URLWithString:@"http://mysite"]];
    [self presentViewController:controller animated:YES completion:Nil];
    [message release];

    SLComposeViewControllerCompletionHandler myBlock = ^(SLComposeViewControllerResult result){
        NSString *output= nil;
        switch (result) {
            case SLComposeViewControllerResultCancelled:
                output= @"Action Cancelled";
                NSLog (@"cancelled");
                break;
            case SLComposeViewControllerResultDone:
                output= @"Post Succesfull";
                NSLog (@"success");
                break;
            default:
                break;
        }
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Facebook" message:output delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil];
        [alert show];
        [alert release];
        [controller dismissViewControllerAnimated:YES completion:Nil];
    };
    controller.completionHandler =myBlock;
      }
Run Code Online (Sandbox Code Playgroud)

Dan*_*iel 70

更新 - 它可以完成

所以Digg for iOS应用程序能够共享到Facebook而无需使用Accounts框架来获取用户权限......他们使用UIActivityViewController并将帖子显示为"通过Digg",我联系了Digg的某个人,他们告诉我这是一本手册在此过程中,您必须在Apple App Store中发布您的iOS应用程序,并在Facebook App Store中接受并发布您的Facebook应用程序.然后Facebook可以通过这种方式手动处理两者的链接.

明显的缺点是,这UIActivityViewController意味着您可以在不与Facebook集成的情况下从您的应用程序共享,无需Facebook应用程序......但要获得"通过您的应用程序名称",您将需要Facebook将批准的Facebook应用程序他们自己的应用程序商店,一旦所有内容都存在,您需要联系开发人员关系以将其全部链接起来.

请注意,我的其余部分(我之前的回答)是正确的,解决方案是Facebook可以为您做的手动过程,您的iOS代码不应受到影响.


上一个答案和解决方法

您想要的原生Facebook集成实际上是作曲家视图控制器.这是通过使用SLComposeViewController具有服务类型的类获得的SLServiceTypeFacebook.

此课程仅提供单向通信,当您注意到时,您可以通过点击"发布"按钮确认任何墙上的帖子.此视图控制器由iOS系统拥有,而不是您的应用程序.通过与此compose视图控制器交互,您实际上绕过了您的应用程序.

用户喜欢这样做,因为它为他们提供了安全保障.

除非您的应用程序仅通过更深入的双向Facebook集成运行,否则您应该使用SLComposeViewController(更深入的集成意味着您的应用需要您的朋友列表或现有的墙上帖子,专辑等...).

为了使您的应用程序发布的帖子在Facebook上显示"via xxxx"而不是"via iOS",您需要通过SLRequest课程与Facebook进行互动.为了做到这一点,你必须与交互也Account.framework除了Social.framework.

它类似于以前使用过的Facebook iOS SDK(现在仍然可以使用),在设置方面,你可以获得对设备账户存储的引用,你需要Facebook账号并发送你的Facebook应用ID和一系列权限.

如果获得批准,您可以通过SLRequest课程与Facebook Graph API进行交互.通过在这个庄园中张贴到您的墙上,您将获得所需的"via xxx".

要使用它,请查看SLRequest文档.

请注意,在这种情况下,您有责任创建自己的撰写视图.

您当然可以通过原生用户界面启发自己,同时查看iPhoto的iOS应用程序,尝试使用该应用程序与Facebook共享,您会注意到它请求与您的Facebook帐户进行交互的权限(使用时不会发生的事情SLComposeViewController),然后提供一些非常接近SLComposeViewControllerFacebook帖子撰写的内容.

但如果你仔细观察,你会发现它不一样.这也适用于Twitter及其原生应用与原生集成.他们有自己的撰写视图,注意他们使用本机iOS集成(Apple框架)非常有趣.我们知道这一点,因为进入设置>隐私> Twitter,您可以看到Twitter应用程序是使用设备上的Twitter帐户的授权应用程序.

Facebook也是如此.

如果您没有获得许可,那么您无法发布为您的应用程序 - 也就是"通过myApp".

对不起,让你失望,我也一直在寻找一种方式的整合ACAccount进入SLComposeViewController,但无法要么找到路.这是一种耻辱......因为原生UI很甜蜜.

  • 所以这看起来肯定是答案,但Facebook让人难以置信地找到任何方式直接与开发者关系中的某个人取得联系.关于如何最好地解决这个问题的任何提示? (2认同)

doc*_*ang 13

我最终使用自定义Facebook框架和新的Facebook SDK 3.1. Facebook撰写视图

原文在这里:facebook撰写视图.我刚刚修改了一些小警告并使用新的FB SDK 3.1进行了更新.

用法:

DEFacebookComposeViewControllerCompletionHandler __block completionHandler = ^(DEFacebookComposeViewControllerResult result) {
    [self dismissViewControllerAnimated:YES completion:nil];
    switch (result) {
        case DEFacebookComposeViewControllerResultCancelled:
            NSLog(@"Facebook Result: Cancelled");
            break;
        case DEFacebookComposeViewControllerResultDone:
            NSLog(@"Facebook Result: Sent");
            break;
    }
};
DEFacebookComposeViewController * compose = [[DEFacebookComposeViewController alloc] init];
[compose setInitialText:self.shareText];
[compose addImage:self.shareImage];
[compose addURL:self.shareURL];
[compose setCompletionHandler:completionHandler];
[self presentViewController:compose animated:YES completion:^{}];
Run Code Online (Sandbox Code Playgroud)

建立:

  1. 打开项目并进行干净的构建.
  2. 进入文件夹$PROJECT_FOLDER\build\Debug-iphonesimulator并将FBComposeView.framework&将它们拖到FBComposeView.bundle项目中.

注意:请务必使用中的Debug-iphonesimulator.这是胖二进制. 在此输入图像描述