SLComposeViewController 共享教程 [关闭]

2023-12-12

使用 iOS 6 的新功能需要遵循哪些步骤SLComposeViewController发布到 Facebook、Twitter 或新浪微博?


有关此框架的详细信息,请参阅 Apple 的社交框架类参考

附加教程:

  1. http://soulwithmobiletechnology.blogspot.com/2012/07/tutorial-how-to-use-inbuilt.html
  2. http://www.mobile.safilsunny.com/iphone/integrating-facebook-ios/
  3. https://rudeboy-quickies.blogspot.com/2012/06/steps-to-integrate-facebook-in-ios6.html

对于这个例子,我们将使用SLComposeViewController's SLServiceTypeFacebook。如果您想使用 Twitter 或 SinaWeibo,只需将 SLServiceType 更改为以下之一:

  • SL服务类型Facebook
  • SL服务类型新浪微博
  • SL服务类型Twitter

iOS 6 使得使用以下方式直接发布到 Facebook、Twitter 或新浪微博变得非常容易SLComposeViewController。这与 iOS 5 的工作原理非常相似TWTweetComposeViewController.

首先,在视图控制器的头文件(.h)中#import社会框架和账户框架。

#import <Social/Social.h>

#import <Accounts/Accounts.h>

这里我们将声明一个简单的UIButton and an IBAction我们稍后将链接到该按钮和void(sharingStatus) 将用于检查所选共享服务是否可用。

@interface ViewController : UIViewController

@property (weak, nonatomic) IBOutlet UIButton *easyFacebookButton;
- (IBAction)facebookPost:(id)sender;
- (void)sharingStatus;
@end

@implementation ViewController

然后,在您的实现文件 (.m) 中,我们将首先实现我们在头文件中声明的 (sharingStatus) void。共享状态用途SLComposeViewController's isAvailableForServiceTypeBOOL 返回您是否可以发布到其参数中指定的服务。在这种情况下,我们将使用服务类型SLServiceTypeFacebook。如果服务可用,则发布按钮将启用,alpha 值为 1.0f;如果服务不可用,则按钮将被禁用,其 alpha 值设置为 0.5f。

- (void)sharingStatus {
    if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) {
        NSLog(@"service available");
        self.easyFacebookButton.enabled = YES;
        self.easyFacebookButton.alpha = 1.0f;
    } else {
        self.easyFacebookButton.enabled = NO;
        self.easyFacebookButton.alpha = 0.5f;
    }
}

在这里我们将设置IBAction这将调用作曲家。为了获得良好的实践,我们将检查isAvailableForServiceType再次避免为不可用的服务类型调用 Composer。 (如果在上次检查期间出现问题,或者在点击发布按钮和作曲家全部/初始化之间的几分之一秒内可用性发生某种变化。下面的代码已设置为显示带有文本的 Facebook 作曲家表,一个图像和一个链接。此操作还使用完成处理程序来处理作曲家的取消和完成结果。

- (IBAction)facebookPost:(id)sender {

    if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) {

        SLComposeViewController *mySLComposerSheet = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook];

        [mySLComposerSheet setInitialText:@"iOS 6 Social Framework test!"];

        [mySLComposerSheet addImage:[UIImage imageNamed:@"myImage.png"]];

        [mySLComposerSheet addURL:[NSURL URLWithString:@"http://stackoverflow.com/questions/12503287/tutorial-for-slcomposeviewcontroller-sharing"]];

        [mySLComposerSheet setCompletionHandler:^(SLComposeViewControllerResult result) {

             switch (result) {
                 case SLComposeViewControllerResultCancelled:
                     NSLog(@"Post Canceled");
                     break;
                 case SLComposeViewControllerResultDone:
                     NSLog(@"Post Sucessful");
                     break;

                 default:
                     break;
             }
         }];

        [self presentViewController:mySLComposerSheet animated:YES completion:nil];
    }
}

In viewWillAppear我们将注册一名观察员ACAccountStoreDidChangeNotification这样当账户信息发生变化时可以通知应用程序。该观察员将在viewDidDisappear.

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sharingStatus) name:ACAccountStoreDidChangeNotification object:nil];
}

- (void)viewDidDisappear:(BOOL)animated
{
    [super viewDidDisappear:animated];
    [[NSNotificationCenter defaultCenter] removeObserver:ACAccountStoreDidChangeNotification];
}

最后,打开界面生成器并添加UIButton这将是发布按钮。然后在连接检查器中链接IBOutlet and IBAction我们之前创建了该按钮,就是这样!你完成了!

enter image description here

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

SLComposeViewController 共享教程 [关闭] 的相关文章

  • 以编程方式从底部裁剪图像

    我正在开发自定义相机应用程序 一切进展顺利 但我在从底部裁剪图像时遇到了问题 即 裁剪后的图像与原始图像具有完全相同的宽度 但高度将为原始图像的 1 3 并且必须从底部开始 斯威夫特3解决方案 func cropBottomImage im
  • 沙盒尝试恢复消耗性 IAP

    我一直在尝试在 iOS 上测试一些消耗性 IAP 但遇到了一个奇怪的错误 弹出一条警报 其中包含以下文本 此应用内购买已被购买 它将恢复为 自由的 环境 沙盒 我已经检查过 并且确定我的 IAP 可以在 iTunesConnect 中使用
  • iOS 防止计时器 UILabel 在数字变化时“晃动”

    我有一个UILabel它以以下格式显示计时器的输出MM ss SS 分 秒 厘秒 但是随着厘秒宽度的变化 它从左向右 摇动 例如 11 比 33 窄 有什么办法可以减轻这种情况吗 我尝试过将其居中 给它固定的宽度 但它们似乎没有帮助 从iO
  • 将 UIButton 中的图像缩放到 AspectFit?

    我想将图像添加到 UIButton 并且还想缩放图像以适合 UIButton 使图像变小 请告诉我该怎么做 这是我尝试过的 但它不起作用 将图像添加到按钮并使用setContentMode self itemImageButton setI
  • ios - Gamekit 的 GKOctree 未找到元素

    我正在尝试使用GKOctree https developer apple com documentation gameplaykit gkoctree用于高效检索 3D 空间中的对象 然而 以下代码似乎没有按预期工作 import Gam
  • 在 HTML5 iOS 7 / iOS 8 中显示十进制键盘

    经过几个小时的搜索后 我只是有一个简单的问题 是否有可能在网络浏览器输入字段中显示小数键盘 input type number 只显示数字 但我需要在左下角使用逗号或点 我尝试过任何事情 pattern step等等 但没有显示十进制键盘
  • AVCaptureSession 具有多个方向问题

    我正在尝试实现条形码扫描仪 我有一个 AVCaptureSession 它从 AVCaptureDevice 接收视频 我想支持所有方向 使用以下代码 当我运行应用程序时 纵向一切正常 然而 在横向方向上 视图会旋转 但视频输入不会旋转 所
  • 为什么在授予用户权限时,UIUserNotificationType.None 在当前设置中返回 true?

    我正在编写一种方法来检查当前用户设置是否包含某些通知类型 当检查当前设置是否包含 UIUserNotificationsType None 时 无论授予权限还是拒绝权限 它都会返回 true 有谁知道这是为什么吗 func register
  • SwiftUI:状态栏颜色

    有没有办法将 SwiftUI 视图的状态栏更改为白色 我可能错过了一些简单的东西 但我似乎找不到在 SwiftUI 中将状态栏更改为白色的方法 到目前为止我只看到 statusBar hidden Bool 状态栏文本 色调 前景色可以通过
  • 为什么我不能在 Realm 属性上使用 private

    我正在尝试在 RealmSwift 中存储一个枚举案例 但 Realm 不支持枚举 本文 https medium com it works locally persisting swift enumerations with realm
  • 错误域=AVFoundationErrorDomain代码=-11814“无法记录”

    它不断给我错误 错误域 AVFoundationErrorDomain代码 11814 无法记录 我不确定问题是什么 我试图在拍照后计数器达到 1 时录制声音 static int counter counter will always b
  • 如何在 iOS 中更改部分透明图像的颜色?

    我有一个具有部分透明度的单色图像 我有正常版本和 2X 版本的图像 我希望能够用代码将图像着色为不同的颜色 下面的代码适用于普通图像 但 2X 最终会出现伪影 正常图像可能有类似的问题如果是这样 由于分辨率的原因我无法检测到它 UIImag
  • 所需框架与静态库

    构建现代框架 https developer apple com videos play wwdc2014 416 says 每个应用程序都有自己的自定义框架副本 https stackoverflow com a 15262463 242
  • iOS 滚动视图允许滚动过去的内容

    我正在努力优化我的应用程序以适应横向和较小的屏幕 我主要使用滚动视图来实现这一点 在我的其中一个视图中 我有一个容器视图 当我在故事板中的设备之间切换时 这个容器视图看起来很完美 容器视图映射到具有滚动视图的视图控制器 该滚动视图的顶部 底
  • iOS 中的构建对象文件扩展名是什么?

    当我在项目中构建java对象类时 将创建带有 class扩展名的构建文件 并且人类不可读 快速构建文件怎么样 example car java gt build gt car class 构建后会是什么 car swift gt build
  • 以编程方式触发iOS摇动事件

    如何以编程方式触发 iOS 中的摇动事件 我尝试过以下方法 但它总是崩溃 void shake NSLog TEST UIMotionEventProxy m NSClassFromString UIMotionEvent alloc in
  • SiriKit 错误:此应用程序不支持捐赠意图

    我在 Xcode 10 iOS 12 Beta 中捐赠自定义意图时遇到问题 我创建了一个在我的主应用程序目标和 OrderIntent 目标之间共享的自定义框架 我创建了一个 intentdefinition 文件 并将目标成员资格设置为我
  • 苹果企业程序分发问题[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 这个问题涉及到Apple iOS 开发者企业计划 http developer apple com programs ios enterprise 我
  • 在故事板中的视图控制器之间滑动手势

    我希望添加左右滑动手势来在视图控制器之间进行更改 这是否可能 并且有没有一种简单的方法可以在故事板中执行此操作 谢谢 故事板允许您在两个视图控制器之间设置 Segues 我想说首先在视图之间附加 Segues 给它一个标识符 然后使用类似的
  • 为什么使用 iPhone 或 iOS 设备在“iframe”中查看“position:fixed”时不起作用?

    我研究过 stackoverflow 似乎position fixed在 iOS 移动设备的 iframe 中 https stackoverflow com questions 15874910 position fixed and if

随机推荐

  • C# for 循环中使用括号和不使用括号的区别

    以下代码的输出与第二个代码的输出不同 有人可以解释这个问题吗 Code 1 for int i 1 i lt intInput i for int j 1 j lt i j Console Write Console WriteLine i
  • 是否真的可以使用自定义 HTTP 标头来防止 CSRF,因为浏览器会阻止站点将自定义 HTTP 标头发送到另一个站点?

    今天在研究CSRF 发现了下面这句话 自定义 HTTP 标头可用于防止 CSRF 因为浏览器 阻止网站将自定义 HTTP 标头发送到另一个网站 但 允许站点向自己发送自定义 HTTP 标头 这篇文章里面 https www invicti
  • 公开 VSCode 活动“when 子句上下文”的方法

    我正在寻找一种公开 VSCode 的方法active when 子句上下文 例如 explorerResourceIsFolder 为了让您更好地理解我的用例 以下是正在开发 VSCode 扩展的项目的一些背景信息 我的扩展将有助于通过语音
  • 主要的 .NET 3.0 模拟框架有哪些?

    首先 我喜欢 Moq 我希望可以在 NET 3 0 中使用它 然而遗憾的是 我不能 但我仍然想使用模拟来进行单元测试 另外 我以前用过Rhino 但我绝对讨厌它 不过 更具描述性的是 这是因为界面感觉笨重且不直观 这是可以处理的 而文档要么
  • R:使用“strsplit”耗尽内存

    我的内存不足strsplit 想必 这是代码 split fields lt function frame fields split suffix for field in fields v lt sapply strsplit frame
  • SSL 配置无法读取 server.crt 文件

    我想在这里完成本教程 创建自签名 SSL 证书 https devcenter heroku com articles ssl certificate self 我生成了 csr 密钥并生成了证书 csr 当我回到 ssl heroku 教
  • 如何从命令行检查 jvm 模块内容?

    我想从命令行检查本地安装的 jvm 的 java 模块的资源文件的内容 基于一个问题jvm 中的 mime 类型支持我想看看的内容 sun net www content types properties在模块中java base我本地安装
  • CSS 列表逐渐淡入,数量未知

    我试图使用普通 CSS 进行逐渐淡入淡出 并且列表中没有 jquery 这样它就可以一一淡入淡出 然而 我只知道如何在有限的列表中做到这一点 如何循环 css 以便无论我有多少列表 它仍然有效 这是我所做的 ladder opacity 0
  • 从传入消息 (SMS) 中获取 IMSI 号码或目标电话号码

    我正在开发一个应用程序 需要接收短信的设备 具有多个 SIM 卡 的 IMSI 电话号码 这基本上是为了识别哪个 SIM 卡正在接收短信并稍后执行进一步的操作 我彻底搜索了 SMSMessage Api 但没有找到合适的解决方案 任何帮助将
  • 命名空间“std”中没有名为“shared_ptr”的类型

    希望这对其他人有帮助 尝试使用 Cedar BDD 编译 iOS 项目一直失败 并出现命名空间 std 中没有名为 shared ptr 的类型错误消息 这显然是一个 C 错误 但无法理解为什么 Xcode 使用的 C 库没有定义共享指针类
  • Make 中模式规则的优先级

    我 大致 有这个 Makefile PHONY all SUFFIXES OUT www web all OUT index html rule 1 html in build html lt rule 2 OUT cp lt 这个 Mak
  • 从 Python 将密码传递给 runas [重复]

    这个问题在这里已经有答案了 我需要从我的脚本以另一个用户身份运行一个文件 而不提示输入密码 这是怎么做到的 有一个可执行程序叫做沙努尔程序这就是针对这种情况而设计的 您可以使用它在命令行上输入密码 如下所示 runas user domai
  • 如何使用sql在h2中插入几何图形

    从几个版本开始 h2 确实支持空间几何 在java中选择和插入几何图形不是问题 但是如何在纯sql中插入它们呢 文档显示它使用 WKT 但是当我尝试插入 WKT 时出现错误 这是一个示例插入 insert into feature id n
  • 类 java.util.Map 有泛型类型参数,请使用 GenericTypeIndicator 代替

    我正在使用 firebase 从数据库中检索数据 n 使用 Map
  • 在 __init__.py 中找不到引用“xxx”

    我在 PyCharm 中有一个项目组织如下 Sources init py Calculators init py Filters py Controllers init py FiltersController py Viewers in
  • Flex 订单属性未按预期工作

    我试图得到 通心粉和奶酪真的很好吃 在 网站的主要内容 下方 content padding 0 background 0 float none width auto heading display flex display webkit
  • 删除指针有时会导致堆损坏

    我有一个使用自定义线程池类运行的多线程应用程序 这些线程都执行相同的函数 但参数不同 这些参数通过以下方式传递给线程池类 jobParams is a struct of int double etc jobParams params ne
  • 在 macOS 上安装 data.table

    我需要在 macOS 11 1 上安装 data table 1 12 0 特别是 我收到错误 clang error unsupported option fopenmp make assign o Error 1 我已按照以下说明进行操
  • 在自身内部定义结构对象时出现问题

    这有效 struct LD 32 struct LD 32 ld 但这并没有 struct LD 32 struct LD 32 ld 为什么是这样 正如 pmg 猜测的那样 我将其编译为 C 代码 已编辑 C 中的结构体不能包含类型不完整
  • SLComposeViewController 共享教程 [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 使用 iOS 6 的新功能需要遵循哪些步骤SLComposeViewController发布到 Facebook Twitter 或新浪微博 有关此框架的详细信息 请参阅 Apple