如何使用 SDK 3.1 指定用户用于发布的应用程序名称(通过应用程序名称)

2024-04-25

使用新的 Facebook SDK 3.1 和 iOS 6,有 2 种(实际上 3 种)发帖方式。

(似乎新的趋势是有更多的选择,使其更简单?)天哪!

这是一个:

SLComposeViewController *fbPost = [SLComposeViewController      composeViewControllerForServiceType:SLServiceTypeFacebook];
[fbPost addURL:[NSURL URLWithString:href]];
[self presentViewController:fbPost animated:YES completion:nil];

这是使用本机对话框的另一种方式:

[FBNativeDialogs presentShareDialogModallyFrom:self
 initialText: nil
 image: nil
 url: [NSURL URLWithString:href]
 handler:^(FBNativeDialogResult result, NSError *error) {

     if (error) {

     }
     else
     {

         switch (result) {
             case FBNativeDialogResultSucceeded:

                 break;
             case FBNativeDialogResultCancelled:

                 break;
             case FBNativeDialogResultError:

                 break;
        }

     }

 }];

我们,开发人员,认为这很酷,因为我们为用户提供了很好的功能,而且因为我们的应用程序名称出现在帖子中,这可以对应用程序进行一些推广。

有趣的是,最新的实现不允许指定发布的应用程序名称,该名称出现在“via”之后。

我也尝试使用 SLRequest:

ACAccountStore *store = [[ACAccountStore alloc] init];

ACAccountType *fbType = [store accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook];

NSMutableDictionary *options = [[NSMutableDictionary alloc] init];
(options)[@"ACFacebookAppIdKey"] = kFacebookAppID;
(options)[@"ACFacebookPermissionsKey"] = @[@"publish_stream"];
(options)[@"ACFacebookAudienceKey"] = ACFacebookAudienceFriends;


[store requestAccessToAccountsWithType:fbType options:options completion:^(BOOL granted, NSError *error) {
    if(granted) {
        // Get the list of Twitter accounts.
        NSArray *fbAccounts = [store accountsWithAccountType:fbType];

        NSMutableDictionary *params = [[NSMutableDictionary alloc] init];

        (params)[@"link"] = href;
//            (params)[@"picture"] = picture;
//            (params)[@"name"] = name;
        (params)[@"actions"] = @"{\"name\": \"Go Gabi\", \"link\": \"http://www.gogogabi.com\"}";

        //Set twitter API call
        SLRequest *postRequest = [SLRequest requestForServiceType:SLServiceTypeFacebook requestMethod:SLRequestMethodPOST
                                                              URL:[NSURL URLWithString:@"https://www.facebook.com/dialog/feed"] parameters:params];
        //Set account


        [postRequest setAccount: [fbAccounts lastObject]];
        [postRequest performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) {

            if(error)
            {
                NSLog(@"%@", error.description);
            }
            else
            {
                NSLog(@"%@", [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding]);

            }

        }];

    } else {


    }
}];

不幸的是,分享这个名字不再那么微不足道了,我想知道为什么以及谁在设计新的实现...... 我很高兴能得到一些帮助,提前致谢。

我试着让我的问题变得有趣,因为花时间在如此琐碎的话题上真是太无聊了......


当您使用SLComposeViewController,实际上是系统向您展示他们的控制器,并且是使用发布按钮发送的用户。因此在 Facebook 上它显示为“通过 iOS”。

没有办法改变这一点。

使用 Facebook SDK 3.1,在幕后它也使用 iOS 6 本机集成,因此当您调用FBNativeDialogs,在 iOS 6 上,它使用SLComposeViewController.

Facebook 继续开发他们的 SDK,因为他们提供了一些很好的模块来“开箱即用”——这包括好友列表选择器等……但我相信 Facebook 继续支持他们的 SDK 的最大原因是向后兼容。在幕后,如果您使用的不是 iOS 6,它会退回到它的库;如果您使用的是 iOS 6,它会使用系统集成。

Facebook 是个大东西,现在它原生可用,很多开发者都会使用它,就像去年 Twitter 的集成一样。当然,问题在于,开发人员可以选择放弃旧版 iOS 支持,或者……有大量重复代码,因为他们会检查SLComposeViewController如果它不可用(iOS 5),则使用旧的 Facebook SDK...您可以想象这会很快变得非常混乱。

因此,Facebook SDK (3.1) 正在使用 iOS 系统 Facebook 集成(如果可用),否则,它是自己的。简而言之,除非您真的想要 Facebook SDK 的好东西(朋友纠察队仅举一例),并且您不打算支持 iOS

那么,回到你的问题,有 3 种方法可以在 Facebook 上发帖?实际上考虑到我提到的,iOS 6中有两种方法:SLComposeViewController or, SLRequest。在较旧的 iOS 版本上,只有 1:Facebook SDK。

自从SLComposeViewController由系统拥有,而不是您的应用程序,它将始终作为“通过 iOS”共享。

另一方面SLRequest将显示您的应用程序名称。当您为您指定一个帐户时SLRequest,该帐户是通过ACAccountStore由于传递了一些选项,包括ACFacebookAppIdKey,这将用于确定要作为帖子的一部分发布到用户源上的 Facebook 应用程序名称。

希望这可以帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 SDK 3.1 指定用户用于发布的应用程序名称(通过应用程序名称) 的相关文章

随机推荐

  • 本地播放 mp3 时 Android MediaPlayer 错误(1, -2147483648)

    Android 4 4 发布后不久 我的代码自 2 2 以来一直正常工作 突然出现了错误 我的代码将查询音乐数据库中给定的音乐文件 该路径在查询中返回 然后该路径被传递到 MediaPlayer Code String uri conten
  • 在reactjs中以编程方式取消选中复选框

    我正在弄乱复选框 我想知道有没有一种方法可以通过调用函数来取消选中单击按钮时的复选框 如果是这样 我怎样才能做到这一点
  • 实现类 Markdown 语言的解析器

    我有类似于 markdown 和 SO 使用的标记语言 遗留解析器基于正则表达式 维护起来简直是噩梦 因此我提出了自己的基于 EBNF 语法的解决方案 并通过 mxTextTools SimpleParse 实现 但是 某些令牌可能存在相互
  • CMake 64 位和 SFML 64 位

    我正在尝试使用适用于 Windows 的 CMake 64 位和 SFML 2 5 1 64 位构建 C 项目 当我在项目上运行 cmake 时 我收到一条错误消息 我能让它工作的唯一方法是改变CMAKE PREFIX PATH指向 SFM
  • 读取请求正文两次

    我试图读取中间件中的主体以进行身份 验证 但是当请求到达 api 控制器时 对象为空 因为主体已被读取 有没有办法解决 我在中间件中像这样读取正文 var buffer new byte Convert ToInt32 context Re
  • 如果图像比其容器宽,如何将图像居中?

    通常 您将图像居中display block margin auto 但如果图像比容器大 则会向右溢出 如何使其均匀地向两侧溢出 容器的宽度是固定且已知的 图像的宽度未知 纯CSS解决方案 需要一个额外的包装器 在 FireFox IE8
  • 不同数据类型的内存对齐方式是否不同

    在C中执行不同的数据类型 例如char short int long float double有不同的内存对齐边界吗 在 32 位字对齐字节可寻址操作系统中 如何访问char or short与访问不同int or float 在这两种情况
  • html5在移动设备中自动播放视频

    Auto play is not working without muted attribute when I try to open url in mobile device How to play video without using
  • PreLoader 的多线程 - JavaFX

    我正在开发一个 JavaFX 应用程序 需要在启动主应用程序阶段之前从文件中加载资源 我完成此任务的解决方案是使用 PreLoader 以便用户在加载资源之前无法与应用程序交互 非常标准的东西 我有一个扩展 PreLoader 类的类 该类
  • 有没有办法从 VS2010 中的建模项目生成代码?

    有没有办法从 VS2010 中的建模项目生成代码 看来这个功能即将到来 但 Beta2 中还没有 微软的拉梅什 拉贾戈帕尔回答类似的问题 http social msdn microsoft com Forums en US vstspre
  • 如何将回车符作为字符添加到文件中?

    我想要一个像这样的字符串 blablbabla
  • Flexbox,保持纵横比的方形 div 的响应式网格

    我正在尝试用 div 创建一个 2x2 网格 某些 div 可能包含图像 但它可能会被设置为背景 并带有选项background size cover 这是我创建的笔 http codepen io qarlo pen vLEprq htt
  • 如何使用 Arquillian Weld EE Embedded 测试 EJB 方法调用

    我想测试 EJB 并且想使用 Weld EE Embedded 来测试它 因为我不想为此部署应用程序服务器 这是我的课程 RunWith Arquillian class public class EJBTest Deployment pu
  • 将 Sql Server 与 Django 2.0 结合使用

    我想将 Django 2 0 与旧版 MS SQL Server 数据库一起使用 我能找到的有关使用 Django 与 MS SQL Server 的最新信息是在生产中使用 Sql Server 和 Django 这些天 https sta
  • Java 线程转储:阻塞线程而不“等待锁定...”

    我很难理解从 jstack 获得的 Tomcat 6 java 1 6 0 22 Linux 上运行的 Spring MVC Web 应用程序的线程转储 我看到阻塞线程 导致其他线程等待 本身被阻塞 但是线程转储并没有告诉我原因或它们正在等
  • removeEventListener 的行为

    请检查以下代码 var clickfn function alert clicked document getElementById div1 addEventListener click clickfn true clickfn func
  • Arc4随机模偏置

    根据本文档 https developer apple com library mac documentation darwin reference manpages man3 arc4random 3 html arc4random un
  • ggplot2、geom_bar、闪避、条形顺序

    我想订购道奇酒吧geom bar 你知道如何处理吗 My code ttt lt data frame typ rep c main boks cuk 2 klaster rep c 1 2 3 ile c 5 4 6 1 8 7 ggpl
  • PHP password_hash 检查两个哈希值

    如果我有两个使用创建的密码哈希password hash http www php net manual en function password hash php函数 我如何判断它们是否来自相同的基本密码 我知道它每次都使用不同的盐 我没
  • 如何使用 SDK 3.1 指定用户用于发布的应用程序名称(通过应用程序名称)

    使用新的 Facebook SDK 3 1 和 iOS 6 有 2 种 实际上 3 种 发帖方式 似乎新的趋势是有更多的选择 使其更简单 天哪 这是一个 SLComposeViewController fbPost SLComposeVie