• ios原生分享


    什么是 ios 系统的原生分享呢,如下图所示

    具体使用系统UIActivityViewController,完整代码如下:

    1. -(void)shareAny:(NSString *)text url:(NSString *)_url imagePath:(NSString *)_imagePath
    2. {
    3. NSLog(@"shareAny, text:%@, url:%@, imagePath:%@", text, _url, _imagePath);
    4. NSString *textToShare = text;//需要分享的文本内容
    5. NSArray *activityItems = @[textToShare];
    6. if (_url != nil) {
    7. NSURL *urlToShare = [NSURL URLWithString:_url];//需要分享的URL
    8. activityItems = @[textToShare, urlToShare];
    9. }
    10. if (_imagePath != nil) {
    11. UIImage *imageToShare = [UIImage imageWithContentsOfFile:_imagePath];//需要分享的图片
    12. activityItems = @[textToShare, imageToShare];
    13. }
    14. UIActivityViewController *activityVC = [[UIActivityViewController alloc]initWithActivityItems:activityItems applicationActivities:nil];
    15. // 禁用分享渠道
    16. activityVC.excludedActivityTypes = @[UIActivityTypePrint, UIActivityTypeCopyToPasteboard,
    17. UIActivityTypeAssignToContact,UIActivityTypeSaveToCameraRoll];
    18. // 分享之后的回调
    19. activityVC.completionWithItemsHandler = ^(UIActivityType _Nullable activityType, BOOL completed, NSArray * _Nullable returnedItems, NSError * _Nullable activityError) {
    20. if (completed) {
    21. NSLog(@"成功分享,分享平台%@",activityType);
    22. }else{
    23. NSLog(@"取消分享");
    24. };
    25. };
    26. [self.viewController presentViewController:activityVC animated:true completion:nil];
    27. }

    分享到WhatsApp

    1. - (void) whatsappShareText:(NSString*)text {
    2. NSLog(@"whatsapp share text %@", text);
    3. NSString *url = [NSString stringWithFormat:@"whatsapp://send?text=%@", [text stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLHostAllowedCharacterSet]]];
    4. NSURL *whatsappURL = [NSURL URLWithString: url];
    5. if ([[UIApplication sharedApplication] canOpenURL: whatsappURL]) {
    6. [[UIApplication sharedApplication] openURL: whatsappURL];
    7. } else {
    8. // Cannot open whatsapp
    9. NSLog(@"whatsapp cant't open");
    10. }
    11. }

    分享到Facebook

    1. - (void) facebookShareUrl:(NSString *)url {
    2. NSLog(@"facebook share url %@", url);
    3. if(![self checkAPPIsExist:@"fb"]) {
    4. NSLog(@"facebook is not exits");
    5. return;;
    6. }
    7. // 首先判断某个平台是否可用(如果未绑定账号则不可用)
    8. if (![SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) {
    9. NSLog(@"facebook is not available");
    10. return;
    11. }
    12. // 创建控制器,并设置ServiceType
    13. SLComposeViewController *composeVC = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook];
    14. // 添加要分享的url
    15. [composeVC addURL:[NSURL URLWithString:url]];
    16. // 弹出分享控制器
    17. [self.viewController presentViewController:composeVC animated:YES completion:nil];
    18. // 监听用户点击事件
    19. composeVC.completionHandler = ^(SLComposeViewControllerResult result){
    20. if (result == SLComposeViewControllerResultDone) {
    21. NSLog(@"facebook share send");
    22. }
    23. else if (result == SLComposeViewControllerResultCancelled)
    24. {
    25. NSLog(@"facebook share cancel");
    26. }
    27. };
    28. }
    29. - (void) facebookShareImage:(NSString *)imagePath {
    30. NSLog(@"facebook share image %@", imagePath);
    31. if(![self checkAPPIsExist:@"fb"]) {
    32. NSLog(@"facebook is not exits");
    33. return;
    34. }
    35. // 首先判断某个平台是否可用(如果未绑定账号则不可用)
    36. if (![SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) {
    37. NSLog(@"facebook is not available");
    38. return;
    39. }
    40. // 创建控制器,并设置ServiceType
    41. SLComposeViewController *composeVC = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook];
    42. // 添加要分享的图片
    43. [composeVC addImage:[UIImage imageWithContentsOfFile:imagePath]];
    44. // 弹出分享控制器
    45. [self.viewController presentViewController:composeVC animated:YES completion:nil];
    46. // 监听用户点击事件
    47. composeVC.completionHandler = ^(SLComposeViewControllerResult result){
    48. if (result == SLComposeViewControllerResultDone) {
    49. NSLog(@"facebook share send");
    50. }
    51. else if (result == SLComposeViewControllerResultCancelled)
    52. {
    53. NSLog(@"facebook share cancel");
    54. }
    55. };
    56. }
    57. //判断是否安装APP
    58. -(BOOL)checkAPPIsExist:(NSString*)URLScheme{
    59. NSURL* url;
    60. if ([URLScheme containsString:@"://"]) {
    61. url = [NSURL URLWithString:[NSString stringWithFormat:@"%@",URLScheme]];
    62. } else {
    63. url = [NSURL URLWithString:[NSString stringWithFormat:@"%@://",URLScheme]];
    64. }
    65. if ([[UIApplication sharedApplication] canOpenURL:url]){
    66. return YES;
    67. } else {
    68. return NO;
    69. }
    70. }

  • 相关阅读:
    uniapp音乐播放整理
    linux0.11-内核启动流程
    解决FeignClient被FallBack后无错误日志打印问题
    新材料企业ERP有几种?能帮助企业解决哪些问题
    从单个/两个向量构建一组正交基底
    笔试强训48天——day22
    切换为root用户后,conda:未找到命令
    SpringMVC06-SpringMVC的视图
    townscaper随机生成城镇算法分析
    c和c++静态库之间如何相互调用
  • 原文地址:https://blog.csdn.net/flash099/article/details/134156684