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

具体使用系统UIActivityViewController,完整代码如下:
- -(void)shareAny:(NSString *)text url:(NSString *)_url imagePath:(NSString *)_imagePath
- {
- NSLog(@"shareAny, text:%@, url:%@, imagePath:%@", text, _url, _imagePath);
- NSString *textToShare = text;//需要分享的文本内容
- NSArray *activityItems = @[textToShare];
-
- if (_url != nil) {
- NSURL *urlToShare = [NSURL URLWithString:_url];//需要分享的URL
- activityItems = @[textToShare, urlToShare];
- }
-
- if (_imagePath != nil) {
- UIImage *imageToShare = [UIImage imageWithContentsOfFile:_imagePath];//需要分享的图片
- activityItems = @[textToShare, imageToShare];
- }
-
- UIActivityViewController *activityVC = [[UIActivityViewController alloc]initWithActivityItems:activityItems applicationActivities:nil];
- // 禁用分享渠道
- activityVC.excludedActivityTypes = @[UIActivityTypePrint, UIActivityTypeCopyToPasteboard,
- UIActivityTypeAssignToContact,UIActivityTypeSaveToCameraRoll];
- // 分享之后的回调
- activityVC.completionWithItemsHandler = ^(UIActivityType _Nullable activityType, BOOL completed, NSArray * _Nullable returnedItems, NSError * _Nullable activityError) {
- if (completed) {
- NSLog(@"成功分享,分享平台%@",activityType);
- }else{
- NSLog(@"取消分享");
- };
- };
-
- [self.viewController presentViewController:activityVC animated:true completion:nil];
- }
- - (void) whatsappShareText:(NSString*)text {
- NSLog(@"whatsapp share text %@", text);
- NSString *url = [NSString stringWithFormat:@"whatsapp://send?text=%@", [text stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLHostAllowedCharacterSet]]];
- NSURL *whatsappURL = [NSURL URLWithString: url];
-
- if ([[UIApplication sharedApplication] canOpenURL: whatsappURL]) {
- [[UIApplication sharedApplication] openURL: whatsappURL];
- } else {
- // Cannot open whatsapp
- NSLog(@"whatsapp cant't open");
- }
- }
- - (void) facebookShareUrl:(NSString *)url {
- NSLog(@"facebook share url %@", url);
- if(![self checkAPPIsExist:@"fb"]) {
- NSLog(@"facebook is not exits");
- return;;
- }
-
- // 首先判断某个平台是否可用(如果未绑定账号则不可用)
- if (![SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) {
- NSLog(@"facebook is not available");
- return;
- }
-
- // 创建控制器,并设置ServiceType
- SLComposeViewController *composeVC = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook];
- // 添加要分享的url
- [composeVC addURL:[NSURL URLWithString:url]];
- // 弹出分享控制器
- [self.viewController presentViewController:composeVC animated:YES completion:nil];
- // 监听用户点击事件
- composeVC.completionHandler = ^(SLComposeViewControllerResult result){
- if (result == SLComposeViewControllerResultDone) {
- NSLog(@"facebook share send");
- }
- else if (result == SLComposeViewControllerResultCancelled)
- {
- NSLog(@"facebook share cancel");
- }
- };
- }
-
- - (void) facebookShareImage:(NSString *)imagePath {
- NSLog(@"facebook share image %@", imagePath);
- if(![self checkAPPIsExist:@"fb"]) {
- NSLog(@"facebook is not exits");
- return;
- }
-
- // 首先判断某个平台是否可用(如果未绑定账号则不可用)
- if (![SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) {
- NSLog(@"facebook is not available");
- return;
- }
-
- // 创建控制器,并设置ServiceType
- SLComposeViewController *composeVC = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook];
- // 添加要分享的图片
- [composeVC addImage:[UIImage imageWithContentsOfFile:imagePath]];
- // 弹出分享控制器
- [self.viewController presentViewController:composeVC animated:YES completion:nil];
- // 监听用户点击事件
- composeVC.completionHandler = ^(SLComposeViewControllerResult result){
- if (result == SLComposeViewControllerResultDone) {
- NSLog(@"facebook share send");
- }
- else if (result == SLComposeViewControllerResultCancelled)
- {
- NSLog(@"facebook share cancel");
- }
- };
- }
-
- //判断是否安装APP
- -(BOOL)checkAPPIsExist:(NSString*)URLScheme{
- NSURL* url;
- if ([URLScheme containsString:@"://"]) {
- url = [NSURL URLWithString:[NSString stringWithFormat:@"%@",URLScheme]];
- } else {
- url = [NSURL URLWithString:[NSString stringWithFormat:@"%@://",URLScheme]];
- }
- if ([[UIApplication sharedApplication] canOpenURL:url]){
- return YES;
- } else {
- return NO;
- }
- }