UMSocialDataService.h 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385
  1. //
  2. // UMSocialDataAPI.h
  3. // SocialSDK
  4. //
  5. // Created by Jiahuan Ye on 12-9-13.
  6. // Copyright (c) umeng.com All rights reserved.
  7. //
  8. #import <Foundation/Foundation.h>
  9. #import "UMSocialData.h"
  10. /**
  11. 网络请求结果状态码
  12. */
  13. typedef enum {
  14. UMSResponseCodeSuccess = 200, //成功
  15. UMSREsponseCodeTokenInvalid = 400, //授权用户token错误
  16. UMSResponseCodeBaned = 505, //用户被封禁
  17. UMSResponseCodeFaild = 510, //发送失败(由于内容不符合要求或者其他原因)
  18. UMSResponseCodeArgumentsError = 522, //参数错误,提供的参数不符合要求
  19. UMSResponseCodeEmptyContent = 5007, //发送内容为空
  20. UMSResponseCodeShareRepeated = 5016, //分享内容重复
  21. UMSResponseCodeGetNoUidFromOauth = 5020, //授权之后没有得到用户uid
  22. UMSResponseCodeAccessTokenExpired = 5027, //token过期
  23. UMSResponseCodeNetworkError = 5050, //网络错误
  24. UMSResponseCodeGetProfileFailed = 5051, //获取账户失败
  25. UMSResponseCodeCancel = 5052, //用户取消授权
  26. UMSResponseCodeNotLogin = 5053, //用户没有登录
  27. UMSResponseCodeNoApiAuthority = 100031 //QQ空间应用没有在QQ互联平台上申请上传图片到相册的权限
  28. } UMSResponseCode;
  29. /**
  30. 网络请求类型
  31. */
  32. typedef enum {
  33. UMSResponseAddComment = 0, //添加评论
  34. UMSResponseAddLike = 1, //添加喜欢
  35. UMSResponseGetCommentList = 2, //获取评论列表
  36. UMSResponseGetSocialData = 3, //获取social enitity信息
  37. UMSResponseShareToSNS = 4, //分享到一个微博平台
  38. UMSResponseShareToMutilSNS = 5, //分享到多个微博平台
  39. UMSResponseBinding = 6, //绑定一个账户作为登录账户
  40. UMSResponseUnBinding = 7, //解除绑定账户
  41. UMSResponseUnOauth = 8, //解除授权
  42. UMSResponseOauth = 9, //授权
  43. UMSResponseGetAccount = 10, //获取账户信息
  44. UMSResponseGetSnsInfo = 11, //获取sns详细信息
  45. UMSResponseGetFriends = 12, //获取朋友列表
  46. UMSResponseAddFollow = 13, //添加关注
  47. UMSResponseAddCustomAccount = 14, //添加自定义账户
  48. UMSResponseAddSnsAccount = 15, //添加已经授权的账户
  49. UMSResponseGetAppInfo = 16, //获取各个sns绑定app 信息
  50. UMSResponseIsTokenValid = 17, //获取各个微博平台的token是否有效
  51. UMSResponseAnalytics = 18,
  52. UMSResponseAddAppInfo = 19,
  53. UMSResponseInverseFlow = 20, //获取web分享回流url
  54. } UMSResponse;
  55. /**
  56. 页面类型
  57. */
  58. typedef enum{
  59. UMSViewControllerCommentList, //评论列表
  60. UMSViewControllerCommentEdit, //评论编辑页
  61. UMSViewControllerShareList, //分享列表页,包含sdk支持的所有sns平台
  62. UMSViewControllerShareEdit, //分享编辑页
  63. UMSViewControllerAccount, //个人中心页面
  64. UMSViewControllerSnsAccount, //sns账号设置页面
  65. UMSViewControllerLoginAccount, //登录账号页面
  66. UMSViewControllerOauth, //oath授权页面
  67. UMSViewControllerLogin, //登录页面,登录的可选平台为sdk所支持的sns平台
  68. UMSViewControllerFriendList, //好友列表页面
  69. UMSViewControllerActionSheet //icon平铺排列的分享列表页面
  70. }UMSViewControllerType;
  71. /**
  72. 返回的状态对象,可以通过此对象获取返回类型、返回结果、返回数据等。
  73. */
  74. @interface UMSocialResponseEntity : NSObject
  75. /**
  76. 代表发送结果,UMSResponseCodeSuccess代表成功,参看上面的定义
  77. */
  78. @property (nonatomic, assign) UMSResponseCode responseCode;
  79. /**
  80. 数据类型
  81. */
  82. @property (nonatomic, assign) UMSResponse responseType;
  83. /**
  84. 数据返回`UMViewControllerType`类型,如果是UI的回调函数,表示回调函数所在的页面
  85. */
  86. @property (nonatomic, assign) UMSViewControllerType viewControllerType;
  87. /**
  88. 错误原因
  89. */
  90. @property (nonatomic, retain) NSString *message;
  91. /**
  92. 返回数据
  93. */
  94. @property (nonatomic, retain) NSDictionary *data;
  95. /**
  96. 第三方返回的用户详细信息
  97. */
  98. @property (nonatomic, retain) id thirdPlatformUserProfile;
  99. /**
  100. 第三方原始response
  101. */
  102. @property (nonatomic, retain) id thirdPlatformResponse;
  103. /**
  104. 客户端发送出现的错误
  105. */
  106. @property (nonatomic, retain) NSError *error;
  107. /**
  108. 把各属性编码成NSString
  109. @return 一个`NSString`对象
  110. */
  111. -(NSString *)description;
  112. @end
  113. /**
  114. 进行网络请求之后的回调函数,你可以通过返回的`UMSocialResponseEntity`对象的`responseType`类型来对不同的请求来做处理。
  115. @see `UMSocialResponseEntity.h`
  116. */
  117. @protocol UMSocialDataDelegate <NSObject>
  118. /**
  119. 进行网络请求之后得到的回调方法
  120. @param response 回调返回一个`UMSResponseEntity`对象
  121. */
  122. -(void)didFinishGetUMSocialDataResponse:(UMSocialResponseEntity *)response;
  123. @end
  124. typedef void (^UMSocialDataServiceCompletion)(UMSocialResponseEntity * response);
  125. @class CLLocation;
  126. /**
  127. 底层数据接口对象,用一个`UMSocialData`来初始化,此对象的方法有在直接发送微博、发送评论等。可以通过`socialData`属性来获取分享数、评论数,设置分享内嵌文字等。
  128. */
  129. @interface UMSocialDataService : NSObject
  130. ///---------------------------------------
  131. /// @name 属性
  132. ///---------------------------------------
  133. @property (nonatomic, copy) UMSocialDataServiceCompletion completion;
  134. /**
  135. 通过`UMSocialData`对象,可以设置分享文字、图片,并获取到分享数、微博账号等属性
  136. */
  137. @property (nonatomic, retain) UMSocialData *socialData;
  138. /**
  139. 设置实现了`<UMSocialDataDelegate>`的对象
  140. */
  141. @property (nonatomic, readonly) id <UMSocialDataDelegate> socialDataDelegate;
  142. ///---------------------------------------
  143. /// @name 对象初始化和设置方法
  144. ///---------------------------------------
  145. /**
  146. 返回一个以[UMSocialData defaultData]来做初始化参数的`UMSocialDataService`对象
  147. @return `UMSocialDataService`的默认初始化对象
  148. */
  149. +(UMSocialDataService *)defaultDataService;
  150. /**
  151. 初始化一个`UMSocialDataService`对象
  152. @param socialData 一个`UMSocialData`对象
  153. @return 初始化对象
  154. */
  155. - (id)initWithUMSocialData:(UMSocialData *)socialData;
  156. /*!
  157. 设置实现了`<UMSocialDataDelegate>`的对象, 如果在此视图设置了delegate,离开此视图的时候要设置为nil
  158. @param delegate 实现了`<UMSocialDataDelegate>`的对象
  159. */
  160. - (void)setUMSocialDelegate:(id <UMSocialDataDelegate>)delegate;
  161. /**
  162. 获取微博分享数、评论数等数据
  163. @param completion 获取到数据之后执行的block对象,返回数据放在completion.data
  164. */
  165. -(void)requestSocialDataWithCompletion:(UMSocialDataServiceCompletion)completion;
  166. /**
  167. Deprecated APIs
  168. 发送微博内容到多个微博平台
  169. @param platformTypes 分享到的平台,数组的元素是`UMSocialSnsPlatformManager.h`定义的平台名的常量字符串,例如`UMShareToSina`,`UMShareToTencent`等。
  170. @param content 分享的文字内容
  171. @param image 分享的图片
  172. @param location 分享的地理位置信息
  173. @param urlResource 图片、音乐、视频等url资源
  174. @param completion 发送完成执行的block对象
  175. */
  176. - (void)postSNSWithTypes:(NSArray *)platformTypes
  177. content:(NSString *)content
  178. image:(id)image
  179. location:(CLLocation *)location
  180. urlResource:(UMSocialUrlResource *)urlResource
  181. completion:(UMSocialDataServiceCompletion)completion;
  182. /**
  183. 发送微博内容到多个微博平台
  184. @param platformTypes 分享到的平台,数组的元素是`UMSocialSnsPlatformManager.h`定义的平台名的常量字符串,例如`UMShareToSina`,`UMShareToTencent`等。
  185. @param content 分享的文字内容
  186. @param image 分享的图片,可以传入UIImage类型或者NSData类型
  187. @param location 分享的地理位置信息
  188. @param urlResource 图片、音乐、视频等url资源
  189. @param completion 发送完成执行的block对象
  190. @param presentedController 如果发送的平台微博只有一个并且没有授权,传入要授权的viewController,将弹出授权页面,进行授权。可以传nil,将不进行授权。
  191. */
  192. - (void)postSNSWithTypes:(NSArray *)platformTypes
  193. content:(NSString *)content
  194. image:(id)image
  195. location:(CLLocation *)location
  196. urlResource:(UMSocialUrlResource *)urlResource
  197. presentedController:(UIViewController *)presentedController
  198. completion:(UMSocialDataServiceCompletion)completion;
  199. /**
  200. 如果当前`UMSocialData`没有喜欢的话,发送喜欢,否则取消喜欢
  201. @param completion 获取到数据之后执行的block对象
  202. */
  203. - (void)postAddLikeOrCancelWithCompletion:(UMSocialDataServiceCompletion)completion;
  204. /**
  205. 发送评论
  206. @param content 评论的文字内容
  207. @param completion 获取到数据之后执行的block对象
  208. */
  209. - (void)postCommentWithContent:(NSString *)content completion:(UMSocialDataServiceCompletion)completion;
  210. /**
  211. 发送评论
  212. @param content 评论的文字内容
  213. @param image 评论并发送到微博的图片
  214. @param templateText 评论并发送到微博跟在微博正文后面用//分隔的文字
  215. @param location 评论的地理位置信息
  216. @param shareToSNS 评论并分享到微博平台,key为微博名,定义在`UMSocialSnsPlatformManager.h`中的`UMShareToSina`等,值为相应的usid
  217. @param completion 获取到数据之后执行的block对象
  218. */
  219. -(void)postCommentWithContent:(NSString *)content
  220. image:(UIImage *)image
  221. templateText:(NSString *)templateText
  222. location:(CLLocation *)location
  223. shareToSNSWithUsid:(NSDictionary *)shareToSNS
  224. completion:(UMSocialDataServiceCompletion)completion;
  225. /**
  226. 获取评论
  227. @param lastCommentTime 如果要获取最新的评论数,设置为-1,如果获取指定评论,传入评论在这之前的时间戳
  228. @param completion 获取到数据之后执行的block对象,此block对象的形参内带有请求的评论数据
  229. */
  230. - (void)requestCommentList:(long long)lastCommentTime completion:(UMSocialDataServiceCompletion)completion;
  231. ///---------------------------------------
  232. /// @name 用户账户信息相关网络请求
  233. ///---------------------------------------
  234. /**
  235. 请求获取用户微博账号的数据,获取到的用户数据在回调函数获得,也可以通过已经保存在本地并且更新的`socialData`属性的`socialAccount`属性来获得
  236. @param completion 获取到数据之后执行的block对象,此block对象的形参带啊有请求的用户账号数据
  237. */
  238. - (void)requestSocialAccountWithCompletion:(UMSocialDataServiceCompletion)completion;
  239. /**
  240. 请求解除授权
  241. @param platformType 要解除授权的微博平台
  242. @param completion 请求之后执行的block对象
  243. */
  244. - (void)requestUnOauthWithType:(NSString *)platformType completion:(UMSocialDataServiceCompletion)completion;
  245. /**
  246. 请求绑定账号
  247. @param platformType 要绑定账号的微博平台
  248. @param completion 请求之后执行的block对象
  249. */
  250. - (void)requestBindToSnsWithType:(NSString *)platformType completion:(UMSocialDataServiceCompletion)completion;
  251. /**
  252. 请求解除绑定账号
  253. @param completion 请求之后执行的block对象
  254. */
  255. - (void)requestUnBindToSnsWithCompletion:(UMSocialDataServiceCompletion)completion;
  256. /**
  257. 请求获取用户微博账号的详细数据,获取返回数据和其他方法一样,在<UMSocialDataDelegate>中的`didFinishGetUMSocialDataResponse`返回的`UMSocialResponseEntity`对象,数据部分是`data`属性,为`NSDictionary`类型
  258. @param platformType 要获取微博信息的微博平台
  259. @param completion 请求之后执行的block对象
  260. */
  261. - (void)requestSnsInformation:(NSString *)platformType completion:(UMSocialDataServiceCompletion)completion;
  262. /**
  263. 请求获取用户微博账号的朋友列表,获取返回数据和其他方法一样,在<UMSocialDataDelegate>中的`didFinishGetUMSocialDataResponse`返回的`UMSocialResponseEntity`对象,数据部分是`data`属性,为`NSDictionary`类型
  264. @param platformType 要获取微博信息的微博平台
  265. @param completion 请求之后执行的block对象,block对象的形参内带有请求的好友数据
  266. */
  267. - (void)requestSnsFriends:(NSString *)platformType completion:(UMSocialDataServiceCompletion)completion;
  268. /**
  269. 请求添加关注
  270. @param platformType 要添加关注的微博平台,目前添加关注功能只支持新浪微博和腾讯微博
  271. @param usids 被关注的usid号
  272. @param completion 请求之后执行的block对象
  273. */
  274. - (void)requestAddFollow:(NSString *)platformType followedUsid:(NSArray *)usids completion:(UMSocialDataServiceCompletion)completion;
  275. /**
  276. 检测用户在各个开放平台上的token是否有效,失效的情况包括token过期,用户手动解除授权,用户修改密码等情况
  277. @param snsArray 微博平台数组,只支持传入支持授权的平台,包括新浪微博、腾讯微博、QQ空间等。不支持微信等平台。
  278. @return completion 返回结果
  279. */
  280. - (void)requestIsTokenValid:(NSArray *)snsArray completion:(UMSocialDataServiceCompletion)completion;
  281. /**
  282. 分享网页url时获取回流的url替代原始的url进行分享
  283. */
  284. - (void)getInverseFlowsWithPlatForm:(NSString *)platform webUrl:(NSString *)webUrl completion:(UMSocialDataServiceCompletion)completion;
  285. @end