Android 友盟统计 友盟推送 友盟分享快速集成
来源:互联网 发布:淘宝客服写简历 编辑:程序博客网 时间:2024/06/06 08:35
一.友盟统计
1.首先需要到友盟官网 http://mobile.umeng.com/apps注册并且添加新应用,获得Appkey
2.导入SDK,新版SDK支持Android 6.0,http://download.csdn.net/download/a704755096/9676752
如果是Android Studio:在Gradle依赖中添加:
dependencies { compile 'com.umeng.analytics:analytics:latest.integration'}
如果无法正常集成请添加如下代码 :
allprojects {3.配置xml
repositories {
mavenCentral()
}
}
<manifest……><uses-sdk android:minSdkVersion="8"></uses-sdk><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><uses-permission android:name="android.permission.INTERNET"/><uses-permission android:name="android.permission.READ_PHONE_STATE"/><application ……>……<activity ……/><meta-data android:value="xxx" android:name="UMENG_APPKEY"/><meta-data android:value="xxx" android:name="UMENG_CHANNEL"/></application> </manifest>
4.添加代码,主入口文件调用//要发送错误统计为true在每个Activity的onResume方法中调用 ,
在每个Activity的onPause方法中调用
public void onResume() {super.onResume();MobclickAgent.onResume(this);}public void onPause() {super.onPause();MobclickAgent.onPause(this);}
小技巧:6.0获取设备信息有变,当xml中的 targetSdkVersion<23时候, 可以正常获取信息(相当于跳过了6.0权限检查)。。到此基本功能已经完成……二.友盟推送
1.首先需要到友盟官网 http://push.umeng.com注册并且添加新应用,用包名添加应用时获得的AppKey和Umeng Message Secret替换掉PushDemo下的AndroidManifest.xml中的默认的AppKey和Umeng Message Secret
2.导入PushSDK,新版SDK支持Android 6.0,http://download.csdn.net/download/a704755096/9676752
PushSDK 3.0 libs默认只提供armeabi和x86两种so文件夹,若主工程中的so文件夹与PushSDK下的so文件夹不一致,则可以添加缺少的so文件夹至 PushSDK下libs,或删除PushSDK libs下多余的so文件夹,必须使PushSDK libs的so文件夹与主工程的so文件夹保持一致。
如果是Android Studio:在Gradle依赖中添加:
- 在Application Module的build.gradle文件的
dependencies
下添加compile project(':PushSDK')
。 - 请确保Application Module的build.gradle文件中的
applicationId
与应用包名package
一致。
3.配置xml,把PushSDK目录下的AndroidManifest.xml
中的${applicationId}
替换成为自己项目的包名。
<manifest……><uses-sdk android:minSdkVersion="8"></uses-sdk>
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.BROADCAST_PACKAGE_ADDED" /> <uses-permission android:name="android.permission.BROADCAST_PACKAGE_CHANGED" /> <uses-permission android:name="android.permission.BROADCAST_PACKAGE_INSTALL" /> <uses-permission android:name="android.permission.BROADCAST_PACKAGE_REPLACED" /> <uses-permission android:name="android.permission.RESTART_PACKAGES" /> <uses-permission android:name="android.permission.GET_TASKS" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />- <application>- <service android:name="com.taobao.accs.ChannelService" android:exported="true" android:process=":channel">- <intent-filter> <action android:name="com.taobao.accs.intent.action.SERVICE" /> </intent-filter>- <intent-filter> <action android:name="com.taobao.accs.intent.action.ELECTION" /> </intent-filter> </service>- <service android:name="com.taobao.accs.data.MsgDistributeService" android:exported="true">- <intent-filter> <action android:name="com.taobao.accs.intent.action.RECEIVE" /> </intent-filter> </service>- <receiver android:name="com.taobao.accs.EventReceiver" android:process=":channel">- <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter>- <intent-filter> <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> </intent-filter>- <intent-filter> <action android:name="android.intent.action.PACKAGE_REMOVED" /> <data android:scheme="package" /> </intent-filter>- <intent-filter> <action android:name="android.intent.action.USER_PRESENT" /> </intent-filter> </receiver>- <receiver android:name="com.taobao.accs.ServiceReceiver" android:process=":channel">- <intent-filter> <action android:name="com.taobao.accs.intent.action.COMMAND" /> </intent-filter>- <intent-filter> <action android:name="com.taobao.accs.intent.action.START_FROM_AGOO" /> </intent-filter> </receiver> <service android:name="com.taobao.accs.ChannelService$KernelService" android:process=":channel" /> - <service android:name="org.android.agoo.accs.AgooService" android:exported="true">- <intent-filter> <action android:name="com.taobao.accs.intent.action.RECEIVE" /> </intent-filter> </service>- <service android:name="com.umeng.message.UmengIntentService" android:exported="true">- <intent-filter> <action android:name="org.agoo.android.intent.action.RECEIVE" /> </intent-filter> </service>- <receiver android:name="com.taobao.agoo.AgooCommondReceiver" android:exported="true">- <intent-filter> <action android:name="${applicationId}.intent.action.COMMAND" /> </intent-filter>- <intent-filter> <action android:name="android.intent.action.PACKAGE_REMOVED" /> <data android:scheme="package" /> </intent-filter> </receiver> <receiver android:name="com.umeng.message.NotificationProxyBroadcastReceiver" android:exported="false" /> - <service android:name="com.umeng.message.UmengMessageCallbackHandlerService" android:exported="false">- <intent-filter> <action android:name="com.umeng.messge.registercallback.action" /> </intent-filter>- <intent-filter> <action android:name="com.umeng.message.enablecallback.action" /> </intent-filter>- <intent-filter> <action android:name="com.umeng.message.disablecallback.action" /> </intent-filter>- <intent-filter> <action android:name="com.umeng.message.message.handler.action" /> </intent-filter> </service> <service android:name="com.umeng.message.UmengDownloadResourceService" android:exported="false" /> - <service android:name="com.umeng.message.UmengMessageIntentReceiverService" android:exported="true" android:process=":channel">- <intent-filter> <action android:name="org.android.agoo.client.MessageReceiverService" /> </intent-filter> </service>- <provider android:name="com.umeng.message.provider.MessageProvider" android:authorities="${applicationId}.umeng.message" android:exported="false"> <grant-uri-permission android:pathPattern=".*" /> </provider> </application>……<activity ……/><meta-data android:value="xxx" android:name="UMENG_APPKEY"/><meta-data android:value="xxx" android:name="UMENG_CHANNEL"/>
<meta-data android:value="xxx" android:name="UMENG_MESSAGE_SECRET"/></application> </manifest>
4.添加代码,主入口文件调用
在工程的Application类的 onCreate()
方法中注册推送服务,无论推送是否开启都需要调用此方法:
PushAgent mPushAgent = PushAgent.getInstance(this);//mPushAgent.setDebugMode(false);//如果app对外正式发布设为false//注册推送服务,每次调用register方法都会回调该接口mPushAgent.register(new IUmengRegisterCallback() { @Override public void onSuccess(String deviceToken) { //注册成功会返回device token } @Override public void onFailure(String s, String s1) { }});
mPushAgent.setNotificationClickHandler(UmengNotificationClickHandler);//自定义点击事件监听
//mPushAgent.setMessageHandler(UHandler);//自定义消息处理,设置后不会收到默认通知
//mPushAgent.setPushIntentServiceClass(MyPushIntentService);//完全自定义通知设置,设置后不会收到默认通知
如需手动获取device token,可以调用mPushAgent.getRegistrationId()
方法(需在注册成功后调用);免打扰模式,如23:00-7:00:mPushAgent.setNoDisturbMode(23,0,7,0);//关闭免打扰模式设为0,0,0,0
在所有的Activity 的onCreate
方法或在应用的BaseActivity
的onCreate
方法中添加:
PushAgent.getInstance(context).onAppStart();
到此基本功能已经完成……三.友盟分享 登录
1.首先需要到友盟官网 http://mobile.umeng.com/social注册并且添加新应用,获得Appkey
2.导入SDK,Android 社会化组件SDK v5.1.3(2016-6-6)http://dev.umeng.com/social/android/sdk-download
对应jar包名字对应如下:新浪精简版,不再需要.so文件
umeng_social_netv6.0.0.jar
umeng_social_viewv6.0.0.jarqqmta-sdk-1.6.2.jar
open_sdk_r5756_lite.jar
SocialSDK_QQZone_3.jarSocialSDK_umengqq.jar
SocialSDK_QQZone_3.jarsinaSocialSDK_Sina.jar
weiboSDKCore_3.1.4.jar
libweibosdkcore.soSocialSDK_umengsina.jar微信SocialSDK_WeiXin_1.jar
SocialSDK_WeiXin_2.jarSocialSDK_umengwx.jar
SocialSDK_WeiXin_2.jar
3.配置xml
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><uses-permission android:name="android.permission.READ_PHONE_STATE" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.READ_LOGS" /><uses-permission android:name="android.permission.CALL_PHONE" /><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /><uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /><uses-permission android:name="android.permission.GET_TASKS" /><uses-permission android:name="android.permission.SET_DEBUG_APP" /><uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /><uses-permission android:name="android.permission.GET_ACCOUNTS" /><uses-permission android:name="android.permission.USE_CREDENTIALS" /><uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
<!--友盟分享编辑页--> <activity android:name="com.umeng.socialize.view.ShareActivity" android:configChanges="orientation|keyboard" android:launchMode="singleTask" android:noHistory="true" android:windowSoftInputMode="stateVisible|adjustResize" > </activity> <!-- ############ QQ空间和QQ SSO授权的Activity注册 ############ --> <activity android:name="com.tencent.tauth.AuthActivity" android:launchMode="singleTask" android:noHistory="true" > <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <!-- 100424468,如果你使用的公用账号,则不需要修改;否则修改成你在QQ开放平台申请的 APP ID--> <data android:scheme="tencent100424468" /> </intent-filter> </activity> <activity android:name="com.tencent.connect.common.AssistActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar" android:screenOrientation="portrait"> </activity> <!-- 微信wechat callback--> <activity android:name="xx.xx.xx.wxapi.WXEntryActivity" <!--xx.xx.xx必须与应用包名相同--> android:configChanges="keyboardHidden|orientation|screenSize" android:exported="true" android:screenOrientation="portrait" android:theme="@android:style/Theme.Translucent.NoTitleBar" /> <!-- tencent --> <!-- 微博 --> <activityandroid:name=".WBShareActivity"android:configChanges="keyboardHidden|orientation"android:screenOrientation="portrait" > <intent-filter> <action android:name="com.sina.weibo.sdk.action.ACTION_SDK_REQ_ACTIVITY" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity> <activity android:name="com.sina.weibo.sdk.component.WeiboSdkBrowser" android:configChanges="keyboardHidden|orientation" android:windowSoftInputMode="adjustResize" android:exported="false" > </activity> <service android:name="com.sina.weibo.sdk.net.DownloadService" android:exported="false"></service> <!--###################添加UmengAppkey###################### --> <meta-data android:name="UMENG_APPKEY" android:value="xxxxx" > </meta-data>
4.添加代码,主入口文件调用public class App extends Application{{ PlatformConfig.setWeixin("wx967daebe835fbeac", "5bb696d9ccd75a38c8a0bfe0675559b3");//微信 PlatformConfig.setSinaWeibo("3921700954", "04b48b094faeb16683c32669824ebdad");//新浪微博 PlatformConfig.setQQZone("100424468", "c7394704798a158208a74ab60104f0ba");//QQ空间 Config.REDIRECT_URL = "在新浪后台的回调地址"}}
UMImage image = new UMImage(this, "imgURL"); new ShareAction(this).setDisplayList(SHARE_MEDIA.WEIXIN,SHARE_MEDIA.WEIXIN_CIRCLE) .withTitle("标题") .withText("内容") .withMedia(image) .withTargetUrl("http://www.xx.com") .setCallback(umShareListener) //.withShareBoardDirection(view, Gravity.TOP|Gravity.LEFT) .open();//打开分享
private UMShareListener umShareListener = new UMShareListener() { @Override public void onResult(SHARE_MEDIA platform) {// Log.d("plat","platform"+platform); if(platform.name().equals("WEIXIN_FAVORITE")){ Toast.makeText(this,platform + " 收藏成功啦",Toast.LENGTH_SHORT).show(); }else{ Toast.makeText(this, platform + " 分享成功啦", Toast.LENGTH_SHORT).show(); } } @Override public void onError(SHARE_MEDIA platform, Throwable t) { Toast.makeText(this,platform + " 分享失败啦", Toast.LENGTH_SHORT).show(); if(t!=null){// Log.d("throw","throw:"+t.getMessage()); } } @Override public void onCancel(SHARE_MEDIA platform) { Toast.makeText(this,platform + " 分享取消了", Toast.LENGTH_SHORT).show(); } };友盟登录 UMShareAPI mShareAPI = UMShareAPI.get( this );
SHARE_MEDIA platform=SHARE_MEDIA.WEIXIN;//微信登录if(!mShareAPI.isInstall(this, platform)){//ToastUtils.setToast(this, false, "还没有安装");return;}/**添加begin invoke umeng api**/ mShareAPI.doOauthVerify(this, platform, umAuthListener); /**删除begin invoke umeng api**/// mShareAPI.deleteOauth(this, platform, umdelAuthListener);
private UMAuthListener umAuthListener = new UMAuthListener() { @Override public void onComplete(SHARE_MEDIA platform, int action, Map<String, String> data) { Log.e("auth callback","-----------------getting data:"+data); Toast.makeText(getApplicationContext(), "Authorize succeed", Toast.LENGTH_SHORT).show(); if(data!=null&&data.containsKey("access_token")&&data.containsKey("openid")&&data.containsKey("unionid")){ String access_token=data.get("access_token").trim();//... mShareAPI.getPlatformInfo(this, platform, umAuthListener);//获取用户信息 } if(data!=null&&data.containsKey("nickname")&&data.containsKey("headimgurl")){ } } @Override public void onError(SHARE_MEDIA platform, int action, Throwable t) { Toast.makeText( getApplicationContext(), "Authorize fail", Toast.LENGTH_SHORT).show(); } @Override public void onCancel(SHARE_MEDIA platform, int action) { Toast.makeText( getApplicationContext(), "Authorize cancel", Toast.LENGTH_SHORT).show(); } };
注意以下---------------------------------------------------------------------------------------------------------------------------------------------------------
import com.umeng.socialize.weixin.view.WXCallbackActivity;/** * Created by ntop on 15/9/4. */public class WXEntryActivity extends WXCallbackActivity {}
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); /** attention to this below ,must add this**/ UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data);//有分享或登录时调用 }
到此基本功能已经完成……
来源http://blog.csdn.net/a704755096/article/details/46341865
- Android 友盟统计 友盟推送 友盟分享快速集成
- 集成友盟推送android
- Android集成友盟推送
- 友盟集成登陆、分享、数据统计
- Android-->友盟分享/登录快速集成库
- 快速集成友盟bug日志统计
- 72.友盟分享快速集成
- 友盟数据统计、消息推送、社会化分享
- Android集成友盟推送功能
- Android之集成友盟推送功能
- Android集成友盟推送服务
- Android 友盟更新、推送、分享
- 友盟推送集成小结
- Android开发 友盟统计、推送集成,Error:Error converting bytecode to dex: Cause: com.android.dex.DexExcept0ion:
- 友盟分享集成
- 友盟分享集成
- android集成友盟统计平台
- android 友盟统计的集成问题
- 教你如何写好医疗网站的文章
- Linux Socket编程(不限Linux)
- ADB cannot bind ‘tcp:5037′ ADB server didn’t ACK
- 二分图学习
- Eclipse中快速手动删除代码空行
- Android 友盟统计 友盟推送 友盟分享快速集成
- Mybatis传多个参数
- oracle模糊查询语句使用示例
- svn使用
- 字节序(大小端)详解从高低地址和高低位开始理解
- Android图片异步加载框架Android-Universal-Image-Loader
- 类和类之间的关系
- cocos2dx中的cocosDenshion对不同平台音频支持格式
- 7zip压缩整个目录