react native 实现MobSDK微信分享文件(专治各种坑)

照例写在前面的话,在之前做分享的时候,我用的是友盟的分享,这次换成了MOB的分享,碰到了很多的问题,这里给大家一一分享一下,那么我们开始吧!

http://www.mob.com/是他们的官方网站,我们的标题是react native来实现分享,实际上的操作时在react native层调用本地层的代码,也就是调用androidios层的代码来实现,中间的调用只是一个桥接,关键部分还是在native,所以这里大家关于react native调用android的源码,大家可以看我之前的这篇文章

那么,我们开始吧:

访问网站它们的官网,打开快速集成页面,就是这个地址,貌似他们的网页改版了。

现在的android已经不需要自己去下载jar包了,所以我们现在第一步是:

配置Gradle

第一步:

打开项目根目录的build.gradle,在buildscrip–>dependencies 模块下面添加 classpath 'com.mob.sdk:MobSDK:+':

buildscript {
    repositories {
        jcenter()
    }
 
    dependencies {
        ...
        classpath 'com.mob.sdk:MobSDK:+'
 
    }
}
image
第二步:

如果你的项目里集成了很多模块,那就记得哪个模块使用分享的sdk,就在哪个项目去集成:

在使用到Mob产品的module下面的build.gradle文件里面添加引用,例如:

apply plugin: 'com.mob.sdk'
image

说明:做完上面这两点,你就可以async了,这里有个坑就是,当你async完以后,要看一下这个包onKeyShare有没有添加到你的库里,有可能不存在。这个是分享要用到的,如果没有,后面就没有办法走了。如果真的不存在的话,在classpath 'com.mob.sdk:MobSDK:+'后面按个空格,在重新async几次就可以了。

第三步:

第三步,配置mobkey和秘钥 (与第2步是一个gradle中;注意:方法是配置到文件根目录,
与android并列,不要配置到android里面哦)

MobSDK {
    appKey "d580ad56b4b5"
    appSecret "7fcae59a62342e7e2759e9e397c82bdd"
 
    ShareSDK {
        //平台配置信息
        devInfo {
            SinaWeibo {
                appKey "568898243"
                appSecret "38a4f8204cc784f81f9f0daaf31e02e3"
                callbackUri "http://www.sharesdk.cn"
                shareByAppClient false
            }
            Wechat {
                appId "wx4868b35061f87885"
                appSecret "64020361b8ec4c99936c0e3999a9f249"
            }
            QQ {
                appId "100371282"
                appKey "aed9b0303e3ed1e27bae87c33761161d"
            }
            Facebook {
                appKey "1412473428822331"
                appSecret "a42f4f3f867dc947b9ed6020c2e93558"
                callbackUri "https://mob.com"
            }
        }
    }

上面的MobSDK下面的appKeyappSecret是你自己注册的账号里,添加的应用的appkey,和appSecret。而下面的各个平台的appkeyappSecret则需要你去对应平台的官网去注册。

申请Mob的appkey与appsecret请点击这里查看

第五步:

注:如果您没有在AndroidManifest中设置appliaction的类名,MobSDK会将这个设置为com.mob.MobApplication,但如果您设置了,请在您自己的Application类中调用:

MobSDK.init(this,appKey,appSecret);

不要用官网的:

MobSDK.init(this);

要不然会出现莫名其妙的问题。

在这里我们假设上面你添加的appKeyappSecret和各个平台的deviceInfo都没有问题,那么我们这里就可以调用代码了。
这里的代码是官网的那个,调用弹出框,然后出那个九宫格的,有很多平台的那个。

@ReactMethod
public void showShare() {
     OnekeyShare oks = new OnekeyShare();
     //关闭sso授权
     oks.disableSSOWhenAuthorize(); 
 
     // title标题,微信、QQ和QQ空间等平台使用
     oks.setTitle(getString(R.string.share));
     // titleUrl QQ和QQ空间跳转链接
     oks.setTitleUrl("http://sharesdk.cn");
     // text是分享文本,所有平台都需要这个字段
     oks.setText("我是分享文本");
     // imagePath是图片的本地路径,Linked-In以外的平台都支持此参数
     oks.setImagePath("/sdcard/test.jpg");//确保SDcard下面存在此张图片
     // url在微信、微博,Facebook等平台中使用
     oks.setUrl("http://sharesdk.cn");
     // comment是我对这条分享的评论,仅在人人网使用
     oks.setComment("我是测试评论文本");
    // 启动分享GUI
    oks.show(this);
}

官方的demo下载地址:ShareSDK-for-Android

如果上面你没有碰到坑,那么就能调出弹出框。下面我们说一下微信的分享,这里着重说一下微信的部分。

第一个坑:签名

1.当你发现你能调用起微信的登录界面时,说明你async的时候文件都在,然后也初始化了。

2.如果发现自己微信调用调起时一闪而逝,那么一定是签名的问题,微信的签名

3.如果你设置的微信的appKeyappSecet是正式版的,那么你在测试的时候需要打包在进行测试。

关于怎么弄微信签名,这里请自己百度。

我错了,我高估了我的脑子,我已经忘了这里怎么弄了!

闪一下就没反应了 是签名问题,微信需要签名打包才可以分享,签名不一致就会导致这样的问题。签名打包的意思是您
把应用打包成一个APK需要一个签名文件,这个签名文件里面有串MD5码,这个MD5码去掉全部的冒号,把全部的大写换
成小写,填写到微信开放平台那边的应用签名里面就行了。或者 利用签名工具获取(先将自己的工程打包apk安装到手机
上,然后输入包名同样可以获取签名)

[网址](https://open.weixin .qq.com/cgi-bin/readtemplatet=resource/app_download_android_tmpl&lang=zh_CN)

第二个坑:在MobSDK下的配置文件里。在各个平台的设置中,除了设置必要的的appKeyappSecet,还需要注意以下几个:

1.sortId可以用来配置在九宫格里显示的位置,数字越小越靠前。

2.shareByAppClient,布尔值,设置它为true表示需要客户端才可以分享。比如微信。

3.bypassApproval,布尔值,表示是否绕过审核。

如果你分享文本和图片,可以使用设置绕过审核,绕过审核的话,不检查appKeyappSecret,所以测试完毕以后,记得把这个字段设置为false.

4.enable表示是否启用该平台。

其他的字段大家可以查看官网...

分享文件的坑

//...
sp.setShareType(Platform.SHARE_FILE);
//#if def{lang} == cn
// 待分享文件的本地地址
//#elif def{lang} == en
// local path of the file to share
//#endif
sp.setFilePath(MainActivity.testImage);
sp.setImagePath(MainActivity.testImage);
//...

在官网的demo里只有三行代码。我们也可以给它添加上titletext.

知道为啥只有三行代码不,因为这三行代码是必须的。如果在测试的发现空指针的错误,就说明你设置的file_pathimage_path必然有一个是空的。

其他的一些坑

还有一个是,关于各个平台的配置名称的。官网上这样:

devInfo.png

大家想要使用什么分享,就配置各个平台的数据。这里的一个坑是这样的。。

Platform plat = ShareSDK.getPlatform(WechatMoments.NAME);

在上面的代码,我们直接调用的WechatMoments.NAME,然后如果你发现并没有这个WechatMoments的时候,说明你并没有在build.gradle中配置这个平台。

恩恩,差不多就是这样子...Over...

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,743评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,296评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,285评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,485评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,581评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,821评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,960评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,719评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,186评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,516评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,650评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,329评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,936评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,757评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,991评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,370评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,527评论 2 349

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,777评论 25 707
  • 用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你...
    hw1212阅读 12,699评论 2 59
  • 一.前提摘要 社会化分享每个app必备的推广需求,无论是拉新,邀请,游戏奖励,等等都离不开分享的影子,下面我们介绍...
    皮皮酱ye阅读 1,714评论 1 0
  • 前言 最近项目需要加入第三方分享功能,看了网上的一些第三方SDK的介绍,觉得ShareSDK是一个很强大方便的第三...
    白白酱阅读 7,085评论 1 0
  • 搬过来的这三天,我每天上午在这里办公,下午送货去店里,下班后再把市场货带回来,昨天傍晚跟在他屁股后面爬上屋顶去打防...
    Ada与一谷一麦阅读 430评论 0 0