UMSocialControllerService.h 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203
  1. //
  2. // UMSocialUIController.h
  3. // SocialSDK
  4. //
  5. // Created by Jiahuan Ye on 12-9-12.
  6. // Copyright (c) umeng.com All rights reserved.
  7. //
  8. #import <Foundation/Foundation.h>
  9. #import "UMSocialDataService.h"
  10. #define kTagSocialIconActionSheet 1013
  11. #define kTagSocialShakeView 1014
  12. @class UMSocialControllerService;
  13. /**
  14. `UMSocialControllerService`对象用到的一些回调方法,包括分享完成、授权完成、评论完成等事件,和关闭授权页面、分享页面、评论页面等事件。
  15. */
  16. @protocol UMSocialUIDelegate <NSObject>
  17. @optional
  18. /**
  19. 自定义关闭授权页面事件
  20. @param navigationCtroller 关闭当前页面的navigationCtroller对象
  21. */
  22. -(BOOL)closeOauthWebViewController:(UINavigationController *)navigationCtroller socialControllerService:(UMSocialControllerService *)socialControllerService;
  23. /**
  24. 关闭当前页面之后
  25. @param fromViewControllerType 关闭的页面类型
  26. */
  27. -(void)didCloseUIViewController:(UMSViewControllerType)fromViewControllerType;
  28. /**
  29. 各个页面执行授权完成、分享完成、或者评论完成时的回调函数
  30. @param response 返回`UMSocialResponseEntity`对象,`UMSocialResponseEntity`里面的viewControllerType属性可以获得页面类型
  31. */
  32. -(void)didFinishGetUMSocialDataInViewController:(UMSocialResponseEntity *)response;
  33. /**
  34. 点击分享列表页面,之后的回调方法,你可以通过判断不同的分享平台,来设置分享内容。
  35. 例如:
  36. -(void)didSelectSocialPlatform:(NSString *)platformName withSocialData:(UMSocialData *)socialData
  37. {
  38. if (platformName == UMShareToSina) {
  39. socialData.shareText = @"分享到新浪微博的文字内容";
  40. }
  41. else{
  42. socialData.shareText = @"分享到其他平台的文字内容";
  43. }
  44. }
  45. @param platformName 点击分享平台
  46. @prarm socialData 分享内容
  47. */
  48. -(void)didSelectSocialPlatform:(NSString *)platformName withSocialData:(UMSocialData *)socialData;
  49. /**
  50. 配置点击分享列表后是否弹出分享内容编辑页面,再弹出分享,默认需要弹出分享编辑页面
  51. @result 设置是否需要弹出分享内容编辑页面,默认需要
  52. */
  53. -(BOOL)isDirectShareInIconActionSheet;
  54. @end
  55. /**
  56. 用此类的方法可以得到分享的有关UI对象,例如分享列表、评论列表、分享编辑页、分享授权页、个人中心页面等。返回都是`UINavigationController`对象,建议把这个对象present到你要添加到的`UIViewController`上
  57. */
  58. @interface UMSocialControllerService : NSObject
  59. /**
  60. 与`UMSocialControllerService`对象对应的`UMSocialData`对象,可以通过该对象设置分享内嵌文字、图片,获取分享数等属性
  61. */
  62. @property (nonatomic, retain) UMSocialData *socialData;
  63. /**
  64. 用`UMSocialDataService`对象,可以调用发送微博、评论等数据级的方法
  65. */
  66. @property (nonatomic, readonly) UMSocialDataService *socialDataService;
  67. /**
  68. 当前返回的`UINavigationController`对象
  69. */
  70. @property (nonatomic, assign) UIViewController *currentViewController;
  71. /**
  72. 当前返回的`UIViewController`对象
  73. */
  74. @property (nonatomic, assign) UINavigationController *currentNavigationController;
  75. /**
  76. 当前`<UMSocialUIDelegate>`对象,此对象可以获取到授权完成,关闭页面等状态,详情看`UMSocialUIDelegate`的定义
  77. */
  78. @property (nonatomic, assign) id <UMSocialUIDelegate> socialUIDelegate;
  79. /**
  80. 当前sns平台名
  81. */
  82. @property (nonatomic, retain) NSString *currentSnsPlatformName;
  83. /**
  84. 下一个页面类型
  85. */
  86. @property (nonatomic, assign) UMSViewControllerType nextViewController;
  87. /**
  88. 返回一个以[UMSocialData defaultData]来做初始化参数的`UMSocialControllerService`对象
  89. @return `UMSocialControllerService`的默认初始化对象
  90. */
  91. +(UMSocialControllerService *)defaultControllerService;
  92. ///---------------------------------------
  93. /// @name 初始化方法和设置
  94. ///---------------------------------------
  95. /**
  96. 初始化一个`UMSocialControllerService`对象
  97. @param socialData `UMSocialData`对象
  98. @return 初始化对象
  99. */
  100. - (id)initWithUMSocialData:(UMSocialData *)socialData;
  101. /**
  102. 设置分享内容和回调对象
  103. @param shareText 分享内嵌文字
  104. @param shareImage 分享内嵌图片,可以传入UIImage或者NSData类型
  105. @param socialUIDelegate 分享回调对象
  106. */
  107. - (void)setShareText:(NSString *)shareText shareImage:(id)shareImage
  108. socialUIDelegate:(id<UMSocialUIDelegate>)socialUIDelegate;
  109. ///---------------------------------------
  110. /// @name 获得评论列表、分享列表等UINavigationController
  111. ///---------------------------------------
  112. /**
  113. 得到一个分享列表页面,该列表出现的分享列表可以通过实现`UMSocialConfig`的类方法来自定义
  114. @return `UINavigationController`对象
  115. */
  116. - (UINavigationController *)getSocialShareListController;
  117. /**
  118. 分享编辑页面
  119. @param platformType 要编辑的微博平台,并支持UMSocialSnsTypeEmail和UMSocialSnsTypeSms返回编辑Email页面和短信页面,不支持邮箱或者短信的设备分别返回nil
  120. @return `UINavigationController`对象
  121. */
  122. - (UINavigationController *)getSocialShareEditController:(NSString *)platformType;
  123. /**
  124. 授权页面,如果你要想得到授权完成之后的事件,你可以实现`UMSocialUIDelegate`里面的`-(void)didCloseUIViewController:(UMSViewControllerType)fromViewControllerType;`方法,当授权关闭页面会调用此方法。另外授权完成之后sdk会自动去取个人账户信息,你可以在回调函数里面去到刚刚授权的微博平台的账户信息。
  125. @param shareToType 要授权的微博平台
  126. @return `UINavigationController`对象
  127. */
  128. - (UINavigationController *)getSocialOauthController:(NSString *)platformType;
  129. /**
  130. 获取用以sns各平台icon平铺来展示的分享列表页面对象
  131. @param controller 弹出的分享列表页面,点击sns平台icon之后,出现的分享页面或者授权页面所在的UIViewController
  132. @return 分享列表页面
  133. */
  134. - (id)getSocialIconActionSheetInController:(UIViewController *)controller;
  135. /**
  136. 获取各种页面的`UIViewController`对象
  137. @param viewControllerType 页面类型
  138. @param snsName 编辑页面、授权页面等需要的平台名
  139. @return 页面的`UIViewController`对象
  140. */
  141. - (UIViewController *)getSocialViewController:(UMSViewControllerType)viewControllerType withSnsType:(NSString *)snsName;
  142. -(void)setCurrentViewControllerType:(UMSViewControllerType)viewControllerType;
  143. @end