iOS开发——高级技术&社交服务

社交服务

Social

现 在很多应用都内置“社交分享”功能,可以将看到的新闻、博客、广告等内容分享到微博、微信、QQ、空间等,其实从iOS6.0开始苹果官方就内置了 Social.framework专门来实现社交分享功能,利用这个框架开发者只需要几句代码就可以实现内容分享。下面就以一个分享到新浪微博的功能为例 来演示Social框架的应用,整个过程分为:创建内容编辑控制器,设置分享内容(文本内容、图片、超链接等),设置发送(或取消)后的回调事件,展示控 制器。

程序代码:

 1 //
 2 //  ViewController.m
 3 //  Social
 4 //
 5 //  Created by Kenshin Cui on 14/04/05.
 6 //  Copyright (c) 2015年 cmjstudio. All rights reserved.
 7 //
 8 #import "ViewController.h"
 9 #import
10 @interface ViewController ()
11 @end
12 @implementation ViewController
13 #pragma mark - 控制器视图事件
14 - (void)viewDidLoad {
15     [super viewDidLoad];
16
17 }
18 #pragma mark - UI事件
19 - (IBAction)shareClick:(UIBarButtonItem *)sender {
20     [self shareToSina];
21 }
22 #pragma mark - 私有方法
23 -(void)shareToSina{
24     //检查新浪微博服务是否可用
25     if(![SLComposeViewController isAvailableForServiceType:SLServiceTypeSinaWeibo]){
26         NSLog(@"新浪微博服务不可用.");
27         return;
28     }
29     //初始化内容编写控制器,注意这里指定分享类型为新浪微博
30     SLComposeViewController *composeController=[SLComposeViewController composeViewControllerForServiceType:SLServiceTypeSinaWeibo];
31     //设置默认信息
32     [composeController setInitialText:@"Kenshin Cui‘s Blog..."];
33     //添加图片
34     [composeController addImage:[UIImage imageNamed:@"stevenChow"]];
35     //添加连接
36     [composeController addURL:[NSURL URLWithString:@"http://www.cnblogs.com/kenshincui"]];
37     //设置发送完成后的回调事件
38     __block SLComposeViewController *composeControllerForBlock=composeController;
39     composeController.completionHandler=^(SLComposeViewControllerResult result){
40         if (result==SLComposeViewControllerResultDone) {
41             NSLog(@"开始发送...");
42         }
43         [composeControllerForBlock dismissViewControllerAnimated:YES completion:nil];
44     };
45     //显示编辑视图
46     [self presentViewController:composeController animated:YES completion:nil];
47 }
48 @end

运行效果:

发送成功之后:

在 这个过程中开发人员不需要知道新浪微博的更多分享细节,Social框架中已经统一了分享的接口,你可以通过ServiceType设置是分享到 Facebook、Twitter、新浪微博、腾讯微博,而不关心具体的细节实现。那么当运行上面的示例时它是怎么知道用哪个账户来发送微博呢?其实在 iOS的设置中有专门设置Facebook、Twitter、微博的地方:

必须首先在这里设置微博账户才能完成上面的发送,不然Social框架也不可能知道具体使用哪个账户来发送。

第三方框架

当 然,通过上面的设置界面应该可以看到,苹果官方默认支持的分享并不太多,特别是对于国内的应用只支持新浪微博和腾讯微博(事实上从iOS7苹果才考虑支持 腾讯微博),那么如果要分享到微信、人人、开心等等国内较为知名的社交网络怎么办呢?目前最好的选择就是使用第三方框架,因为如果要自己实现各个应用的接 口还是比较复杂的。当前使用较多的就是友盟社会化组件、ShareSDK,而且现在百度也出了社会化分享组件。今天无法对所有组件都进行一一介绍,这里就 以友盟社交化组件为例简单做一下介绍:

  1. 注册友盟账号并新建应用获得AppKey。
  2. 下载友盟SDK并将下载的文件放到项目中(注意下载的过程中可以选择所需要的分享服务)。
  3. 在应用程序中设置友盟的AppKey。
  4. 分 享时调用presentSnsIconSheetView: appKey: shareText: shareImage: shareToSnsNames: delegate:方法或者presentSnsController: appKey: shareText: shareImage: shareToSnsNames: delegate:方法显示分享列表(注意这个过程中要使用某些服务需要到对应的平台去申请并对应扩展框架进行设置,否则分享列表中不会显示对应的分享按 钮)。

下面是一个简单的示例:

 1 //
 2 //  ViewController.m
 3 //  Social_UM
 4 //
 5 //  Created by Kenshin Cui on 14/04/05.
 6 //  Copyright (c) 2015年 cmjstudio. All rights reserved.
 7 //
 8 #import "ViewController.h"
 9 #import "UMSocial.h"
10 #import "UMSocialWechatHandler.h"
11 @interface ViewController ()
12 @end
13 @implementation ViewController
14 #pragma mark - 控制器视图事件
15 - (void)viewDidLoad {
16     [super viewDidLoad];
17
18 }
19 #pragma mark - UI事件
20 - (IBAction)shareClick:(UIBarButtonItem *)sender {
21     //设置微信AppId、appSecret,分享url
22 //    [UMSocialWechatHandler setWXAppId:@"wx30dbea5d5a258ed3" appSecret:@"cd36a9829e4b49a0dcac7b4162da5a5" url:@"http://www.cmj.com/social-UM"];
23     //微信好友、微信朋友圈、微信收藏、QQ空间、QQ好友、来往好友等都必须经过各自的平台集成否则不会出现在分享列表,例如上面是设置微信的AppId和appSecret
24     [UMSocialSnsService presentSnsIconSheetView:self appKey:@"54aa0a0afd98c5209f000efa" shareText:@"Kenshin Cui‘s Blog..." shareImage:[UIImage imageNamed:@"stevenChow"] shareToSnsNames:@[UMShareToSina,UMShareToTencent,UMShareToRenren,UMShareToDouban] delegate:self];
25 }
26 #pragma mark - UMSocialSnsService代理
27 //分享完成
28 -(void)didFinishGetUMSocialDataInViewController:(UMSocialResponseEntity *)response{
29     //分享成功
30     if(response.responseCode==UMSResponseCodeSuccess){
31         NSLog(@"分享成功");
32     }
33 }
34 @end

运行效果:

注意:在第一次使用某个分享服务是需要输入相应的账号获得授权才能分享。

时间: 2024-10-11 00:21:46

iOS开发——高级技术&社交服务的相关文章

iOS开发——高级技术&蓝牙服务

蓝牙服务 蓝牙 随着蓝牙低功耗技术BLE(Bluetooth Low Energy)的发展,蓝牙技术正在一步步成熟,如今的大部分移动设备都配备有蓝牙4.0,相比之前的蓝牙技术耗电量大大降低.从iOS的发展史也不难看 出苹果目前对蓝牙技术也是越来越关注,例如苹果于2013年9月发布的iOS7就配备了iBeacon技术,这项技术完全基于蓝牙传输.但是众所周知苹果 的设备对于权限要求也是比较高的,因此在iOS中并不能像Android一样随意使用蓝牙进行文件传输(除非你已经越狱).在iOS中进行蓝牙传输

iOS开发——高级技术&PassBook服务

PassBook服务 Passbook是苹果推出的一个管理登机牌.会员卡.电影票.优惠券等信息的 工具.Passbook就像一个卡包,用于存放你的购物卡.积分卡.电影票.礼品卡等,而这些票据就是一个“Pass”.和物理票据不同的是你可以动态更 新Pass的信息,提醒用户优惠券即将过期:甚至如果你的Pass中包含地理位置信息的话当你到达某个商店还可以动态提示用户最近商店有何种优惠活动:当 用户将一张团购券添加到Passbook之后,用户到了商店之后Passbook可以自动弹出团购券,店员扫描之后进

iOS开发——高级技术&iCloud服务

iCloud服务 iCloud 是苹果提供的云端服务,用户可以将通讯录.备忘录.邮件.照片.音乐.视频等备份到云服务器并在各个苹果设备间直接进行共享而无需关心数据同步问题,甚至 即使你的设备丢失后在一台新的设备上也可以通过Apple ID登录同步.当然这些内容都是iOS内置的功能,那么对于开放者如何利用iCloud呢?苹果已经将云端存储功能开放给开发者,利用iCloud开发者 可以存储两类数据:用户文档和应用数据.应用配置项.前者主要用于一些用户文档.文件的存储,后者更类似于日常开放中的偏好设置

iOS开发——高级技术&通讯录服务

通讯录服务 AddressBook iOS中带有一 个Contacts应用程序来管理联系人,但是有些时候我们希望自己的应用能够访问或者修改这些信息,这个时候就要用到 AddressBook.framework框架.iOS中的通讯录是存储在数据库中的,由于iOS的权限设计,开发人员是不允许直接访问通讯录数据库 的,必须依靠AddressBook提供的标准API来实现通讯录操作.通过AddressBook.framework开发者可以从底层去操作 AddressBook.framework的所有信息

iOS开发——高级技术&GameCenter服务

GameCenter服务 Game Center是由苹果发布的在线多人游戏社交网络,通过它游戏玩家可以邀请好友进行多人游戏,它也会记录玩家的成绩并在排行榜中展示,同时玩家每经过一定 的阶段会获得不同的成就.这里就简单介绍一下如何在自己的应用中集成Game Center服务来让用户获得积分.成就以及查看游戏排行和已获得成就. 由 于Game Center是苹果推出的一项重要服务,苹果官方对于它的控制相当严格,因此使用Game Center之前必须要做许多准备工作.通常需要经过以下几个步骤(下面的准

iOS开发——高级技术&内购服务

内购服务 大家都知道做iOS开发本身的收入有三种来源:出售应用.内购和广告.国内用户通常很少直接 购买应用,因此对于开发者而言(特别是个人开发者),内购和广告收入就成了主要的收入来源.内购营销模式,通常软件本身是不收费的,但是要获得某些特权就 必须购买一些道具,而内购的过程是由苹果官方统一来管理的,所以和Game Center一样,在开发内购程序之前要做一些准备工作(下面的准备工作主要是针对真机的,模拟器省略Provisioning Profile配置过程): 前四步和Game Center基本

iOS开发——高级技术OC篇&运行时(Runtime)机制

运行时(Runtime)机制 本文将会以笔者个人的小小研究为例总结一下关于iOS开发中运行时的使用和常用方法的介绍,关于跟多运行时相关技术请查看笔者之前写的运行时高级用法及相关语法或者查看响应官方文档. 下面就来看看什么是运行时,我们要怎么在iOS开发中去使用它. 官方介绍: 这里我们主要关注的是最后一种! 下面来看看Runtime的相关总结 #pragma mark 获取属性成员 /********************************************************

iOS开发——高级技术&摇一摇功能的实现

摇一摇功能的实现 在AppStore中多样化功能越来越多的被使用了,所以今天就开始介绍一些iOS开发的比较实用,但是我们接触的比较少的功能,我们先从摇一摇功能开始 在 UIResponder中存在这么一套方法 1 - (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_3_0); 2 3 - (void)motionEnded:

iOS开发——高级技术精选OC篇&Runtime之字典转模型实战

Runtime之字典转模型实战 如果您还不知道什么是runtime,那么请先看看这几篇文章: http://www.cnblogs.com/iCocos/p/4734687.html http://www.cnblogs.com/iCocos/p/4676679.html http://www.cnblogs.com/iCocos/p/4725527.html 关于runtime的详细介绍及其相关的小实例 好了,这里就不多废话了,直接开干! 先来看看怎么使用Runtime给模型类赋值 iOS开发