KSUMShareManager.m 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. //
  2. // KSUMShareManager.m
  3. // KulexiuForTeacher
  4. //
  5. // Created by 王智 on 2022/6/14.
  6. //
  7. #import "KSUMShareManager.h"
  8. #import <UMShare/UMShare.h>
  9. #import <UShareUI/UShareUI.h>
  10. #import "TZImageManager.h"
  11. #import "KSImageShareViewController.h"
  12. @interface KSUMShareManager ()<UMSocialShareMenuViewDelegate>
  13. @property (nonatomic, copy) KSShareActionCallback callback;
  14. @property (nonatomic, strong) NSString *shareTitle;
  15. @property (nonatomic, strong) NSString *shareMessage;
  16. @property (nonatomic, strong) NSString *shareUrl;
  17. @property (nonatomic, strong) UIImage *shareImage;
  18. @property (nonatomic, strong) UIViewController *displayCtrl;
  19. @property (nonatomic, assign) KSSHARETYPE shareType;
  20. @property (nonatomic, strong) NSString *saveLinkUrl;
  21. @end
  22. @implementation KSUMShareManager
  23. + (instancetype)shareInstance {
  24. KSUMShareManager *manager = [[self alloc] init];
  25. return manager;
  26. }
  27. + (instancetype)shareInstanceWithImage:(UIImage *)image url:(NSString *)url shareTitle:(NSString *)shareTitle descMessage:(NSString *)descMessage shareType:(KSSHARETYPE)type showInView:(nonnull UIViewController *)ctrl callback:(KSShareActionCallback)callback {
  28. KSUMShareManager *manager = [[self alloc] init];
  29. manager.shareType = type;
  30. manager.shareImage = image;
  31. manager.shareUrl = url;
  32. manager.shareTitle = shareTitle;
  33. manager.shareMessage = descMessage;
  34. manager.displayCtrl = ctrl;
  35. if (callback) {
  36. manager.callback = callback;
  37. }
  38. [UMSocialUIManager removeCustomPlatformWithoutFilted:UMSocialPlatformType_UserDefine_Begin+2];
  39. [manager openShareView];
  40. return manager;
  41. }
  42. + (instancetype)shareInstanceShowWithImage:(UIImage *)image showSaveLink:(BOOL)showSaveLink saveLinkUrl:(NSString *)saveLinkUrl url:(NSString *)url shareTitle:(NSString *)shareTitle descMessage:(NSString *)descMessage shareType:(KSSHARETYPE)type showInView:(UIViewController *)ctrl callback:(KSShareActionCallback)callback {
  43. KSUMShareManager *manager = [[self alloc] init];
  44. manager.shareType = type;
  45. manager.shareImage = image;
  46. manager.shareUrl = url;
  47. manager.shareTitle = shareTitle;
  48. manager.displayCtrl = ctrl;
  49. manager.shareMessage = descMessage;
  50. if (callback) {
  51. manager.callback = callback;
  52. }
  53. manager.saveLinkUrl = saveLinkUrl;
  54. if (showSaveLink) {
  55. [UMSocialUIManager addCustomPlatformWithoutFilted:UMSocialPlatformType_UserDefine_Begin+2 withPlatformIcon:[UIImage imageNamed:@"share_saveLink"] withPlatformName:@"复制链接"];
  56. }
  57. else {
  58. [UMSocialUIManager removeCustomPlatformWithoutFilted:UMSocialPlatformType_UserDefine_Begin+2];
  59. }
  60. [manager openShareView];
  61. return manager;
  62. }
  63. - (void)openShareView {
  64. [UMSocialUIManager setShareMenuViewDelegate:self];
  65. [UMSocialUIManager showShareMenuViewInWindowWithPlatformSelectionBlock:^(UMSocialPlatformType platformType, NSDictionary *userInfo) {
  66. if (platformType == UMSocialPlatformType_UserDefine_Begin+1) { // 分享到群组
  67. if (self.shareType == KSSHARETYPE_IMAGE) {
  68. KSImageShareViewController *shareGroupCtrl = [[KSImageShareViewController alloc] init];
  69. shareGroupCtrl.shareImage = self.shareImage;
  70. MJWeakSelf;
  71. [shareGroupCtrl shareGroupCallback:^(BOOL isSuccess, NSString *descMsg) {
  72. __strong typeof(weakSelf) strongSelf = weakSelf;
  73. if (strongSelf.callback) {
  74. strongSelf.callback(isSuccess,descMsg);
  75. [MBProgressHUD ksShowMessage:descMsg];
  76. }
  77. }];
  78. [self.displayCtrl.navigationController pushViewController:shareGroupCtrl animated:YES];
  79. }
  80. else {
  81. if (self.callback) {
  82. self.callback(NO,@"仅支持图片分享到群组");
  83. [MBProgressHUD ksShowMessage:@"仅支持图片分享到群组"];
  84. }
  85. }
  86. }
  87. else if (platformType == UMSocialPlatformType_UserDefine_Begin+2) { // 图片保存到相册
  88. UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];
  89. pasteboard.string = self.saveLinkUrl;
  90. [MBProgressHUD ksShowMessage:@"复制成功"];
  91. }
  92. else {
  93. //创建分享消息对象
  94. UMSocialMessageObject *messageObject = [UMSocialMessageObject messageObject];
  95. NSString *shareTitle = @"";
  96. if (![NSString isEmptyString:self.shareTitle]) {
  97. shareTitle = self.shareTitle;
  98. }
  99. NSString *descMessage = @"";
  100. if (self.shareMessage) {
  101. descMessage = self.shareMessage;
  102. }
  103. // 创建分享对象
  104. if (self.shareType == KSSHARETYPE_IMAGE) {
  105. UMShareImageObject *shareObj = [UMShareImageObject shareObjectWithTitle:shareTitle descr:descMessage thumImage:[UIImage imageNamed:@"shareImage"]];
  106. shareObj.shareImage = self.shareImage;
  107. //分享消息对象设置分享内容对象
  108. messageObject.shareObject = shareObj;
  109. }
  110. else if (self.shareType == KSSHARETYPE_VODEO) {
  111. UMShareWebpageObject *shareObj = [UMShareWebpageObject shareObjectWithTitle:shareTitle descr:descMessage thumImage:[UIImage imageNamed:@"shareImage"]];
  112. // NSString *shareUrl = [self.shareUrl stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
  113. shareObj.webpageUrl = self.shareUrl;
  114. //分享消息对象设置分享内容对象
  115. messageObject.shareObject = shareObj;
  116. }
  117. //调用分享接口
  118. [[UMSocialManager defaultManager] shareToPlatform:platformType messageObject:messageObject currentViewController:nil completion:^(id data, NSError *error) {
  119. if (error) {
  120. NSLog(@"************分享失败 %@*********",error);
  121. if (self.callback) {
  122. self.callback(NO, @"分享失败");
  123. [MBProgressHUD ksShowMessage:@"分享失败"];
  124. }
  125. }else{
  126. if ([data isKindOfClass:[UMSocialShareResponse class]]) {
  127. UMSocialShareResponse *resp = data;
  128. //分享结果消息
  129. NSLog(@"************分享成功 %@*********",resp.message);
  130. if (self.callback) {
  131. self.callback(YES,@"分享成功");
  132. [MBProgressHUD ksShowMessage:@"分享成功"];
  133. }
  134. }else{
  135. NSLog(@"response data is %@",data);
  136. }
  137. }
  138. }];
  139. }
  140. }];
  141. }
  142. @end