flutter 分享功能 ios端 利用MobTech的ShareSDK进行分享 支持分享到微信微信小程序网页qq微博等主流平台

Posted YunusQ

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了flutter 分享功能 ios端 利用MobTech的ShareSDK进行分享 支持分享到微信微信小程序网页qq微博等主流平台相关的知识,希望对你有一定的参考价值。

flutter 分享功能 ios端 利用MobTech的ShareSDK进行分享 支持分享到微信、微信小程序、网页、qq、微博等主流平台

1.先在MobTech官网注册 获取一系列参数

MobTech官网
需要分享到哪个平台 就去哪个平台注册对应的分享账号
如微信:微信开放平台 获取appid和appsecret(注意:不是小程序的那个id和secret!!!)
如QQ:QQ互联## 在控制台配置第一步的相关id和secret

2.在控制台配置相关参数


注意:微信、qq等需要universal links mobtech自动生成的 只需填写相关ios开发的参数即可
(注意:Team id,Bundle id这些必须要填写的和自己项目里使用的证书的Team id和Bundle id一致,QQ AppID在需要QQ平台的时候需要填写上)

3.在项目中进行配置

sharesdk参考文档

配置初始化我们sdk的AppKey

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

配置对应平台的URL Scheme和白名单

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

添加初始化代码


 @override
    void initState() 
      // TODO: implement initState
      super.initState();
      ShareSDKRegister register = ShareSDKRegister();
      register.setupWechat(
        "wx617c77c82218ea2c", "c7253e5289986cf4c4c74d1ccc185fb1", "https://www.sandslee.com/");
      register.setupSinaWeibo("568898243", "38a4f8204cc784f81f9f0daaf31e02e3",
        "http://www.sharesdk.cn");
      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);
    

这里简单的项目配置毕竟容易 然后需要配置ios专属配置 在Info.plist里的一些配置

参考文档中ios的部分
https://www.mob.com/wiki/detailed?wiki=ShareSDK_ios_fast_integration_fast&id=14

(1)首先配置URL——SCHMES

(2)给配置白名单

(3)配置universal links到项目中

3.flutter分享的代码

 void showPub() 
    showModalBottomSheet(
        context: context,
        builder: (BuildContext context) 
          return _shareWidget();
        );
  


  Widget _shareWidget() 
    return new Container(
      height: 160.0,
      child: new Column(
        children: <Widget>[
          new Padding(
            padding: EdgeInsets.fromLTRB(0.0, 10.0, 0.0, 0.0),
            child: new Container(
              height: 100.0,
              child: new GridView.builder(
                gridDelegate: new SliverGridDelegateWithFixedCrossAxisCount(
                    crossAxisCount: 4,
                    mainAxisSpacing: 5.0,
                    childAspectRatio: 1.0),
                itemBuilder: (BuildContext context, int index) 
                  return InkWell(
                    onTap: ()
                      if(index==0) 
                        print("share wechat");
                        _shareWechat();
                      
                      else if(index==1) 
                        print("share qq");
                        _shareQQ();
                    ,
                    child: new Column(
                      children: <Widget>[
                      new Container(
                        padding: EdgeInsets.fromLTRB(0.0, 0.0, 0.0, 8.0),
                        child: Image.asset(
                          urlItems[index],
                          height: 60,
                          width: 60,
                        ),
                      ),
                      new Text(nameItems[index])
                    ],
                  ),);
                ,
                itemCount: nameItems.length,
              ),
            ),
          ),
          new Container(
            height: 0.5,
            color: Colors.blueGrey,
          ),
          new Center(
            child: new Padding(
              padding: EdgeInsets.fromLTRB(0.0, 8.0, 0.0, 8.0),
              child: GestureDetector(
                  onTap:()
                    Navigator.of(context).pop();
                  ,
                  child: new Text(
                    '取  消',
                    style: new TextStyle(fontSize: 18.0, color: Colors.blueGrey),
                  )),
            ),
          ),
        ],
      ),
    );

  
  List<String> nameItems = <String>[
    '微信',
    'QQ',
  ];
  List<String> urlItems = <String>[
    'assets/images/wechaticon.png',
    'assets/images/qqicon.png',
  ];

  void _shareWechat() 
    SSDKMap params = SSDKMap()
        ..setWeChatMiniProgram(
            teamInfo['name'],
            "分享",
            "https://www.xx.com",
            "pages/MyPages/my_team_detail/my_team_detail?isshare=1&id="+teamInfo['id'],//可以指定页面并传值
            null,
            teamInfo['logo'],
            teamInfo['logo'],
            "gh_xxx",//微信小程序id
            true,
            0,
        ShareSDKPlatforms.wechatSession);
    SharesdkPlugin.share(
        ShareSDKPlatforms.wechatSession, params, (SSDKResponseState state, Map userdata,
        Map contentEntity, SSDKError error) 
        showAlert(state, error.rawData, context);
    );
  
  void _shareQQ() 
    SSDKMap params = SSDKMap()
      ..setQQ(
          teamInfo['name'],
          "分享",
          "http://xxx.com",
          null,
          null,
          null,
          null,
          "",
          teamInfo['logo'],
          null,
          null,
          "http://xxx.com",
          null,
          null,
          SSDKContentTypes.webpage,
          ShareSDKPlatforms.qq);
    SharesdkPlugin.share(
        ShareSDKPlatforms.qq, params, (SSDKResponseState state, Map userdata,
        Map contentEntity, SSDKError error) 
    );
  

以上是关于flutter 分享功能 ios端 利用MobTech的ShareSDK进行分享 支持分享到微信微信小程序网页qq微博等主流平台的主要内容,如果未能解决你的问题,请参考以下文章

Flutter:扩展上周的“书架” App,利用数据库来存储笔记和收藏!

利用 Flutter 如何优雅的调用 Android 原生方法?

Flutter开发之iOS后台定位开发详解

Flutter开发之iOS后台定位开发详解

Flutter开发之iOS后台定位开发详解

Flutter开发之iOS后台定位开发详解