美文网首页
第三方服务篇——微信好友分享、朋友圈分享、收藏

第三方服务篇——微信好友分享、朋友圈分享、收藏

作者: lvTravler | 来源:发表于2019-08-21 09:47 被阅读0次

在上一篇微信登录详细实现中,实现了微信登录,那么本篇探索一下微信分享.

笔者基于DIalogFragment实现了分享界面可配合此篇使用传送门

效果图:

ItemDialog.png

微信分享、收藏和登录前期步骤都一样,详情请查看微信登录篇

可分享类型:

1.文字
2.图片
3.音乐
4.视频
5.网页
6.小程序至微信好友会话
7.朋友圈或添加到微信收藏

代码实现

具体实现微信开发平台说的很详细,这里就以网页分享为例

//创建wechatOpenApi实例
override fun init() {
        wechatOpenApi = WXAPIFactory.createWXAPI(this, Config.WECHAT_APPID, true)
 }

private fun shareToWechat(shareIcon: Int,shareScene:Int) {
        if (wechatOpenApi.isWXAppInstalled) {//是否已安装微信客户端
            //初始化一个WXWebpageObject,填写url
            val webPage = WXWebpageObject()
            webPage.webpageUrl = mWebActWebContainer.originalUrl

            //用 WXWebpageObject 对象初始化一个 WXMediaMessage 对象
            val msg = WXMediaMessage(webPage)
            msg.title = mWebActWebContainer.title
            msg.description = mWebActWebContainer.title
            val thumbBmp = BitmapFactory.decodeResource(resources, shareIcon)
           //TODO 转到下边说明
            msg.thumbData = ImageUtil.bmpToByteArray(thumbBmp, Config.MAX_WECHAT_SHARE_THUMB, true)

            //构造一个Req
            val req = SendMessageToWX.Req()
            req.transaction = buildTransaction("webPage")
            req.message = msg
            /**

             //分享场景:微信好友、朋友圈、收藏、特定好友
            req.scene=shareScene
             /**
             * public static final int WXSceneSession = 0;
             * public static final int WXSceneTimeline = 1;
             * public static final int WXSceneFavorite = 2;
             * public static final int WXSceneSpecifiedContact = 3;
             *  对应值
             */
            //调用api接口,发送数据到微信
            wechatOpenApi.sendReq(req)
        } else {
            showError(R.string.not_install_wechat_prompt)
        }
    }

private fun buildTransaction(type: String?): String {
        return if (type == null) System.currentTimeMillis().toString() else type + System.currentTimeMillis()
}
//裁剪图片
public static byte[] bmpToByteArray(final Bitmap bitmap, int maxKb, final boolean needRecycle) {
        ByteArrayOutputStream output = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.PNG, 100, output);
        int options = 100;
        while (output.toByteArray().length > maxKb && options != 10) {
            output.reset(); //清空output
            bitmap.compress(Bitmap.CompressFormat.JPEG, options, output);//这里压缩options%,把压缩后的数据存放到output中
            options -= 10;
        }
        if (needRecycle) {
            bitmap.recycle();
        }
        return output.toByteArray();
    }

注意点:

网页分享图片缩略图(代码msg.thumbData)不能超过32k限制,超出就会分享失败,那么必须对原图进行裁剪,微信Demo中提供了一个裁剪方法,笔者使用后不管用,在网上找了一同学贴出来比较好使的方法(即上述bmpToByteArray())但是地址给忘了,在此说明一下!

在前期工作都做好的情况,分享比较容易。还有一项需要说明的是分享不需要缴300RMB也行,只要资质审核通过就可。

此外,分享也可调用系统分享,更方便但是可定制性不高,就看开发者怎么取舍了,系统分享笔者就不写了,许多同学写的非常清楚

传送门:

《实现分享功能的几个办法》
《Android分享---调用系统自带的分享功能》
《利用 Android 系统原生 API 实现分享功能》

相关文章

  • 第三方服务篇——微信好友分享、朋友圈分享、收藏

    在上一篇微信登录详细实现中,实现了微信登录,那么本篇探索一下微信分享. 笔者基于DIalogFragment实现了...

  • 功能:微信分享至好友&朋友圈

    多数应用需要有微信分享的功能,一般是分享至好友或者是朋友圈。微信开放平台提供了接入微信分享的第三方SDK,...

  • ios最好用的第三方分享集成框架

    ios最好用的第三方分享集成框架 ios一般项目中都会有第三方分享功能,微信好友 朋友圈 新浪微博 分享 链接,图...

  • 关于微信分享我们可以做些什么

    对于重社交、重运营的产品来说,绕不开微信好友分享以及朋友圈分享。那么就来聊一聊分享微信好友/朋友圈时有哪些信息是可...

  • 使用最新ShareSDK实现分享功能

    将内容分享到其他平台是个非常普遍的功能,今天和大家分享一下,如何用ShareSDK实现分享到微信好友、微信收藏、微...

  • 介绍

    什么场景下使用微信分享 线下推广、线上传播 分享渠道:H5、小程序、App 分享方式:微信好友、朋友圈、QQ好友、...

  • iOS从APP中分享出小程序详解

    分享与收藏开发文档(iOS应用) 微信分享及收藏是指第三方App通过接入该功能,让用户可以从App分享文字、图片、...

  • iOS-友盟单个分享

    分享URL链接 微信好友 微信朋友圈 QQ QQ空间 新浪微博

  • MobShareSDK 分享

    1.iOS 微信好友和微信朋友圈分享 桥接头部添加 具体微信分享 遇到弹框显示本地化问题

  • 微信平台简介

    微信开放平台 移动应用网站应用第三方平台功能微信登录 微信支付 分享收藏微信登录N/A其他拉起小程序 图像识...

网友评论

      本文标题:第三方服务篇——微信好友分享、朋友圈分享、收藏

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