热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ShareSDKforFlutter

前言这是一个基于ShareSDK功能的扩展的Flutter插件。使用此插件能够帮助您在使用Flutter开发应用时,快速地实现社会化功能,例如第三方授权登录,获取用户信息以及社交

前言

这是一个基于ShareSDK功能的扩展的Flutter插件。使用此插件能够帮助您在使用Flutter开发应用时,快速地实现社会化功能,例如第三方授权登录,获取用户信息以及社交平台的分享等功能。
Demo例子:https://github.com/MobClub/ShareSDK-For-Flutter


开始集成


引入插件

sharesdk_plugin | Flutter Package

在pubspec.yaml文件中加入下面依赖

dependencies:mobcommonlib:sharesdk_plugin:

然后执行:flutter packages get 导入package

在你的dart工程文件中,导入下面头文件,开始使用

import 'package:sharesdk_plugin/sharesdk_plugin.dart';

iOS端集成配置 


iOS端自定义需要导入的分享平台(非必须)

iOS : 这个文件里默认有我们的一些主流平台,如果需要增加平台,或者减少平台,你需要重新编辑 sharesdk_plugin.podspec文件设置 dependency,具体支持的平台可以参阅pod search mob_sharesdk 或者参考官方文档

#
# To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html
#
Pod::Spec.new do |s|s.name = &#39;sharesdk_plugin&#39;s.version = &#39;1.1.0&#39;s.summary = &#39;Flutter plugin for ShareSDK.&#39;s.description = <<-DESCShareSDK is the most comprehensive Social SDK in the world,which share easily with 40+ platforms.DESCs.homepage = &#39;http://www.mob.com/mobService/sharesdk&#39;s.license = { :file => &#39;../LICENSE&#39; }s.author = { &#39;Mob&#39; => &#39;mobproduct@mob.com&#39; }s.source = { :path => &#39;.&#39; }s.source_files = &#39;Classes/**/*&#39;s.public_header_files = &#39;Classes/**/*.h&#39;s.dependency &#39;Flutter&#39;s.dependency &#39;mob_sharesdk&#39;s.dependency &#39;mob_sharesdk/ShareSDKExtension&#39;s.dependency &#39;mob_sharesdk/ShareSDKUI&#39;s.dependency &#39;mob_sharesdk/ShareSDKPlatforms/QQ&#39;s.dependency &#39;mob_sharesdk/ShareSDKPlatforms/SinaWeibo&#39;s.dependency &#39;mob_sharesdk/ShareSDKPlatforms/WeChat&#39;s.dependency &#39;mob_sharesdk/ShareSDKPlatforms/Facebook&#39;s.dependency &#39;mob_sharesdk/ShareSDKPlatforms/Twitter&#39;s.static_framework = trues.ios.deployment_target = &#39;8.0&#39;
end

改好了之后,cd到Xcode目录下,重新pod update即可!


初始化SDK

配置初始化我们SDK的AppKey

在项目工程的Info.plist中如图增加MOBAppKey 和 MOBAppSecret 两个字段


 配置平台的URL SCheme和白名单

请参考原生文档里的第四点配置XCode项目里的 URL Scheme配置白名单配置 


第三方平台初始化

添加初始化代码

@overridevoid initState() {// TODO: implement initStatesuper.initState();ShareSDKRegister register = ShareSDKRegister();register.setupWechat("wx617c77c82218ea2c", "c7253e5289986cf4c4c74d1ccc185fb1", "https://70imc.share2dlink.com/");register.setupSinaWeibo("568898243", "38a4f8204cc784f81f9f0daaf31e02e3", "http://www.sharesdk.cn", "https://70imc.share2dlink.com/");register.setupQQ("100371282", "aed9b0303e3ed1e27bae87c33761161d");register.setupFacebook("1412473428822331", "a42f4f3f867dc947b9ed6020c2e93558", "shareSDK");register.setupTwitter("viOnkeLpHBKs6KXV7MPpeGyzE","NJEglQUy2rqZ9Io9FcAU9p17omFqbORknUpRrCDOK46aAbIiey", "http://mob.com");register.setupLinkedIn("46kic3zr7s4n", "RWw6WRl9YJOcdWsj", "http://baidu.com");SharesdkPlugin.regist(register);}

Android端集成配置 


重新编辑build.gradle

Android : 你需要重新编辑build.gradle, mobsdk.gradle文件来选择你需要使用的平台,具体支持的平台可以参阅 官网技术文档


 配置AndroidManifest

AndroidManifest中需要加入配置

tools:replace="android:name"

将其加到application中,避免mobsdk与flutter的application冲突;


第三方平台添加 

mobsdk.gradle

如下所示,devInfo内部,需要的平台可以自己添加,不需要的可以删除其中的配置即可;具体支持的平台可以参阅 官网技术文档

MobSDK {appKey "moba6b6c6d6"appSecret "b89d2427a3bc7ad1aea1e1e8c1d36bf3"ShareSDK {devInfo {QQ {id 7sortId 7appId "100371282"appKey "aed9b0303e3ed1e27bae87c33761161d"shareByAppClient truebypassApproval falseenable true}SinaWeibo {id 1sortId 1appKey "568898243"appSecret "38a4f8204cc784f81f9f0daaf31e02e3"callbackUri "http://www.sharesdk.cn"shareByAppClient trueenable true}Wechat {id 4sortId 4appId "wx4868b35061f87885"appSecret "64020361b8ec4c99936c0e3999a9f249"userName "gh_afb25ac019c9"path "pages/index/index.html?id=1"withShareTicket trueminiprogramType 0bypassApproval falseenable true}Facebook {id 8sortId 8appKey "1412473428822331"appSecret "a42f4f3f867dc947b9ed6020c2e93558"callbackUri "https://mob.com"shareByAppClient trueenable true}Twitter {id 9sortId 9appKey "viOnkeLpHBKs6KXV7MPpeGyzE"appSecret "NJEglQUy2rqZ9Io9FcAU9p17omFqbORknUpRrCDOK46aAbIiey"callbackUri "http://mob.com"shareByAppClient trueenable true}}}}

API接口调用 


回传用户隐私授权结果 (submitPrivacyGrantResult)

/*** 回传用户隐私授权结果* @param status 用户是否同意隐私协议* @param result 默认传null*/
Mobcommonlib.submitPolicyGrantResult(bool status, Function(bool)? result)

 

例:
Mobcommonlib.submitPolicyGrantResult(true, null);

ShareSDK功能接口使用

 


授权(auth)

void authToWechat(BuildContext context) {SharesdkPlugin.auth(ShareSDKPlatforms.wechatSession, null, (SSDKResponseState state,Map user, SSDKError error) {showAlert(state, user != null ? user : error.rawData, context);});}

获取用户信息(getUserInfo) 

void getUserInfoToWechat(BuildContext context) {SharesdkPlugin.getUserInfo(ShareSDKPlatforms.wechatSession, (SSDKResponseState state,Map user, SSDKError error) {showAlert(state, user != null ? user : error.rawData, context);});}

ShareSDKPlatforms.wechatSession这里以微信平台授权作为示例。


调用九宫格分享(showMenu) 

setGeneral内的方法顺序及说明:

SSDKMap params = SSDKMap()..setGeneral("title","text",["http://wx3.sinaimg.cn/large/006nLajtly1fpi9ikmj1kj30dw0dwwfq.jpg"],"http://wx3.sinaimg.cn/large/006nLajtly1fpi9ikmj1kj30dw0dwwfq.jpg","","http://www.mob.com/","http://wx4.sinaimg.cn/large/006WfoFPly1fw9612f17sj30dw0dwgnd.jpg","http://i.y.qq.com/v8/playsong.html?hostuin=0&sOngid=&sOngmid=002x5Jje3eUkXT&_wv=1&source=qq&appshare=iphone&media_mid=002x5Jje3eUkXT","http://f1.webshare.mob.com/dvideo/demovideos.mp4","",SSDKContentTypes.webpage);SharesdkPlugin.showMenu(null, null, params, (SSDKResponseState state,ShareSDKPlatform platform,dynamic userData,dynamic contentEntity,SSDKError error) {showAlert(state, error.rawData, context);});

单独分享第三方平台(share)

如下所示,替换share方法内ShareSDKPlatforms.wechatSession第三方平台名称,即可单独分享不同的平台;具体第三方平台名称可以参考如下; 

//单独公共分享
SSDKMap params = SSDKMap()..setGeneral("h5.yoto.fun","text",["http://pic28.photophoto.cn/20130818/0020033143720852_b.jpg"],"","","http://mob.com","","","","",SSDKContentTypes.image);SharesdkPlugin.share(ShareSDKPlatforms.wechatSession, params,(SSDKResponseState state, dynamic userdata, dynamic contentEntity,SSDKError error) {showAlert(state, error.rawData, context);});

单独分享QQ

不需要的参数传null即可

setQQ

SSDKMap params = SSDKMap()..setQQ("text","title","http://m.93lj.com/sharelink?mobid=ziqMNf","","","","","","http://wx4.sinaimg.cn/large/006tkBCzly1fy8hfqdoy6j30dw0dw759.jpg","","","http://m.93lj.com/sharelink?mobid=ziqMNf","","",SSDKContentTypes.webpage,ShareSDKPlatforms.qq);SharesdkPlugin.share(ShareSDKPlatforms.qq, params, (SSDKResponseState state,dynamic userdata, dynamic contentEntity, SSDKError error) {showAlert(state, error.rawData, context);});

单独分享微博

setSina

 

SSDKMap params = SSDKMap()..setSina("text","title",["http://download.sdk.mob.com/web/images/2019/07/30/14/1564468183056/750_750_65.12.png"],"","http://www.mob.com/",0.0,0.0,"",false,"http://wx4.sinaimg.cn/large/006WfoFPly1fq0jo9svnaj30dw0dwdhv.jpg","",SSDKContentTypes.auto);SharesdkPlugin.share(ShareSDKPlatforms.sina, params,(SSDKResponseState state, dynamic userdata, dynamic contentEntity,SSDKError error) {showAlert(state, error.rawData, context);});

微博分享卡片模式

setSinaLinkCard

linkcard类型如下参数,都不能为空

SSDKMap params = SSDKMap()..setSinaLinkCard("linkcard_text","linkcard_title","http://www.mob.com/","全新品牌,优质服务","http://wx4.sinaimg.cn/large/006WfoFPly1fq0jo9svnaj30dw0dwdhv.jpg","120","120");SharesdkPlugin.share(ShareSDKPlatforms.sina, params,(SSDKResponseState state, dynamic userdata, dynamic contentEntity,SSDKError error) {showAlert(state, error.rawData, context);});

单独分享推特

  

单独分享facebook 

分享小程序参数

setWeChatMiniProgram

分享到微信

setWechat

分享到绿洲

setOasis

SSDKMap params = SSDKMap()..setOasis("title","text",null,"http://wx4.sinaimg.cn/large/006tkBCzly1fy8hfqdoy6j30dw0dw759.jpg","","",SSDKContentTypes.image);SharesdkPlugin.share(ShareSDKPlatforms.oasis, params,(SSDKResponseState state, dynamic userdata, dynamic contentEntity,SSDKError error) {showAlert(state, error.rawData, context);});

新增对原生FacebookSDK 的支持(SSDKFacebookShareType)

新增跳转到原生分享和在app内分享

class SSDKFacebookShareTypes extends Object {static SSDKFacebookShareType get native => SSDKFacebookShareType(value: 1);static SSDKFacebookShareType get sheet => SSDKFacebookShareType(value: 2);
}

Flutter iOS端注意事项

由于插件更新,SDK的Pod依赖被替换,Flutter 本身写入Pod文件不会先执行删除原有依赖,导致可能会出现原有本地库依然存在,请检查Pod文件夹下文件,直接手动删除mob_shareSDK 以及 MOBFoundation文件即可,如有疑问,请直接通过官网和我们联系。

 

 

 

 

 

 

 

 

 

 

 

 

 


 

 


推荐阅读
  • 本文介绍如何使用 Python 的 DOM 和 SAX 方法解析 XML 文件,并通过示例展示了如何动态创建数据库表和处理大量数据的实时插入。 ... [详细]
  • 开机自启动的几种方式
    0x01快速自启动目录快速启动目录自启动方式源于Windows中的一个目录,这个目录一般叫启动或者Startup。位于该目录下的PE文件会在开机后进行自启动 ... [详细]
  • 在软件开发过程中,经常需要将多个项目或模块进行集成和调试,尤其是当项目依赖于第三方开源库(如Cordova、CocoaPods)时。本文介绍了如何在Xcode中高效地进行多项目联合调试,分享了一些实用的技巧和最佳实践,帮助开发者解决常见的调试难题,提高开发效率。 ... [详细]
  • 本文详细介绍了在 CentOS 7 系统中配置 fstab 文件以实现开机自动挂载 NFS 共享目录的方法,并解决了常见的配置失败问题。 ... [详细]
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
  • MicrosoftDeploymentToolkit2010部署培训实验手册V1.0目录实验环境说明3实验环境虚拟机使用信息3注意:4实验手册正文说 ... [详细]
  • 在多线程并发环境中,普通变量的操作往往是线程不安全的。本文通过一个简单的例子,展示了如何使用 AtomicInteger 类及其核心的 CAS 无锁算法来保证线程安全。 ... [详细]
  • 本文详细介绍了如何使用Python中的smtplib库来发送带有附件的邮件,并提供了完整的代码示例。作者:多测师_王sir,时间:2020年5月20日 17:24,微信:15367499889,公司:上海多测师信息有限公司。 ... [详细]
  • 本文讨论了在进行 MySQL 数据迁移过程中遇到的所有 .frm 文件报错的问题,并提供了详细的解决方案和建议。 ... [详细]
  • 本文介绍了如何利用 `matplotlib` 库中的 `FuncAnimation` 类将 Python 中的动态图像保存为视频文件。通过详细解释 `FuncAnimation` 类的参数和方法,文章提供了多种实用技巧,帮助用户高效地生成高质量的动态图像视频。此外,还探讨了不同视频编码器的选择及其对输出文件质量的影响,为读者提供了全面的技术指导。 ... [详细]
  • PTArchiver工作原理详解与应用分析
    PTArchiver工作原理及其应用分析本文详细解析了PTArchiver的工作机制,探讨了其在数据归档和管理中的应用。PTArchiver通过高效的压缩算法和灵活的存储策略,实现了对大规模数据的高效管理和长期保存。文章还介绍了其在企业级数据备份、历史数据迁移等场景中的实际应用案例,为用户提供了实用的操作建议和技术支持。 ... [详细]
  • 在对WordPress Duplicator插件0.4.4版本的安全评估中,发现其存在跨站脚本(XSS)攻击漏洞。此漏洞可能被利用进行恶意操作,建议用户及时更新至最新版本以确保系统安全。测试方法仅限于安全研究和教学目的,使用时需自行承担风险。漏洞编号:HTB23162。 ... [详细]
  • Python 中变量类型的确定与默认类型解析
    本文详细探讨了 Python 中变量类型的确定方式及其默认类型,帮助初学者更好地理解变量类型的概念。 ... [详细]
  • 解决Only fullscreen opaque activities can request orientation错误的方法
    本文介绍了在使用PictureSelectorLight第三方框架时遇到的Only fullscreen opaque activities can request orientation错误,并提供了一种有效的解决方案。 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
author-avatar
窝窝笑丫
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有