UMSocialSnsPlatformManager.h 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315
  1. //
  2. // UMSocialSnsPlatformManager.h
  3. // SocialSDK
  4. //
  5. // Created by yeahugo on 13-1-15.
  6. // Copyright (c) 2013年 Umeng. All rights reserved.
  7. //
  8. #import <Foundation/Foundation.h>
  9. #import "UMSocialControllerService.h"
  10. /**
  11. 新浪微博
  12. */
  13. extern NSString *const UMShareToSina;
  14. /**
  15. 腾讯微博
  16. */
  17. extern NSString *const UMShareToTencent;
  18. /**
  19. 人人网
  20. */
  21. extern NSString *const UMShareToRenren;
  22. /**
  23. 豆瓣
  24. */
  25. extern NSString *const UMShareToDouban;
  26. /**
  27. QQ空间
  28. */
  29. extern NSString *const UMShareToQzone;
  30. /**
  31. 邮箱
  32. */
  33. extern NSString *const UMShareToEmail;
  34. /**
  35. 短信
  36. */
  37. extern NSString *const UMShareToSms;
  38. /**
  39. 微信好友
  40. */
  41. extern NSString *const UMShareToWechatSession;
  42. /**
  43. 微信朋友圈
  44. */
  45. extern NSString *const UMShareToWechatTimeline;
  46. /**
  47. 微信收藏
  48. */
  49. extern NSString *const UMShareToWechatFavorite;
  50. /**
  51. 支付宝好友
  52. */
  53. extern NSString *const UMShareToAlipaySession;
  54. /**
  55. 手机QQ
  56. */
  57. extern NSString *const UMShareToQQ;
  58. /**
  59. Facebook
  60. */
  61. extern NSString *const UMShareToFacebook;
  62. /**
  63. Twitter
  64. */
  65. extern NSString *const UMShareToTwitter;
  66. /**
  67. 易信好友
  68. */
  69. extern NSString *const UMShareToYXSession;
  70. /**
  71. 易信朋友圈
  72. */
  73. extern NSString *const UMShareToYXTimeline;
  74. /**
  75. 来往好友
  76. */
  77. extern NSString *const UMShareToLWSession;
  78. /**
  79. 来往朋友圈
  80. */
  81. extern NSString *const UMShareToLWTimeline;
  82. /**
  83. 分享到Instragram
  84. */
  85. extern NSString *const UMShareToInstagram;
  86. /**
  87. 分享到Whatsapp
  88. */
  89. extern NSString *const UMShareToWhatsapp;
  90. /**
  91. 分享到Line
  92. */
  93. extern NSString *const UMShareToLine;
  94. /**
  95. 分享到Tumblr
  96. */
  97. extern NSString *const UMShareToTumblr;
  98. /**
  99. 分享到Pinterest
  100. */
  101. extern NSString *const UMShareToPinterest;
  102. /**
  103. 分享到KakaoTalk
  104. */
  105. extern NSString *const UMShareToKakaoTalk;
  106. /**
  107. 分享到Flickr
  108. */
  109. extern NSString *const UMShareToFlickr;
  110. /**
  111. 分享平台
  112. */
  113. typedef enum {
  114. UMSocialSnsTypeNone = 0,
  115. UMSocialSnsTypeSina = 9, //sina weibo
  116. UMSocialSnsTypeQzone = 10,
  117. UMSocialSnsTypeTenc, //tencent weibo
  118. UMSocialSnsTypeRenr, //renren
  119. UMSocialSnsTypeDouban, //douban
  120. UMSocialSnsTypeWechatSession,
  121. UMSocialSnsTypeWechatTimeline,
  122. UMSocialSnsTypeWechatFavorite,
  123. UMSocialSnsTypeEmail,
  124. UMSocialSnsTypeSms,
  125. UMSocialSnsTypeMobileQQ,
  126. UMSocialSnsTypeFacebook,
  127. UMSocialSnsTypeTwitter,
  128. UMSocialSnsTypeYiXinSession,
  129. UMSocialSnsTypeYiXinTimeline,
  130. UMSocialSnsTypeLaiWangSession,
  131. UMSocialSnsTypeLaiWangTimeline,
  132. UMSocialSnsTypeInstagram,
  133. UMSocialSnsTypeWhatsApp,
  134. UMSocialSnsTypeLine,
  135. UMSocialSnsTypeTumblr,
  136. UMSocialSnsTypeKakaoTalk,
  137. UMSocialSnsTypeFlickr,
  138. UMSocialSnsTypePinterest,
  139. UMSocialSnsTypeAlipaySession,
  140. UMSocialSnsTypeNew
  141. } UMSocialSnsType;
  142. @class UMSocialControllerService;
  143. /** 定义响应点击平台后的block对象
  144. @param presentingController 点击后弹出的分享页面或者授权页面所在的UIViewController对象
  145. @param socialControllerService 可以用此对象的socialControllerService.socialData可以获取分享内嵌文字、内嵌图片,分享次数等
  146. @param isPresentInController 如果YES代表弹出(present)到当前UIViewController,否则push到UIViewController的navigationController
  147. */
  148. typedef void (^UMSocialSnsPlatformClickHandler)(UIViewController *presentingController, UMSocialControllerService * socialControllerService, BOOL isPresentInController);
  149. /** 定义响应点击各平台授权登录后的block对象
  150. @param presentingController 点击后弹出的分享页面或者授权页面所在的UIViewController对象
  151. @param socialControllerService 可以用此对象的socialControllerService.socialData可以获取分享内嵌文字、内嵌图片,分享次数等
  152. @param isPresentInController 如果YES代表弹出(present)到当前UIViewController,否则push到UIViewController的navigationController
  153. @param completion 授权完成之后的回调对象,返回的response参数表示成功与否和拿到的授权信息
  154. */
  155. typedef void (^UMSocialSnsPlatformLoginHandler)(UIViewController *presentingController, UMSocialControllerService * socialControllerService, BOOL isPresentInController, UMSocialDataServiceCompletion completion);
  156. /**
  157. Sns平台类,用`platformName`作为标识,指定显示名称、显示的图片,点击之后的响应。
  158. */
  159. @interface UMSocialSnsPlatform : NSObject
  160. ///---------------------------------------
  161. /// @name 平台属性
  162. ///---------------------------------------
  163. /**
  164. 平台标示符
  165. */
  166. @property (nonatomic, copy) NSString *platformName;
  167. /**
  168. 显示名称
  169. */
  170. @property (nonatomic, copy) NSString *displayName;
  171. /**
  172. 登录名称
  173. */
  174. @property (nonatomic, copy) NSString *loginName;
  175. /**
  176. 分享类型
  177. */
  178. @property (nonatomic, assign) UMSocialSnsType shareToType;
  179. /**
  180. 大图片的文件名,用于`UMSocialIconActionSheet`
  181. */
  182. @property (nonatomic, copy) NSString *bigImageName;
  183. /**
  184. 小图片的文件名,用于分享列表、登录、个人中心、评论编辑页面等
  185. */
  186. @property (nonatomic, copy) NSString *smallImageName;
  187. /**
  188. 无色的小图片文件名,用于评论编辑页面显示没有授权状态
  189. */
  190. @property (nonatomic ,copy) NSString *smallImageOffName;
  191. /**
  192. 处理点击分享事件后的block对象
  193. */
  194. @property(nonatomic, copy) UMSocialSnsPlatformClickHandler snsClickHandler;
  195. /**
  196. 处理点击登录事件后的block对象
  197. */
  198. @property(nonatomic, copy) UMSocialSnsPlatformLoginHandler loginClickHandler;
  199. /**
  200. 是否需要登录授权
  201. */
  202. @property(nonatomic, assign) BOOL needLogin;
  203. /**
  204. 标志是否有webView授权
  205. */
  206. @property(nonatomic, assign) BOOL haveWebViewAuth;
  207. /**
  208. 初始化方法
  209. @param platformName 作为该对象标识的平台名
  210. */
  211. -(id)initWithPlatformName:(NSString *)platformName;
  212. @end
  213. /*
  214. Sns平台类管理者类
  215. */
  216. @interface UMSocialSnsPlatformManager : NSObject
  217. /**
  218. sns平台配置数组,此数组由allSnsArray转换,只包含平台名作为元素
  219. */
  220. @property (nonatomic, readonly) NSArray *allSnsValuesArray;
  221. /**
  222. 该NSDictionary以各个平台名为key,UMSocialPlatform对象为value
  223. */
  224. @property (nonatomic, retain) NSDictionary *allSnsPlatformDictionary;
  225. /**
  226. `UMSocialSnsPlatformManager`的单例方法
  227. @return `UMSocialSnsPlatformManager`的单例对象
  228. */
  229. + (UMSocialSnsPlatformManager *)sharedInstance;
  230. /**
  231. 根据平台名,返回平台对象
  232. @param platformName sns平台名
  233. @return UMSocialSnsPlatform 平台对象
  234. */
  235. +(UMSocialSnsPlatform *)getSocialPlatformWithName:(NSString *)snsName;
  236. /**
  237. 根据平台枚举变量,返回平台对象
  238. @param UMSocialSnsType sns平台枚举变量
  239. @return NSString 平台名
  240. */
  241. + (NSString *)getSnsPlatformString:(UMSocialSnsType)socialSnsType;
  242. /**
  243. 把配置平台的次序号转换成平台名
  244. @param snsIndex 使用的平台顺序,使用的平台配置在UMSocialConfigDelegate,例如`- (NSArray *)shareToPlatforms;`返回的是UMSocialSnsTypeSina和UMSocialSnsTypeTenc,UMSocialSnsTypeSina就是0,UMSocialSnsTypeTenc就是1
  245. @return 平台名字符串
  246. */
  247. +(NSString *)getSnsPlatformStringFromIndex:(NSInteger)snsIndex;
  248. @end