【友盟+】 U-Share集成
一、申请 appkey
1.1 登陆友盟+平台后点击【个人中心】
1.2 找到【U-Share】点击【立即使用】
1.3 选择【管理】标签,点击【添加应用】
1.4 填写应用基本信息,并获取appkey
二、设置分享平台信息
1.去各个平台注册应用(例如:微信开放平台、腾讯开放平台)
2.在友盟平台选择应用
3.选择分享设置
4.填写平台信息
三、下载 SDK
1.下载地址
2.根据需要勾选下载的集成包内容
3.下载集成包
4.解压压缩包后点击【友盟集成工具.jar】,按需选择。
5.完成后生成【umeng_integratetool_result】文件夹。
四、工程配置
4.1 复制文件至工程
1.将【umeng_integratetool_result】文件夹下内容拷贝进工程相应的文件夹中。2.修复项目res文件的引用error。
4.2 添加回调Activity
4.2.1 微信回调
1.在包名目录下创建【wxapi】文件夹,新建一个名为【WXEntryActivity】的activity继承WXCallbackActivity。
2.根据使用SDK选择WXEntryActivity路径
3.在Android Manifest中注册微信回调Activity
4.2.2 QQ与新浪
QQ与新浪不需要添加Activity,但需要在使用QQ分享或者授权的Activity中,添加:
**注意:**onActivityResult不可在fragment中实现,如果在fragment中调用登录或分享,需要在fragment依赖的Activity中实现。
4.3 配置Android Manifest XML
4.3.2 添加权限
4.3.3 添加Activity
4.3.3.1 QQ完整版
android:name="com.tencent.tauth.AuthActivity" android:launchMode="singleTask" android:noHistory="true" >
android:name="com.tencent.connect.common.AssistActivity" android:screenOrientation="portrait" android:theme="@android:style/Theme.Translucent.NoTitleBar" android:configChanges="orientation|keyboardHidden|screenSize"/> 备注:分享编辑页(只有新浪微博,QQ精简版,豆瓣,人人,腾讯微博,领英,twitter需要)。 4.3.4 添加友盟appkey android:name="UMENG_APPKEY" android:value="*****************" > 4.4 Android 6.0+适配 Android6.0以上系统需要动态申请权限,根据需求,在适当位置校验和申请权限。运行时权限校验及申请,可以参考此文章。Android运行时权限 4.5 配置友盟key及三方key 在application文件中配置三方平台的appkey: 备注:在application中初始化sdk,这个初始化最好放在application的程序入口中,防止意外发生。 4.6 签名设置 在项目中设置打包签名(需要与各大平台申请时使用签名保持一致)。 4.7 注意事项 1.微信平台回调Activity的路径名必须是【包名.wxapi.WXEntryActivity】,应用签名必须微信平台申请一致。 2.QQ平台必须允许读写SD卡权限; 3.QQ空间平台使用的是QQ应用(安装QQ空间应用视为未安装应用)。 五、分享集成 5.1 回调监听 private UMShareListener umShareListener = new UMShareListener() { /** * @descrption 分享开始的回调 * @param platform 平台类型 */ @Override public void onStart(SHARE_MEDIA platform) {} /** * @descrption 分享成功的回调 * @param platform 平台类型 */ @Override public void onResult(SHARE_MEDIA platform) { Toast.makeText(mContext,"分享成功",Toast.LENGTH_SHORT).show(); } /** * @descrption 分享失败的回调 * @param platform 平台类型 * @param t 错误原因 */ @Override public void onError(SHARE_MEDIA platform, Throwable t) { Toast.makeText(mContext,"分享失败"+t.getMessage(),Toast.LENGTH_SHORT).show(); } /** * @descrption 分享取消的回调 * @param platform 平台类型 */ @Override public void onCancel(SHARE_MEDIA platform) { Toast.makeText(mContext,"取消分享",Toast.LENGTH_SHORT).show(); } }; 5.2 不带面板分享 5.3 带面板分享 5.4 分享消息类型 5.4.1 文本 5.4.2 图片 UMImage的构建有如下几种形式: UMImage image = new UMImage(ShareActivity.this, "imageurl");//网络图片 UMImage image = new UMImage(ShareActivity.this, file);//本地文件 UMImage image = new UMImage(ShareActivity.this, R.drawable.xxx);//资源文件 UMImage image = new UMImage(ShareActivity.this, bitmap);//bitmap文件 UMImage image = new UMImage(ShareActivity.this, byte[]);//字节流 5.4.3 链接 1.构建UMWeb 2.将UMWeb设置到ShareAction中 分享结果: 5.4.4 视频 1.视频只能使用网络视频: UMVideo video = new UMVideo(videourl);//视频地址 video.setTitle(“视频标题”);//视频的标题 video.setThumb(“http://www.umeng.com/images/pic/social/chart_1.png“);//视频的缩略图 video.setDescription(“视频描述”);//视频的描述 2.使用.withMedia(video)设置到ShareAction中 5.4.5 音乐 1.音乐只能使用网络音乐: UMusic music = new UMusic(musicurl);//音乐的播放链接 music.setTitle(“This is music title”);//音乐的标题 music.setThumb(“http://www.umeng.com/images/pic/social/chart_1.png“);//音乐的缩略图 music.setDescription(“my description”);//音乐的描述 music.setmTargetUrl(Defaultcontent.url);//音乐的跳转链接 2.使用.withMedia(music)设置到ShareAction中 备注:特别说明:播放链接是指在微信qq分享音乐,是可以在当前聊天界面播放的,要求这个musicurl(播放链接)必须要以.mp3等音乐格式结尾,跳转链接是指点击linkcard之后进行跳转的链接。 5.4.6 GIF 1.构建UMEmoji UMEmoji emoji = new UMEmoji(this,”GIF图片地址”); emoji.setThumb(new UMImage(this, R.drawable.thumb));//缩略图 2.使用.withMedia(emoji)设置到ShareAction中 备注:目前只有微信好友分享支持Emoji表情,其他平台暂不支持。 5.4.7 微信小程序 1.构建UMMin UMMin umMin = new UMMin(Defaultcontent.url); umMin.setThumb(imagelocal); umMin.setTitle(Defaultcontent.title); umMin.setDescription(Defaultcontent.text); umMin.setPath("pages/page10007/xxxxxx"); umMin.setUserName("xx_xxx"); 2.使用.withMedia(umMin)设置到ShareAction中 备注:目前只有微信好友支持小程序分享,朋友圈,收藏及其他平台暂不支持。 5.5 自定义分享UI 5.5.1 在分享面板添加一个自定义按钮 5.5.1.1 添加一个自定义按钮 5.5.1.2 addButton说明 1.第一个参数(showword):显示的名字2.第二个参数(Keyword): 平台名称 用法如下: 1. 在string文件中设置: 2. 然后将名字umeng_sharebutton_custom当做参数传入。 3.第三个参数(icon): 按钮图标的图片名字4.第四个参数(Grayicon): 置灰情况下按钮图标的图片名字 用法如下: 在drawable文件夹下有个图片叫做info_icon_1.png,想用该图片做按钮图标,可以将info_icon_1作为参数传入 5.5.1.3 分享面板回调监听 private ShareBoardlistener shareBoardlistener = new ShareBoardlistener() { @Override public void onclick(SnsPlatform snsPlatform, SHARE_MEDIA share_media) { if (share_media == null) { //根据key来区分自定义按钮的类型,并进行对应的操作 if (snsPlatform.mKeyword.equals("Keyword")) { Toast.makeText(ShareActivity.this, "add button success", Toast.LENGTH_LONG).show(); } } else {//社交平台的分享行为 new ShareAction(ShareActivity.this) .setPlatform(share_media) .setCallback(umShareListener) .withText("多平台分享") .share(); } } }; 5.5.2 自定义分享面板 对于分享面板,开发者可以根据喜好,对背景颜色,显示位置,字体颜色等进行配置,配置需要使用ShareBoardConfig类。 更多参数设置查看分享集成文档附录4.6分享面板自定义进阶。点击跳转 六、常用接口调用 6.1 Debug模式开启方式 在初始化sdk的地方设置Config.DEBUG = true 6.2 内存泄露处理方法 在使用分享或者授权的Activity中,重写onDestory()方法: @Override protected void onDestroy() { super.onDestroy(); UMShareAPI.get(this).release(); } 6.3 判断客户端安装 mShareAPI.isInstall(this, SHARE_MEDIA.WEIXIN) 七、常见问题 7.1 调不起微信,弹窗一闪而过 可能原因: 应用签名与微信开放平台填写签名不一致(debug签名);微信开放平台签名填写的签名格式有误,微信开放平台格式:【全小写,不加:】。