UMSocialManager.h 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209
  1. //
  2. // UMComPlatformProviderManager.h
  3. // UMSocialSDK
  4. //
  5. // Created by 张军华 on 16/8/5.
  6. // Copyright © 2016年 dongjianxiong. All rights reserved.
  7. //
  8. #import <Foundation/Foundation.h>
  9. #import "UMSocialPlatformProvider.h"
  10. #import "UMSocialGlobal.h"
  11. @class UMSocialMessageObject;
  12. @interface UMSocialManager : NSObject
  13. +(instancetype)defaultManager;
  14. /**
  15. 返回当前有效(安装并是可用的)平台列表
  16. */
  17. @property(nonatomic,readonly,strong) NSArray * platformTypeArray;
  18. /**
  19. * 打开日志
  20. *
  21. * @param isOpen YES代表打开,No代表关闭
  22. */
  23. -(void) openLog:(BOOL)isOpen;
  24. /**
  25. * 设置平台的appkey
  26. *
  27. * @param platformType 平台类型 @see UMSocialPlatformType
  28. * @param appKey 第三方平台的appKey(QQ平台为appID)
  29. * @param appSecret 第三方平台的appSecret(QQ平台为appKey)
  30. * @param redirectURL redirectURL
  31. */
  32. - (BOOL)setPlaform:(UMSocialPlatformType)platformType
  33. appKey:(NSString *)appKey
  34. appSecret:(NSString *)appSecret
  35. redirectURL:(NSString *)redirectURL;
  36. /**
  37. * 设置三方平台主动拉起app的行为
  38. *
  39. * @param platformType 平台类型 @see UMSocialPlatformType
  40. * @param completion 回调
  41. * @note SDK FORM 6.9.7.目前针对微信小程序主动唤醒app的场景
  42. */
  43. -(void)setLauchFromPlatform:(UMSocialPlatformType)platformType
  44. completion:(UMSocialLaunchFromPlatformCompletionHandler)completion;
  45. /**
  46. * 设置分享平台
  47. *
  48. * @param platformType 平台类型 @see UMSocialPlatformType
  49. * @param messageObject 分享的content @see UMSocialMessageObject
  50. * @param currentViewController 用于弹出类似邮件分享、短信分享等这样的系统页面
  51. * @param completion 回调
  52. * @discuss currentViewController 只正对sms,email等平台需要传入viewcontroller的平台,其他不需要的平台可以传入nil
  53. */
  54. - (void)shareToPlatform:(UMSocialPlatformType)platformType
  55. messageObject:(UMSocialMessageObject *)messageObject
  56. currentViewController:(id)currentViewController
  57. completion:(UMSocialRequestCompletionHandler)completion;
  58. /**
  59. * 取消授权
  60. *
  61. * @param platformType 平台类型 @see UMSocialPlatformType
  62. * @param completion 回调
  63. */
  64. - (void)cancelAuthWithPlatform:(UMSocialPlatformType)platformType
  65. completion:(UMSocialRequestCompletionHandler)completion;
  66. /**
  67. * 授权并获取用户信息
  68. * @param platformType 平台类型 @see UMSocialPlatformType
  69. * @param currentViewController 用于弹出类似邮件分享、短信分享等这样的系统页面
  70. * @param completion 回调
  71. */
  72. - (void)getUserInfoWithPlatform:(UMSocialPlatformType)platformType
  73. currentViewController:(id)currentViewController
  74. completion:(UMSocialRequestCompletionHandler)completion;
  75. /**
  76. * 获得从sso或者web端回调到本app的回调
  77. *
  78. * @param url 第三方sdk的打开本app的回调的url
  79. *
  80. * @return 是否处理 YES代表处理成功,NO代表不处理
  81. */
  82. -(BOOL)handleOpenURL:(NSURL *)url;
  83. /**
  84. * 获得从sso或者web端回调到本app的回调
  85. *
  86. * @param url 第三方sdk的打开本app的回调的url
  87. * @param sourceApplication 回调的源程序
  88. * @param annotation annotation
  89. *
  90. * @return 是否处理 YES代表处理成功,NO代表不处理
  91. *
  92. * @note 此函数在6.3版本加入
  93. */
  94. -(BOOL)handleOpenURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation;
  95. /**
  96. * 获得从sso或者web端回调到本app的回调
  97. *
  98. * @param url 第三方sdk的打开本app的回调的url
  99. * @param options 回调的参数
  100. *
  101. * @return 是否处理 YES代表处理成功,NO代表不处理
  102. *
  103. * @note 此函数在6.3版本加入
  104. */
  105. -(BOOL)handleOpenURL:(NSURL *)url options:(NSDictionary*)options;
  106. /**
  107. * UniversalLink回调到本app的回调
  108. *
  109. * @param userActivity NSUserActivity的入参
  110. * @param options 可选的信息,目前传入nil
  111. *
  112. * @return 是否处理 YES代表处理成功,NO代表不处理
  113. * @note 6.9.7版本加入
  114. */
  115. -(BOOL)handleUniversalLink:(id)userActivity options:(NSDictionary*)options;
  116. -(BOOL)handleUniversalLink:(id)userActivity options:(NSDictionary*)options platform:(UMSocialPlatformType)platformType;
  117. /**
  118. * 动态的增加用户自定义的PlatformProvider
  119. *
  120. * @param userDefinePlatformProvider 用户自定义的userDefinePlatformProvider必须实现UMSocialPlatformProvider
  121. * @param platformType 平台类型 @see platformType platformType的有效范围在 (UMSocialPlatformType_UserDefine_Begin,UMSocialPlatformType_UserDefine_End)之间
  122. *
  123. * @return YES代表返回成功,NO代表失败
  124. * @disuss 在调用此函数前,必须先设置对应的平台的配置信息 @see - (BOOL)setPlaform:(UMSocialPlatformType)platformType appKey:(NSString *)appKey appSecret:(NSString *)appSecret redirectURL:(NSString *)redirectURL;
  125. */
  126. -(BOOL)addAddUserDefinePlatformProvider:(id<UMSocialPlatformProvider>)userDefinePlatformProvider
  127. withUserDefinePlatformType:(UMSocialPlatformType)platformType;
  128. /**
  129. * 获得对应的平台类型platformType的PlatformProvider
  130. *
  131. * @param platformType 平台类型 @see platformType
  132. *
  133. * @return 返回继承UMSocialPlatformProvider的handle
  134. */
  135. -(id<UMSocialPlatformProvider>)platformProviderWithPlatformType:(UMSocialPlatformType)platformType;
  136. /**
  137. * 动态的删除不想显示的平台,不管是预定义还是用户自定义的
  138. *
  139. * @param platformTypeArray 平台类型数组
  140. */
  141. -(void) removePlatformProviderWithPlatformTypes:(NSArray *)platformTypeArray;
  142. /**
  143. * 动态的删除PlatformProvider,不管是预定义还是用户自定义的
  144. *
  145. * @param platformType 平台类型 @see UMSocialPlatformType
  146. */
  147. -(void) removePlatformProviderWithPlatformType:(UMSocialPlatformType)platformType;
  148. /**
  149. * 平台是否安装
  150. *
  151. * @param platformType 平台类型 @see UMSocialPlatformType
  152. *
  153. * @return YES 代表安装,NO 代表未安装
  154. * @note 调用前请检查是否配置好平台相关白名单: http://dev.umeng.com/social/ios/quick-integration#1_3
  155. * 在判断QQ空间的App的时候,QQApi判断会出问题
  156. */
  157. -(BOOL) isInstall:(UMSocialPlatformType)platformType;
  158. /**
  159. * 当前平台是否支持分享
  160. *
  161. * @param platformType 平台类型 @see UMSocialPlatformType
  162. *
  163. * @return YES代表支持,NO代表不支持
  164. */
  165. -(BOOL) isSupport:(UMSocialPlatformType)platformType;
  166. #pragma mark - NOT COMMON METHOD
  167. /**
  168. * 授权平台 (此方法仅获取授权token,不包含获取用户信息。推荐使用上面的 getUserInfoWithPlatform... 接口获取授权及用户信息)
  169. *
  170. * @param platformType 平台类型 @see UMSocialPlatformType
  171. * @param currentViewController 用于弹出类似邮件分享、短信分享等这样的系统页面
  172. * @discuss currentViewController 只对sms,email等平台需要传入viewcontroller的平台,其他不需要的平台可以传入nil
  173. * @param completion 回调
  174. */
  175. - (void)authWithPlatform:(UMSocialPlatformType)platformType
  176. currentViewController:(UIViewController *)currentViewController
  177. completion:(UMSocialRequestCompletionHandler)completion;
  178. @end