美文网首页
记录微信分享的一些坑

记录微信分享的一些坑

作者: 易水枫岚 | 来源:发表于2017-09-08 15:03 被阅读0次

在帮别的项目干活时遇到了要做微信分享的功能,当时觉得这不就是小case(因为之前都写过),可能是由于那边项目的人不太懂吧,居然没有提前去申请微信app_id,没关系,反正写过,打开之前的项目,复制粘贴,他们申请好了肯定就能用了,先看看我是怎么写的。


1、添加最新的微信分享sdk:

compile'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+'

2、微信初始化,你可以在Application 里面写,也可以在分享的activity的onCreat方法里面写:

public IWXAPI api;      //这个对象是用来向微信发送数据的一个接口,所有的信息发送都是基于这个对象的

public void registerWeChat(Context context) {  //向微信注册app

api = WXAPIFactory.createWXAPI(context, APP_ID, true);

api.registerApp(APP_ID);

}

3、就是你写你分享的ui了,具体就不粘贴代码了,下面看一下微信分享的方法,下面以网页分享为例子:

/**

*微信分享

*/

private void  wechatShare(int flag,String title,String content,String url) {

WXWebpageObject webpage = new  WXWebpageObject();

webpage.webpageUrl = url;//分享的url

WXMediaMessage msg = new WXMediaMessage(webpage);

msg.title=title;//分享的标题

msg.description=content;//分享描述

//这里替换一张自己工程里的图片资源

Bitmapthumb=BitmapFactory.decodeResource(getResources(),R.mipmap.icon_share);

msg.setThumbImage(thumb);

SendMessageToWX.Reqreq=newSendMessageToWX.Req();

req.transaction= buildTransaction("webpage");

req.message=msg;

req.scene=

flag==0?SendMessageToWX.Req.WXSceneSession:SendMessageToWX.Req.WXSceneTimeline;

mIWXAPI.sendReq(req);

}

privateStringbuildTransaction(finalStringtype) {

return(type==null) ?String.valueOf(System.currentTimeMillis())

:type+System.currentTimeMillis();

}

4、最后别忘记了微信分享的回调,一定要在wxapi包下面建一个Activity名字叫WXEntryActivity(固定)

public class  WXEntryActivity  extends  AppCompatActivity   implements  IWXAPIEventHandler{

private static final  String  TAG  =  "WXEntryActivity";

private  IWXAPI api;

@Override

public void  onCreate(Bundle  savedInstanceState) {

super.onCreate(savedInstanceState);

api = WXAPIFactory.createWXAPI(this,Constant.WX_APP_ID,false);

//api.registerApp(Constant.WX_APP_ID);

api.handleIntent(getIntent(),this);

}

@Override

protected voidonNewIntent(Intentintent) {

super.onNewIntent(intent);

setIntent(intent);

api.handleIntent(intent,this);

}

@Override

public voidonReq(BaseReq baseReq) {

Log.d(TAG,"we chat in");

}

@Override

public voidonResp(BaseResp baseResp) {

switch(baseResp.errCode) {

case  BaseResp.ErrCode.ERR_OK:

//分享成功

Toast.makeText(WXEntryActivity.this,R.string.share_success,Toast.LENGTH_SHORT).show();

break;

case  BaseResp.ErrCode.ERR_USER_CANCEL:

//分享取消

Toast.makeText(WXEntryActivity.this,R.string.share_cancel,Toast.LENGTH_SHORT).show();

break;

case  BaseResp.ErrCode.ERR_AUTH_DENIED:

Toast.makeText(WXEntryActivity.this,R.string.share_denied,Toast.LENGTH_SHORT).show();

break;

case  BaseResp.ErrCode.ERR_SENT_FAILED:

Toast.makeText(WXEntryActivity.this,R.string.share_send_failed,Toast.LENGTH_SHORT).show();

break;

case  BaseResp.ErrCode.ERR_UNSUPPORT:

Toast.makeText(WXEntryActivity.this,R.string.share_unsupport_error,Toast.LENGTH_SHORT)

.show();

break;

default:

Toast.makeText(WXEntryActivity.this,R.string.share_failed,Toast.LENGTH_SHORT).show();

break;

}

finish();

}

}

5、最后别忘记了在AndroidMainfest.xml里面注册:

<activity

android:name="WXEntryActivity"

android:configChanges="keyboardHidden|orientation|screenSize"

android:exported="true"

android:screenOrientation="portrait"

android:theme="@android:style/Theme.Translucent.NoTitleBar"/>


写完手工,过两天他们告诉我appId申请下来了,填写进去,没问题,一切OK,我果然还是很厉害的,但是事情还没有结束,过了大概一个月他们突然告诉我微信分享不能用了。具体情况是朋友圈可以分享,微信好友分享的时候拉起好友列表以后发现好友列表点击无效。这时候我就不信了,不可能吧,要坏一起坏,要好一起好啊,坏一般啥意思,我代码又没动过,想不明白,这时候我开启了百度之旅。

 还真找到了几个同样的问题:

友盟分享,点击微信分享,可以进入微信,也有微信好友,点击要分享的好友,不能成功,混淆什么都加了,不知道什么原因

这个问题困扰了我好久,微信和app都卸载了好几遍,但是一到微信好友界面就是点击后不能跳出弹框,朋友圈直接不能点开!!

最先感觉好像这个靠谱http://bbs.umeng.com/thread-13230-2-1.html是友盟官方论坛,说是没有混淆好,我就千辛万苦混淆了,可是。。。。。不行!!问题依然存在。

接下来我终于找到了解决方法,连接在此:http://bbs.umeng.com/thread-26260-1-1.html

仔细看了好久,这是3月多的公告啊,我也没用精简版啊,不对不对,接着找。

这个就很像了和我的问题一模一样嘛,赶紧去加混淆,等等,不对,我就没开启混淆加什么加。

就这样困扰了一天,直到晚上睡觉前突然想到,代码我没动,应该没问题,微信那么吊,应该也不会有问题,是不是接口的锅,先到这里赶紧打开电脑 把所有分享信息写死,果然,成功了。

接着开始分析是哪里的问题吧仔细看看看分享的参数:

webpage.webpageUrl=url;

WXMediaMessagemsg=newWXMediaMessage(webpage);

msg.title=title;

msg.description=content;

//这里替换一张自己工程里的图片资源

Bitmapthumb=BitmapFactory.decodeResource(getResources(),R.mipmap.icon_share);

msg.setThumbImage(thumb);

SendMessageToWX.Reqreq=newSendMessageToWX.Req();

req.transaction= buildTransaction("webpage");

req.message=msg;

最终发现接口返回的title是空的,长见识了,原来title为空会导致这样的问题,在此记录一下,以后一定要谨记。

相关文章

  • 2021-05-12

    微信分享跳转2次,微信分享跳转微信正在连接,分享微信没反应 这几天搞微信分享,还是有一些坑在里面的,记录踩过的坑;...

  • 记录微信分享的一些坑

    在帮别的项目干活时遇到了要做微信分享的功能,当时觉得这不就是小case(因为之前都写过),可能是由于那边项目的人不...

  • VUX 单页微信开发的那些事

    网上已有很多SPA单页做微信开发碰到的那些坑,这里就自己最近经验总结一些我踩过的一些坑,整理记录一下 VUX是微信...

  • 微信分享

    微信公众平台绑定域名 遇到的坑 遇到的问题,微信API的附录里面都有。 这里的坑: 虽然调用了微信分享,但是并不意...

  • 课后笔记,关于“微信背后的产品观”

    昨天听了微信团队某早期成员关于“微信产品观”的分享,有一些收获,所以记录并发出来。这里记录的并不是全部分享内容,只...

  • Java中的微信支付(1):API V3版本签名详解

    1. 前言 最近在折腾微信支付,证书还是比较烦人的,所以有必要分享一些经验,减少你在开发微信支付时的踩坑。目前微信...

  • 微信分享——ios和安卓机制居然不一样!

    之前分享过一篇转载的微信分享填坑文章 基本涵盖了微信分享功能开发的基本操作。 实际项目中,在做微信分享追踪的时候,...

  • mpvue开发微信小程序踩过的坑

    最近公司需要研发微信小程序,中间踩了一些坑记录下来。 利用axios发送交易 直接使用axios报错,因为微信小程...

  • 微信JSSDK分享的一些坑

    最近做微信方面的H5应用比较多,很多情况下需要定制页面的分享内容,例如标题、描述、分享的图片等,这时候就需要用到微...

  • Swift开发 微信第三方登录

    引言 微信支付和微信第三方登录已经做过好多次了,每次做感觉都有坑,详细记录下,以免下次踩坑,先从微信登录开始吧。 ...

网友评论

      本文标题:记录微信分享的一些坑

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