admin管理员组文章数量:1566221
现在任何一款APP都离不开“分享”,产品设计可能是觉得有分享能更好的推广自己的产品吧。。。
一种是使用UIActivityViewController, 另外一种是使用Social框架中的SLComposeViewController
一、UIActivityViewController
优缺点:
/**
优点:使用简单、不用注册繁杂的分享平台账号、不用导入臃肿的SDK包
缺点:UI可定制性差,只能使用系统提供的固定样式,长相如下。分享的类型受限,只能分享text、url、image。
*/
这种实现相当简单,设备会检测已安装的设备,比如说手机需要安装 QQ 才能分享到QQ。否则在选择分享渠道的时候是没有未安装的APP渠道的。
直接代码:
- (void)shareBtClick
{
NSString *textToShare = @"哈罗大家好,这是分享测试的内容哦,如已看请忽略!如有任何疑问可联系1008611查你话费吧!";
UIImage *imageToShare = [UIImage imageNamed:@"动态(1)@2x.png"];
NSURL *urlToShare = [NSURL URLWithString:@"http://blog.csdn/Boyqicheng"];
// 分享的图片不能为空
NSArray *activityItems = @[textToShare, imageToShare, urlToShare];
UIActivityViewController *activityVC = [[UIActivityViewController alloc]initWithActivityItems:activityItems applicationActivities:nil];
// 排除(UIActivityTypeAirDrop)AirDrop 共享、(UIActivityTypePostToFacebook)Facebook
activityVC.excludedActivityTypes = @[UIActivityTypePostToFacebook, UIActivityTypeAirDrop];
[self presentViewController:activityVC animated:YES completion:nil];
// 通过block接收结果处理
UIActivityViewControllerCompletionWithItemsHandler completionHandler = ^(UIActivityType __nullable activityType, BOOL completed, NSArray * __nullable returnedItems, NSError * __nullable activityError){
if (completed) {
[self showAlertViewWithMsg:@"恭喜你,分享成功!"];
}else{
[self showAlertViewWithMsg:@"很遗憾,分享失败!"];
}
};
activityVCpletionWithItemsHandler = completionHandler;
}
效果:
二、SLComposeViewController
优缺点:
/**
优点:使用简单、不用注册繁杂的分享平台账号、不用导入臃肿的SDK包。UI可以自己绘制,满足了很多个性化的需求。
缺点:分享界面的UI需要开发者自己绘制,增加了工作量。分享的类型受限,只能分享text、url、image。
*/
代码:
// 分享按钮的实现方法
- (void)shareBtClick
{
// Share Extension 分享入口,需要分享到哪个平台就用哪个平台的id
NSString *socialType = @"com.tencent.mqq.ShareExtension";
/* 1、 系统只提供了下面几种分享平台:
SLServiceTypeTwitter;
SLServiceTypeFacebook;
SLServiceTypeSinaWeibo;
SLServiceTypeTencentWeibo;
SLServiceTypeLinkedIn;
2、iOS8之后系统推出的Share Extension,可以通过App的Share Extension提供了分享入口进行分享如微信的:com.tencent.xin.sharetimeline
实际可以根据id来分享到更多平台,如微信:
NSString *socialType = @"com.tencent.xin.sharetimeline";
SLComposeViewController *composeVC = [SLComposeViewController composeViewControllerForServiceType:socialType];
//
3、 下面是小编整理的部分平台id 2017-9-15
com.taobao.taobao4iphone.ShareExtension // 淘宝
com.apple.share.Flickr.post}", // Flickr
com.apple.share.SinaWeibo.post // 新浪微博
com.laiwang.DingTalk.ShareExtension // 钉钉
com.apple.mobileslideshow.StreamShareService // iCloud
com.alipay.iphoneclient.ExtensionSchemeShare // 支付宝
com.apple.share.Facebook.post // Facebook
com.apple.share.Twitter.post // Twitter
com.apple.Health.HealthShareExtension}", // 应该是健康管理
com.tencent.xin.sharetimeline // 微信(好友、朋友圈、收藏)
com.apple.share.TencentWeibo.post // 腾讯微博
com.tencent.mqq.ShareExtension // QQ
*/
// 创建 分享的控制器
SLComposeViewController *composeVC = [SLComposeViewController composeViewControllerForServiceType:socialType];
if (!composeVC) {
[self showAlertViewWithMsg:@"您尚未安装软件"];
return;
}
if (![SLComposeViewController isAvailableForServiceType:SLServiceTypeSinaWeibo]) {
[self showAlertViewWithMsg:@"软件未配置登录信息"];
return;
}
//添加分享的文字、图片、链接
[composeVC setInitialText:@"哈罗大家好,这是分享测试的内容哦,如已看请忽略!如有任何疑问可联系1008611查你话费吧!"];
[composeVC addImage:[UIImage imageNamed:@"动态(1)@2x.png"]];
[composeVC addURL:[NSURL URLWithString:@"http://blog.csdn/Boyqicheng"]];
//弹出分享控制器
[self presentViewController:composeVC animated:YES completion:nil];
//监听用户点击了取消还是发送
composeVCpletionHandler = ^(SLComposeViewControllerResult result){
if (result == SLComposeViewControllerResultCancelled) {
NSLog(@"点击了取消");
} else {
NSLog(@"点击了发送");
}
};
}
小结:
本文是参考“iOS社会化分享方案总结”这篇文章编写的,文章写得相当
版权声明:本文标题:iOS之OC使用原生控件实现分享到QQ、微信、短信、微博等的两种方法 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dongtai/1725633385a1033973.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论