简单跳转到微信分享,基于libWeiChatSDK 和简单的自定义UIActivityViewController
一、自定义UIActivity:
如果想要自定义UIActivity必须知道UIActivityViewController。首先这个类主要是用于接受字符串,RUL类型和图片类型的数据用于分享和操作的,
这一点可以从他的初始化方法中就可以看到。
UIActivityViewController *activityView = [[UIActivityViewController alloc]
initWithActivityItems:activityItems applicationActivities:activities];
其中activityItems中一个数组,用于存储需要传输的数据,例如需要分享的网址,图片,或者要进行操作的文档。
applicationActivities 也是一数组用于存在需要进行的操作,如果没有自定义的UIActivity,一般都是nil,展示出来的都是一些系统样式。当然系统也封装了一些分享的代码,例如
UIActivityCategoryAction(操作类,用于打印,投影等)
- UIActivityTypePrint
- UIActivityTypeCopyToPasteboard
- UIActivityTypeAssignToContact
- UIActivityTypeSaveToCameraRoll
- UIActivityTypeAddToReadingList
- UIActivityTypeAirDrop
UIActivityCategoryShare(分享类,用于分享,发送等)
- UIActivityTypeMessage
- UIActivityTypeMail
- UIActivityTypePostToFacebook
- UIActivityTypePostToTwitter
- UIActivityTypePostToFlickr
- UIActivityTypePostToVimeo
- UIActivityTypePostToTencentWeibo(腾讯微博)
- UIActivityTypePostToWeibo(系统自己封装了新浪微博)
系统会检测你所有用于应用的操作,显示在操作面板上面。当然你可以通过
activityViewC.excludedActivityTypes = @[];筛选出你不需要的类型。
当然根据操作的不同,携带的东西都也有略微的差别,具体自己查阅文档
前面大致简单介绍一下UIActivityViewController,现在开始自定义UIActivity
<UIActivityItemSource>
获取数据项
- activityViewControllerPlaceholderItem:
- activityViewController:itemForActivityType
提供数据项
- activityViewController:subjectForActivityType:
- activityViewController:dataTypeIdentifierForActivityType:
- activityViewController:thumbnailImageForActivityType:suggestedSize:
上述方法都是需要重写的:
#pragma mark 显示
+ (UIActivityCategory)activityCategory {
//返回值是告诉系统这个是action类型,还是share类型的,一般默认的是action类型的,所以我们在这里返回一个action类型
return UIActivityCategoryAction;
} - (NSString *)activityType {
//用来区分不用的activity的字符串,用于你的bundle id作为前缀
return [NSString stringWithFormat:@"%@.NCActivity",[NSBundle mainBundle].bundleIdentifier];
} - (NSString *)activityTitle {
return @"返回的是选项图标下面的文字";
} - (UIImage *)activityImage {
// 因为是ios8.0,所以是支持彩色团素材的,返回的是你所要点击的图标,
return [UIImage imageNamed:@"wechat_session"];
} #pragma mark 操作
- (BOOL)canPerformWithActivityItems:(NSArray *)activityItems {
for (id item in activityItems) {
if ([item isKindOfClass:[UIImage class]]) {
return YES;
} if ([item isKindOfClass:[NSString class]]) {
return YES;
} if ([item isKindOfClass:[NSURL class]]) {
return YES;
}
}
return NO;
//设置可以操作的数据,
} - (void)prepareWithActivityItems:(NSArray *)activityItems {
//准备分享所进行的方法,通常在这个方法里面,把item中的东西保存下来
for (id item in activityItems) {
if ([item isKindOfClass:[UIImage class]]) {
self.image = (UIImage *)item;
} if ([item isKindOfClass:[NSString class]]) {
self.text = (NSString *)item;
} if ([item isKindOfClass:[NSURL class]]) {
self.url = (NSURL *)item;
}
}
} - (void)performActivity {
//这里就可以关联外面的app进行分享操作了
//也可以进行一些数据的保存等操作
//操作的最后必须使用下面方法告诉系统分享结束了
[self activityDidFinish:YES];
}
二、简单跳转到微信分享
这里主要用到一个第三方的SDK:libWeiChatSDK.a
马克。。。有点搞混了!
简单跳转到微信分享,基于libWeiChatSDK 和简单的自定义UIActivityViewController的更多相关文章
- 微信开发(一)基于Wx-java的微信分享功能
最近在做微信服务号开发,简单总结一下,便于自己学习积累和分享给大家: 环境介绍: Spring+ Spring MVC +Mybatis 开发语言: JAVA 微信公众平台的开发中,微信只公布了一个基 ...
- IOS微信分享功能简单实现
PS:此文以简单实现功能为主,不足之前还望指点,大神勿喷. 在此之前如何申请微信认证的Key就不说了,公司一般会有人搞 1.首先下载微信SDK:微信SDK下载地址(更多关于微信SDK信息文档请访问官方 ...
- 基于Django进行简单的微信开发
代码地址如下:http://www.demodashi.com/demo/11756.html 一.微信公众号的准备: 1. 注册 访问地址:https://mp.weixin.qq.com/ 按照提 ...
- springboot 基于JS-SDK实现微信分享(一)
本文主要介绍了SpringBoot 基于JS-SDK实现自定义微信分享,并通过本地测试的方式进行调试,文中通过微信实现分享流程及示例代码进行非常详细的介绍,希望本文对开发爱好者学习或者工作具有一定的参 ...
- 微信分享 分享icon和分享标题的简单设置
前几天做的一个活动,用到微信分享功能,分享的icon.分享的标题和内容是自定义的.我上网查了一下,好多是注册微信公众号,使用微信api来实现的,注册微信号比较麻烦,最简单的方法就是 页面的title改 ...
- ionic2+Angular web端 实现微信分享以及如何跳转回分享出去的页面
微信分享,首先参考微信JS-SDK开发文档. step1:在启动文件index.html中引入微信js文件: <script src="http://res.wx.qq.com/ope ...
- 一篇搞定微信分享和line分享
前言 在h5的页面开发中,分享是不可或缺的一部分,对于一些传播性比较强的页面,活动页之类的,分享功能极为重要.例如,京东等电商年末时会有一系列的总结h5在微信中传播,就不得不提到微信的分享机制. 微信 ...
- 基于modelsim-SE的简单仿真流程—下
基于modelsim-SE的简单仿真流程—下 编译 在 WorkSpace 窗口的 counter_tst.v上点击右键,如果选择Compile selected 则编译选中的文件,Compile A ...
- 在Unity3D项目中接入ShareSDK实现安卓平台微信分享功能(可使用ShareSDK默认UI或自定义UI)
最近公司的大厅要重做,我协助主程一起制作新大厅和新框架,前面制作的编辑器也派上了用场.等全部功能做完后我会再写一个复盘,这两天主程在忙于写热更新的功能,所以把接入分享SDK功能的任务交给了我,Shar ...
随机推荐
- XidianOJ 1063 Chemistry Problem
[提交][状态][讨论版] 题目描述 lw最近正在学习立体化学.立体化学中常用Fischer投影式表示分子的立体构型,例如,对于酒石酸HOOC(CHOH)2COOH,如果用一根横线表示羟基,略去氢原子 ...
- 研究SVM时安装的一些工具的方法
本文是个人存档,不介绍研究SVM相关内容. 1.bamboo在fedora19下 哪一行编译时报错,就注释掉 php插件不用装 提示ERROR: libcrfpp.so.0: cannot open ...
- mac下开发IOS代码管理
1.安装和配置subversion服务器 在windows 服务器上安装VisualSVN-Server,下载地址http://www.visualsvn.com/server/download/.采 ...
- APS.net controller
在controller 路由配置为: routes.MapRoute( name:"Default", url:"{controller}/{action}/{id}&q ...
- MySql的连接查询
类似于oracle的连接查询,mysql连接查询也有左外连接.右外连接.内连接查询.但是,不同的是没有直接 的全外连接查询. 这里介绍MySql的连接查询: 这里已两张表为例:STUDENT 表 和 ...
- 开源GIS软件初探
谈到GIS软件,首先让我们想到的便是GIS界的龙头大哥ESRI公司旗下的ArcGIS产品,从最初接触的version 9.2到如今的version 10.1,其发展可谓风生水起.MapInfo软件也不 ...
- 使用date类和format类对系统当前时间进行格式化显示
一:Date------------String 代码1:(代码二对显示出来的时间格式进行优化) package DateDemo; import java.text.SimpleDateFormat ...
- JavaScript流程控制语句
一.JavaScript分支语句 -alert() 弹出警告对话框 -prompt() 弹出输入框 1.if(){}else{} 栗子: var num=prompt("请输入电话号码 ...
- 通过XmlHttpRequest实现带进度条异步下载文件
本博文源自技术群的讨论,因为网上找不到实现这样效果的的代码,而我说没问题,可以实现,因此有人质疑我是否能做到,呵呵,现将我实现代码贴出如下,希望有兴趣的同学可以继续完善: 本代码仅做技术展现,请勿探讨 ...
- Java基础---AWT
流式布局FlowLayout package net.zyz; import java.awt.Button; import java.awt.FlowLayout; import java.awt. ...