美文网首页
分享问题实现汇总

分享问题实现汇总

作者: Coder行者 | 来源:发表于2020-03-31 11:49 被阅读0次

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

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

2.另外一种方法就是在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端为例(WKWebview为例,UIWebview苹果已不再推荐使用)
//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;

}

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

你的赞赏是对我最大的鼓励,谢谢

相关文章

  • 分享问题实现汇总

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

  • Hbase问题汇总与解答

    今天早上分享了下HBase,分享的时候同事提出了一些问题,可能大部分有有这样的困惑,汇总下来: HBase问题汇总...

  • hexo下Markdown语法失效总结

    问题汇总: 多级有序列表序号显示异常问题 table表格显示异常,不显示问题 问题:Markdown 无法实现"多...

  • ROC-AUC 曲线以及PRC曲线

    目录:机器学习常见面试问题汇总问题汇总(1):逻辑回归问题汇总(2):支持向量机问题汇总(3):树模型问题汇总(4...

  • 问题汇总(5):神经网络

    这篇应当也是很重要的把~ 目录:机器学习常见面试问题汇总问题汇总(1):逻辑回归问题汇总(2):支持向量机问题汇总...

  • iOS中UIScrollView、UIWebView、UICol

    问题汇总 1、如何实现JavaScript与Objective-C间传值? 点击Webview中的图片,放大,需要...

  • Xcode 11.4.1 修复的问题汇总

    Xcode 11.4.1 修复的问题汇总Xcode 11.4.1 修复的问题汇总

  • Android开发中小问题汇总三

    【Android开发中小问题汇总目录】【Android开发中小问题汇总一】【Android开发中小问题汇总二】 A...

  • 整理 | 健康小问题分享汇总

    一念的健康问题分享整理 一念:各位书友们好,实在不好意思,上次营养分享后一直忙没来得及回复大家的问题,现在给大家做...

  • 问题汇总(6):EM算法

    这个现学现卖把,先把链接放上来: 目录:机器学习常见面试问题汇总问题汇总(1):逻辑回归问题汇总(2):支持向量机...

网友评论

      本文标题:分享问题实现汇总

      本文链接:https://www.haomeiwen.com/subject/pwcwuhtx.html