android友盟分享最新,Android友盟第三方登录、分享和统计自动集成

登录与分享自动集成的方式现只支持微信,QQ,新浪三个平台,如果需要使用其它平台请选择手动集成。

1:添加依赖

latest.integration即最新版本号

//友盟统计

compile 'com.umeng.sdk:common:latest.integration'

compile 'com.umeng.sdk:analytics:latest.integration'

//友盟分享

compile 'com.umeng.sdk:share-core:latest.integration'

compile 'com.umeng.sdk:share-qq:latest.integration'

compile 'com.umeng.sdk:share-wechat:latest.integration'

compile 'com.umeng.sdk:share-sina:latest.integration'

//分享面板

compile 'com.umeng.sdk:shareboard-widget:latest.integration'

如果无法正常集成,则需要在项目的builde.gradle中添加如下配置:

allprojects {

repositories {

mavenCentral()

}

}

2:添加权限

3:登录与分享相关配置

QQ相关配置:

在app级别 build.gradle中的 defaultConfig下添加manifestPlaceholders = [qqappid: "你的qq appid"]

不配置会出现下面的错误:

fbe9914e1967

1544497325(1).png

微信相关配置:

在包名目录下创建wxapi文件夹,新建一个名为WXEntryActivity的activity继承WXCallbackActivity,里面不用做操作。

public class WXEntryActivity extends WXCallbackActivity {

}

在AndroidManifest中注册WXEntryActivity

android:name=".wxapi.WXEntryActivity"

android:configChanges="keyboardHidden|orientation|screenSize"

android:exported="true"

android:screenOrientation="portrait"

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

4:统计相关配置:

在app的builde.gradle中配置需要的渠道,对应上面的渠道名称变量。

配置Appkey

配置多渠道打包

productFlavors {

Alpha {//自己打包测试使用

// manifestPlaceholders = [UMENG_CHANNEL_VALUE: Alpha]

}

Tencent {//投放应用宝市场

// manifestPlaceholders = [UMENG_CHANNEL_VALUE: Tencent]

}

Baidu {//投放百度市场

// manifestPlaceholders = [UMENG_CHANNEL_VALUE: Baidu]

}

Qihoo {//投放360市场

// manifestPlaceholders = [UMENG_CHANNEL_VALUE: Qihoo]

}

Alibaba {//投放阿里巴巴

// manifestPlaceholders = [UMENG_CHANNEL_VALUE: Alibaba]

}

Vivo {//投放vivo市场

// manifestPlaceholders = [UMENG_CHANNEL_VALUE: Vivo]

}

Oppo {//投放oppo市场

// manifestPlaceholders = [UMENG_CHANNEL_VALUE: Oppo]

}

Xiaomi {//投放小米市场

// manifestPlaceholders = [UMENG_CHANNEL_VALUE: Xiaomi]

}

Huawei {//投放华为应用市场

// manifestPlaceholders = [UMENG_CHANNEL_VALUE: Huawei]

}

productFlavors.all { flavor ->

flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]

}

}

在AndroidManifest中注册WXEntryActivity

5:在applicatio的onCreate()中添加各平台的第三方key并初始化

@Override

public void onCreate() {

super.onCreate();

/**

* 初始化common库

* 参数1:上下文,必须的参数,不能为空

* 参数2:友盟 app key,非必须参数,如果Manifest文件中已配置app key,该参数可以传空,则使用Manifest中配置的app key,否则该参数必须传入

* 参数3:友盟 channel,非必须参数,如果Manifest文件中已配置channel,该参数可以传空,则使用Manifest中配置的channel,否则该参数必须传入,channel命名请详见channel渠道命名规范

* 参数4:设备类型,必须参数,传参数为UMConfigure.DEVICE_TYPE_PHONE则表示手机;传参数为UMConfigure.DEVICE_TYPE_BOX则表示盒子;默认为手机

* 参数5:Push推送业务的secret,需要集成Push功能时必须传入Push的secret,否则传空

*/

UMConfigure.init(this,"你的应用在友盟上的APPKEY","umeng",UMConfigure.DEVICE_TYPE_PHONE,"");

/**

* 友盟相关平台配置。注意友盟官方新文档中没有这项配置,但是如果不配置会吊不起来相关平台的授权界面

*/

PlatformConfig.setWeixin("你的微信APPID", "你的微信AppSecret");//微信APPID和AppSecret

PlatformConfig.setQQZone("你的QQAPPID", "你的QQAppSecret");//QQAPPID和AppSecret

PlatformConfig.setSinaWeibo("你的微博APPID", "你的微博APPSecret","微博的后台配置回调地址");//微博

}

6:友盟第三方登录:

发起登录

private UMShareAPI umShareAPI;

private UMAuthListener umAuthListener;

mShareAPI = UMShareAPI.get(this);

mShareAPI.getPlatformInfo(this, SHARE_MEDIA.QQ, umAuthListener);//QQ登录

mShareAPI.deleteOauth(this, SHARE_MEDIA.QQ, umAuthListener);//撤销QQ授权

登录回调

umAuthListener = new UMAuthListener() {

@Override

public void onStart(SHARE_MEDIA platform) {}

@Override

public void onComplete(SHARE_MEDIA platform, int action, Map data) {

// Logger.e("openid: " + data.get("uid"));

// Logger.e("昵称: " + data.get("name"));

// Logger.e("头像: " + data.get("iconurl"));

// Logger.e("性别: " + data.get("gender"));

}

@Override

public void onError(SHARE_MEDIA platform, int action, Throwable t) {

}

@Override

public void onCancel(SHARE_MEDIA platform, int action) {

}

};

在使用界面中要添加onActivityResult方法,否则授权回调不成功,获取不到第三方信息。(如果在fragment中使用第三方登录,则在依附的activity中重写此方法)

@Override

public void onActivityResult(int requestCode, int resultCode, Intent data) {

super.onActivityResult(requestCode, resultCode, data);

UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data);

}

7:友盟社会化分享

发起分享

private UMShareListener umShareListener ;

UMImage image = new UMImage(this, R.mipmap.logo);//分享图标

final UMWeb web = new UMWeb("你要分享的地址"); //切记切记 这里分享的链接必须是http开头

web.setTitle("你要分享内容的标题");//标题

web.setThumb(image); //缩略图

web.setDescription("你要分享内容的描述");//描述

分享面板

new ShareAction(activity)

.setDisplayList(SHARE_MEDIA.QQ, SHARE_MEDIA.QZONE, SHARE_MEDIA.WEIXIN,SHARE_MEDIA.WEIXIN_CIRCLE)

.setShareboardclickCallback(new ShareBoardlistener() {

@Override

public void onclick(SnsPlatform snsPlatform, SHARE_MEDIA share_media) {

if (share_media == SHARE_MEDIA.QQ) {

KLog.e("点击QQ");

new ShareAction(activity).setPlatform(SHARE_MEDIA.QQ)

.withMedia(web)

.setCallback(umShareListener)

.share();

} else if (share_media == SHARE_MEDIA.WEIXIN) {

KLog.e("点击微信");

new ShareAction(activity).setPlatform(SHARE_MEDIA.WEIXIN)

.withMedia(web)

.setCallback(umShareListener)

.share();

} else if (share_media == SHARE_MEDIA.QZONE) {

new ShareAction(activity).setPlatform(SHARE_MEDIA.QZONE)

.withMedia(web)

.setCallback(umShareListener)

.share();

} else if (share_media == SHARE_MEDIA.WEIXIN_CIRCLE) {

new ShareAction(activity).setPlatform(SHARE_MEDIA.WEIXIN_CIRCLE)

.withMedia(web)

.setCallback(umShareListener)

.share();

}

}

}).open();

分享回调

umShareListener = new UMShareListener() {

@Override

public void onStart(SHARE_MEDIA platform) {

// 分享开始的回调

}

@Override

public void onResult(SHARE_MEDIA platform) {

Toast.makeText(ShareActivity.this, platform + " 分享成功啦", Toast.LENGTH_SHORT).show();

}

@Override

public void onError(SHARE_MEDIA platform, Throwable t) {

Toast.makeText(ShareActivity.this,platform + " 分享失败啦", Toast.LENGTH_SHORT).show();

}

@Override

public void onCancel(SHARE_MEDIA platform) {

Toast.makeText(ShareActivity.this,platform + " 分享取消了", Toast.LENGTH_SHORT).show();

}

};

在使用界面中要添加onActivityResult方法,否则授权回调不成功,获取不到第三方信息(如果在fragment中使用第三方登录,则在依附的activity中重写此方法)

@Override

public void onActivityResult(int requestCode, int resultCode, Intent data) {

super.onActivityResult(requestCode, resultCode, data);

UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data);

}

8:在调用界面添加动态申请权限:

if(Build.VERSION.SDK_INT>=23){

String[] mPermissionList = new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.ACCESS_FINE_LOCATION,Manifest.permission.CALL_PHONE,Manifest.permission.READ_LOGS,Manifest.permission.READ_PHONE_STATE, Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.SET_DEBUG_APP,Manifest.permission.SYSTEM_ALERT_WINDOW,Manifest.permission.GET_ACCOUNTS,Manifest.permission.WRITE_APN_SETTINGS};

ActivityCompat.requestPermissions(this,mPermissionList,123);

}

9:友盟Session统计:

即启动数据的统计(包括新增用户、活跃用户、启动次数、使用时长等基本数据)

需要在每个Activity的onResume方法中调用 MobclickAgent.onResume(Context),

onPause方法中调用 MobclickAgent.onPause(Context),如下:

protected void onResume() {

super.onResume();

MobclickAgent.onResume(this);

}

protected void onPause() {

super.onPause();

MobclickAgent.onPause(this);

}

确保在所有的Activity中都调用 MobclickAgent.onResume() 和onPause()方法。

如果Activity之间有继承或者控制关系请不要同时在父和子Activity中重复添加nPause和nResume方法,否则会造成重复统计。例如在BaseActivity中添加过,则它的子类就不需要添加了。

当应用在后台运行超过30秒(默认)再回到前端,将被认为是两个独立的session(启动),例如用户回到home,或进入其他程序,经过一段时间后再返回之前的应用。可通过接口:setSessionContinueMillis(long interval) 来自定义这个间隔(参数单位为毫秒)。

如果开发者调用kill或者exit之类的方法杀死进程,请务必在此之前调用onKillProcess(Context context)方法,用来保存统计数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值