我刚刚通过ios 6将facebook整合到我的应用程序中,但我在墙上发帖时遇到了一个问题.它只是说"post via ios app".我想说"posted via the app name".我在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;
      }

推荐答案

更新-这是可以做到的

因此,Digg for iOS应用程序能够在不使用帐户框架获取用户权限的情况下共享到Facebook...他们使用UIActivityViewController,帖子显示为"via Digg",我联系了Digg的人,他们告诉我这是一个手动过程,你必须在苹果应用store 发布你的iOS应用程序,也必须在Facebook应用store 接受并发布你的Facebook应用程序.

明显的缺点是,UIActivityViewController意味着你可以从你的应用程序中分享,而无需与Facebook集成,无需Facebook应用程序...但要"通过你的应用程序名",你需要一个Facebook应用程序,Facebook会批准它进入他们自己的应用程序store ,一旦一切都是实时的,你需要联系开发者关系,将其链接起来.

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


先前的答案和解决方法

你想要的本机Facebook集成实际上是composer视图控制器.这是通过使用服务类型为SLServiceTypeFacebookSLComposeViewController类获得的.

本课程只提供单向沟通,正如您所注意到的,您是通过点击Post按钮确认任何墙柱的人.此视图控制器归iOS系统所有,而不是您的应用程序.通过与这个组合视图控制器交互,实际上是绕过了应用程序.

用户喜欢这样做,因为这给了他们安全性.

除非你的应用程序只能通过更深层次的双向Facebook集成来运行,否则你应该使用SLComposeViewController(更深层次的集成意味着你的应用程序需要你的好友列表或现有的帖子、相册等).

为了让来自你的应用程序的帖子以"via xxxx"而不是"via iOS"出现在Facebook上,你需要通过SLRequest类与Facebook互动.为了做到这一点,除了Social.framework之外,你还必须与Account.framework互动.

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

如果允许,你可以通过SLRequest类与Facebook Graph API进行交互.在这个庄园的墙上贴上你想要的"via xxx".

要使用这个,请查看documentation for SLRequest.

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

当然,你可以从本机用户界面中获得灵感,也可以查看iPhoto的iOS应用程序,try 使用该应用程序与Facebook共享,你会注意到它请求与你的Facebook帐户交互的权限(使用SLComposeViewController时不会出现这种情况),然后它会为Facebook帖子 compose 提供非常接近SLComposeViewController的内容.

But if you look closer you'll notice it is not the same. This also goes for Twitter and their native app vs native integration. They have their own compose view, it's really interesting to note they use the native iOS integration (the Apple frameworks). We know this because going to Settings > Privacy > Twitter you can see Twitter app is an authorised app using the Twitter account(s) on the device.

Facebook也是如此.

如果你没有获得许可,那么你就没有办法发布你的应用程序——也就是"通过我的应用程序".

很抱歉让你失望,我也一直在寻找将ACAccount整合到SLComposeViewController的方法,但也找不到方法.真可惜...因为本地用户界面很可爱.

Objective-c相关问答推荐

导航回上一个视图控制器

Objective C 中的 RSA 实现

如何用零填充左侧的整数?

NSBundle pathForResource 为 NULL

为什么 UITableViewCell Select 时所有背景都消失了?

NSLocalizedString 格式

从 NSString 创建 SHA1 哈希

混合 Objective-C 和 C++

使用正则表达式在 Xcode 中查找/替换

在 iPhone 应用程序中使用 RestKit 的最佳方式

如何保存我的 iPhone 应用程序的用户首选项?

在不导入自己的情况下播放系统声音

了解 performSegueWithIdentifier

如何将小时数添加到 NSDate?

如何在 Objective-C 中将 NSString 解析为 BOOL?

NSCharacterSet:如何将_添加到 alphanumericCharacterSet 文本限制?

允许用户从 UILabel 中 Select 文本进行复制

command/usr/bin/codedesign 失败,退出代码 1-代码符号错误

ARC 下的 NSString 属性应该是强的还是复制的?

Xcode没有编译任何项目? 'clang 失败,退出代码 255'