关于分享那些事

在iOS 或者安卓平台上实现社会化分享功能,一般就是通过第三方的SDK进行分享服务,如友盟分享,ShareSDK分享

一种是把有梦分享的SDK集成到工程里面,直接调用SDK里面API的方法进行分享,按照友盟分享的开发文档直接进行集成,注意appkey 还有分享到第三方,需要去相应的平台里面申请相应的appkey和appsecret,然后在配置文件里面配置相应的回调地址和网页,直接进行分享,这种方法看集成文档就能完成,不在做解释,在这里主要讲一下第二种方法。

另外一种方法就是在H5网页分享,这个适用于大型的app,工程里面需要集成第三方的H5页面,把第三方的H5页面直接嵌套在控制器里面,遵循里面的代理方法实现加载第三方合作单位及成员机构里面的H5页面。通过写入一段js代码段,调起应用里面的方法及相应的操作。

安卓注入的js代码段

<script type="text/javascript">
function fx(){
$.ajax({
url: "${ctx}/app/homepage/fx.do",
dataType:"json",
success: function(data){

//这里是调用应用里面的方法--安卓
window.share.postMessage({title:‘测试分享的标题‘,content:‘测试分享的内容‘,url:‘http://www.cnblog.com‘});
}
});
}
</script>

iOS 注入的代码段

<script type="text/javascript">
function fx(){
$.ajax({
url: "${ctx}/app/homepage/fx.do",
dataType:"json",
success: function(data){

//这里是iOS 调用的方法名

window.webkit.messageHandlers.share.postMessage({title:‘测试分享的标题‘,content:‘测试分享的内容‘,url:‘http://www.cnblog.com‘});

}
});
}
</script>

//注意标明颜色为前台与后台约定好的方法名,必须保持一致,否则不能进行分享操作

这里已友盟分享,iOS端为例

//js调用OC代码段实现分享功能

- (void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(WKScriptMessage *)message{

NSLog(@"%@",message);

NSLog(@"body:%@",message.body);

if ([message.name isEqualToString:@"share"]) {

NSLog(@"调用成功");

[self shareing:message.body];

}

}

#pragma mark ---打开分享面板

- (void)shareing:(NSDictionary *)tempDic{

if (![tempDic isKindOfClass:[NSDictionary class]]) {

return;

}

NSString *title = [tempDic objectForKey:@"title"];

NSString *content = [tempDic objectForKey:@"content"];

NSString *url = [tempDic objectForKey:@"url"];

//显示分享面板

// UMSocialUIManager

[UMSocialShareUIConfig shareInstance].sharePageGroupViewConfig.sharePageGroupViewPostionType = UMSocialSharePageGroupViewPositionType_Bottom;

[UMSocialShareUIConfig shareInstance].sharePageScrollViewConfig.shareScrollViewPageItemStyleType = UMSocialPlatformItemViewBackgroudType_None;

[UMSocialUIManager showShareMenuViewInWindowWithPlatformSelectionBlock:^(UMSocialPlatformType platformType, NSDictionary *userInfo) {

//创建分享消息对象

UMSocialMessageObject *messageObject = [UMSocialMessageObject messageObject];

//创建网页内容对象

UIImage* thumbURL =  [UIImage imageNamed:@"11.png"];

UMShareWebpageObject *shareObject = [UMShareWebpageObject shareObjectWithTitle:title descr:content thumImage:thumbURL];

//设置网页地址

shareObject.webpageUrl = url;

//分享消息对象设置分享内容对象

messageObject.shareObject = shareObject;

//调用分享接口

[[UMSocialManager defaultManager] shareToPlatform:platformType messageObject:messageObject currentViewController:self completion:^(id data, NSError *error) {

if (error) {

NSLog(@"************Share fail with error %@*********",error);

}else{

if ([data isKindOfClass:[UMSocialShareResponse class]]) {

UMSocialShareResponse *resp = data;

//分享结果消息

UMSocialLogInfo(@"response message is %@",resp.message);

//第三方原始返回的数据

UMSocialLogInfo(@"response originalResponse data is %@",resp.originalResponse);

}else{

UMSocialLogInfo(@"response data is %@",data);

}

}

[self alertWithError:error];

}];

}];

}

- (void)alertWithError:(NSError *)error

{

NSString *result = nil;

if (!error) {

result = [NSString stringWithFormat:@"分享成功"];

}

else{

NSMutableString *str = [NSMutableString string];

if (error.userInfo) {

for (NSString *key in error.userInfo) {

[str appendFormat:@"%@ = %@\n", key, error.userInfo[key]];

}

}

if (error) {

result = [NSString stringWithFormat:@"Share fail with error code: %d\n%@",(int)error.code, str];

}

else{

result = [NSString stringWithFormat:@"分享失败"];

}

}

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"分享"

message:result

delegate:nil

cancelButtonTitle:NSLocalizedString(@"确定", @"确定")

otherButtonTitles:nil];

[alert show];

}

- (void)didReceiveMemoryWarning {

[super didReceiveMemoryWarning];

}

-(void)viewDidDisappear:(BOOL)animated{

[super viewDidDisappear:animated];

[userContentController removeScriptMessageHandlerForName:@"share"]; //关闭web页时会释放内存

}

//还需要在工程里面配置一些回调,来展示分享成功或分享失败操作 返回分享成功或分享失败标题

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation

{

BOOL result = [[UMSocialManager defaultManager] handleOpenURL:url];

if (!result) {

}

return result;

}

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url

{

BOOL result = [[UMSocialManager defaultManager] handleOpenURL:url];

if (!result) {

}

return result;

}

//在这里就大功告成啦,时间匆忙,如有不对的地方欢迎指正

时间: 2024-10-10 07:43:29

关于分享那些事的相关文章

Android好奇宝宝_12_社会化分享那些事

近期刚过完年,一回公司又赶着为项目添加分享功能,搞得焦头烂额,现在在这里记录一下过程中发生的问题,方便下次查阅. 首先,分享功能有两个方式实现: 1:到各个平台注册开发者.下载sdk.阅读文档.查看官方Demo.集成sdk.写代码测试.修复bug.优化. 好吧,看到这么一长串步骤,而且是每个想要集成的平台都得跑一遍流程,想死的心都有了,方案1直接放弃. 2:使用第三方已集成好各个平台的sdk. 这个方案也是现在绝大多数应用所采用的,原因很简单:免费!方便!快捷! 而第三方sdk也有几个可以选,用

sqlserver的事务

本文主要分享一下事务在sqlserver中的执行流程. 注意,这里只谈论流程,不涉及锁的信息,关于锁的信息,稍后会有专门的文章讨论. 事务的执行流程如下,从01步到08步. 1,sqlserver接受到事务请求 2,存储引擎开始一个事务(具有唯一的事务标识),并且把事务日志写入缓存log buffer 3,存储引擎把事务的数据写入缓存db buffer 4,当步骤3完成以后,存储引擎把缓存日志时的事务标识commit 5,把log buffer中的日志写盘 6,日志写到磁盘完成以后,存储引擎返回

Android开发记录19-朋友圈动态发布时间计算

Android开发记录19-朋友圈动态发布时间计算 转载请注明:IT_xiao小巫,http://blog.csdn.net/wwj_748 如果觉得博文不错,请移步到2014年博客之星投票地址:http://vote.blog.csdn.net/blogstar2014/details?username=wwj_748#content 前面的一篇文章给大家关于时间知识点的分享http://blog.csdn.net/wwj_748/article/details/11536421,本篇博客笔者

同EXCEL沟通的最佳方式-------宏之实例1

这次和大家分享的事关于excel中宏的一个真实案例.这个宏实例是根据某部门同事的需求编写的一段非常简单的代码.里面涉及到判断单元格是否填充颜色,if 语句,和for语句.细致的语法不想多说,主要是想和大家分享对宏的认识,让大家对宏产生兴趣.大家先看下表,截图是已将可识别信息隐去只保留一些数字,这样避免涉及泄密. 用户的需求是这样(在描述客户需求时,和用户实际描述的会有出入,这里主要能体现之后的宏代码就可以了).某物料总数为C列所示,实际库存为D列所示.之后以日期为列标题各列中的数字为预计要走的数

創問 - 4C 團隊教練心得(一)

今天難得參加了創問舉辦的 4C 團隊教練課程 From : http://www.cccoach.org/Home/List/show/id/229.html 整個課程主要圍繞著 Common View .Connection.Courage.Creativity 四個部分來介紹 當中穿插著一些溝通技巧的應用 如果問我這對於程序猿有什麼幫助呢? 我覺得幫助其實是挺大的 如果仔細觀察自已的程序猿同事,應該會發現他們的溝通在功能開發需求上特別的牛 但如果提到需求背後的目的性,應該就很少人會繼續下去談

2018年总结之角色蜕变

分享会推动与组织者 前面说到公司的大书架,在这两年半里,书架上的书我没见过几个人在那里翻过.最初面试时人事跟我说部门有技术分享会,当时听见这个,真的是眼睛发光了,但等到我进来的时候没有了,主管说没人组织分享,参加的人也少.其实部门有个技术狂的,有个技术专家,带头的人是有的,多次跟主管聊起内部分享的事,后来定了部门每个星期一次内部技术分享会,分享者有志愿者也有指派人,只是在会上积极的永远是对技术感兴趣的那几个人,会提问会讨论,没兴趣的就低头玩手机.部门分享会在2018年四月份左右因为项目时间原因一

聊聊面试官那些事。。分享我的个人看法,认同的顶一顶。。。

我是个很懒,也不善于写文章和表达的人,今天晚上让尿憋醒后,一直没睡着,回想起以往的面试一些经历,于是开灯写写. 被人面试.面试别人,这2种场景,大多数人可能都接触过了.而这次主要聊的是做为面试官面试别人的那些事. 曾经想让一个同事去面试别人,他面了几个后,因为我在旁边,老说还是让我来面,于是我就跟他一起探讨分享了做为面试官的一些个人看法. 主要有3点: 1.面试要看资料下菜,人家不会的不要问 2.要调整自己做为面试官的心态,不是让你去打败面试者 3.要看薪酬调整面试提问的难易程度. 一.面试要看

【 分享】神秘程序员们那些事之事物的本质(直播中…)

1. 新春对联上联:为系统而生,为框架而死,为debug奋斗一辈子下联:吃符号的亏,上大小写的当,最后死在需求上!横批:杯具程序员. 2.声卡凄切,对电脑晚,检查初歇. 项目需求无绪,可恨处,邮件催发. 执手相看代码,竟无语凝噎. 念去去千行代码,眼皮沉沉电脑破. 多情自古源代码,更那堪,冷落情人节,今宵酒醒何处.电脑旁,晓风残月,此去经年,爱情硬是形同虚设. 便纵有千般无奈,更与何人说? 如果你有什么好玩的关于程序员的故事.对话.代码.愿意以漫画形式分享 请你给小鱼发邮件:[email pro

分享CodeIgniter框架中关于URL(index.php)的那些事

A8U论坛最近,在做自己的个人网站时,采用了轻量级的php框架CodeIgniter.乍一看上去,代码清晰简洁,MVC模型非常容易维护.开发时我采用的工具是Netbeans IDE 8.0,当然,本文的内容和开发工具是没有关系的,和我们最后网站采用的服务器有很大的关系.目前最为常用的两款免费web服务器是Apache和Nginx(这两款服务器的比较,可以参考一篇网上的经典文章:http://zyan.cc/nginx_php_v6/).在我网站开发与上线的过程中,刚好两个服务器都用到了,他们配置