社交服务

Social

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

程序代码:

 
  1. 1 //
  2. 2 // ViewController.m
  3. 3 // Social
  4. 4 //
  5. 5 // Created by Kenshin Cui on 14/04/05.
  6. 6 // Copyright (c) 2015年 cmjstudio. All rights reserved.
  7. 7 //
  8. 8 #import "ViewController.h"
  9. 9 #import
  10. 10 @interface ViewController ()
  11. 11 @end
  12. 12 @implementation ViewController
  13. 13 #pragma mark - 控制器视图事件
  14. 14 - (void)viewDidLoad {
  15. 15 [super viewDidLoad];
  16. 16
  17. 17 }
  18. 18 #pragma mark - UI事件
  19. 19 - (IBAction)shareClick:(UIBarButtonItem *)sender {
  20. 20 [self shareToSina];
  21. 21 }
  22. 22 #pragma mark - 私有方法
  23. 23 -(void)shareToSina{
  24. 24 //检查新浪微博服务是否可用
  25. 25 if(![SLComposeViewController isAvailableForServiceType:SLServiceTypeSinaWeibo]){
  26. 26 NSLog(@"新浪微博服务不可用.");
  27. 27 return;
  28. 28 }
  29. 29 //初始化内容编写控制器,注意这里指定分享类型为新浪微博
  30. 30 SLComposeViewController *composeController=[SLComposeViewController composeViewControllerForServiceType:SLServiceTypeSinaWeibo];
  31. 31 //设置默认信息
  32. 32 [composeController setInitialText:@"Kenshin Cui's Blog..."];
  33. 33 //添加图片
  34. 34 [composeController addImage:[UIImage imageNamed:@"stevenChow"]];
  35. 35 //添加连接
  36. 36 [composeController addURL:[NSURL URLWithString:@"http://www.cnblogs.com/kenshincui"]];
  37. 37 //设置发送完成后的回调事件
  38. 38 __block SLComposeViewController *composeControllerForBlock=composeController;
  39. 39 composeController.completionHandler=^(SLComposeViewControllerResult result){
  40. 40 if (result==SLComposeViewControllerResultDone) {
  41. 41 NSLog(@"开始发送...");
  42. 42 }
  43. 43 [composeControllerForBlock dismissViewControllerAnimated:YES completion:nil];
  44. 44 };
  45. 45 //显示编辑视图
  46. 46 [self presentViewController:composeController animated:YES completion:nil];
  47. 47 }
  48. 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. 1 //
  2. 2 // ViewController.m
  3. 3 // Social_UM
  4. 4 //
  5. 5 // Created by Kenshin Cui on 14/04/05.
  6. 6 // Copyright (c) 2015年 cmjstudio. All rights reserved.
  7. 7 //
  8. 8 #import "ViewController.h"
  9. 9 #import "UMSocial.h"
  10. 10 #import "UMSocialWechatHandler.h"
  11. 11 @interface ViewController ()
  12. 12 @end
  13. 13 @implementation ViewController
  14. 14 #pragma mark - 控制器视图事件
  15. 15 - (void)viewDidLoad {
  16. 16 [super viewDidLoad];
  17. 17
  18. 18 }
  19. 19 #pragma mark - UI事件
  20. 20 - (IBAction)shareClick:(UIBarButtonItem *)sender {
  21. 21 //设置微信AppId、appSecret,分享url
  22. 22 // [UMSocialWechatHandler setWXAppId:@"wx30dbea5d5a258ed3" appSecret:@"cd36a9829e4b49a0dcac7b4162da5a5" url:@"http://www.cmj.com/social-UM"];
  23. 23 //微信好友、微信朋友圈、微信收藏、QQ空间、QQ好友、来往好友等都必须经过各自的平台集成否则不会出现在分享列表,例如上面是设置微信的AppId和appSecret
  24. 24 [UMSocialSnsService presentSnsIconSheetView:self appKey:@"54aa0a0afd98c5209f000efa" shareText:@"Kenshin Cui's Blog..." shareImage:[UIImage imageNamed:@"stevenChow"] shareToSnsNames:@[UMShareToSina,UMShareToTencent,UMShareToRenren,UMShareToDouban] delegate:self];
  25. 25 }
  26. 26 #pragma mark - UMSocialSnsService代理
  27. 27 //分享完成
  28. 28 -(void)didFinishGetUMSocialDataInViewController:(UMSocialResponseEntity *)response{
  29. 29 //分享成功
  30. 30 if(response.responseCode==UMSResponseCodeSuccess){
  31. 31 NSLog(@"分享成功");
  32. 32 }
  33. 33 }
  34. 34 @end

运行效果:

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

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

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

    蓝牙服务 蓝牙 随着蓝牙低功耗技术BLE(Bluetooth Low Energy)的发展,蓝牙技术正在一步步成熟,如今的大部分移动设备都配备有蓝牙4.0,相比之前的蓝牙技术耗电量大大降低.从iOS的 ...

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

    PassBook服务 Passbook是苹果推出的一个管理登机牌.会员卡.电影票.优惠券等信息的 工具.Passbook就像一个卡包,用于存放你的购物卡.积分卡.电影票.礼品卡等,而这些票据就是一个“ ...

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

    通讯录服务 AddressBook iOS中带有一 个Contacts应用程序来管理联系人,但是有些时候我们希望自己的应用能够访问或者修改这些信息,这个时候就要用到 AddressBook.frame ...

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

    iCloud服务 iCloud 是苹果提供的云端服务,用户可以将通讯录.备忘录.邮件.照片.音乐.视频等备份到云服务器并在各个苹果设备间直接进行共享而无需关心数据同步问题,甚至 即使你的设备丢失后在一 ...

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

    GameCenter服务 Game Center是由苹果发布的在线多人游戏社交网络,通过它游戏玩家可以邀请好友进行多人游戏,它也会记录玩家的成绩并在排行榜中展示,同时玩家每经过一定 的阶段会获得不同的 ...

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

    内购服务 大家都知道做iOS开发本身的收入有三种来源:出售应用.内购和广告.国内用户通常很少直接 购买应用,因此对于开发者而言(特别是个人开发者),内购和广告收入就成了主要的收入来源.内购营销模式,通 ...

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

    运行时(Runtime)机制 本文将会以笔者个人的小小研究为例总结一下关于iOS开发中运行时的使用和常用方法的介绍,关于跟多运行时相关技术请查看笔者之前写的运行时高级用法及相关语法或者查看响应官方文档 ...

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

    Runtime之字典转模型实战 如果您还不知道什么是runtime,那么请先看看这几篇文章: http://www.cnblogs.com/iCocos/p/4734687.html http://w ...

  9. iOS开发——高级技术&广告服务

    广告服务 上 面也提到做iOS开发另一收益来源就是广告,在iOS上有很多广告服务可以集成,使用比较多的就是苹果的iAd.谷歌的Admob,下面简单演示一下如何 使用iAd来集成广告.使用iAd集成广告 ...

随机推荐

  1. 树莓派(raspberry pi)学习4: 更改键盘布局(转)

    树莓派(raspberry pi)用了几次后,发现键盘老是按错,一些字符打不出来或打错 这个问题,折腾我半天.还是把心得分享一下吧 上网查,发现是键盘布局不对,树莓派(raspberry pi)是英国 ...

  2. iOS中UITableView数据源刷新了,但tableview当中的cell没有刷新

    你会不会遇到通过断点查看数据源模型的确刷新了,但是tableview没有刷新的情况,我遇到了,并通过下面的方法解决了,供大家参考! 在tableview中的数据源代理方法 p.p1 { margin: ...

  3. 写shell脚本速查笔记

    linux shell脚本的语法蛋疼,而且对于java开发人员来说又不常用,常常是学了一次等到下次用的时候又忘记了.因此制作这个速查笔记,用于要写shell脚本时快速回忆&速查. 获取当前脚本 ...

  4. poj 2446 Chessboard (二分匹配)

    Chessboard Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 12800   Accepted: 4000 Descr ...

  5. Correspondence / ˏkɔris'pɔndәns / dictionary10-800.doc

    I have taken courses in office administration, typing,reports and correspondence writing. Correspond ...

  6. SQL性能优化(Oracle)

    首先要搞明白什么叫执行计划? 执行计划是数据库根据SQL语句和相关表的统计信息作出的一个查询方案,这个方案是由查询优化器自动分析产生的,比如一条SQL语句如果用来从一个 10万条记录的表中查1条记录, ...

  7. c语言检测文件是否存在int __cdecl access(const char *, int);

    最近写代码,遇到很多地方需要判断文件是否存在的.网上的方法也是千奇百怪,“百家争鸣”. fopen方式打开的比较多见,也有其他各种方式判断文件是否存在的,由于其他方法与本文无关,所以不打算提及. 笔者 ...

  8. MySQL~ IN , FIND_IN_SET , LIKE

    MySQL- IN , FIND_IN_SET , LIKE SELECT * FROM test where area IN (1, 2, 3); SELECT * FROM test where ...

  9. 1029. Median (25)

    分析: 考察归并排序,用简单的快排会超时. #include <iostream> #include <stdio.h> #include <algorithm> ...

  10. Android 6.0 新功能及主要 API 变更

    运行时权限 这个版本中引入了新的权限模型,现在用户可以在运行时直接管理应用程序的权限.这个模型基于用户对权限控制的更多可见性,同时为应用程序的开发者提供更流畅的应用安装和自动升级.用户可以为已安装的每 ...