• 关于

    android 监听网络已连接不上

    的搜索结果

回答

详细解答可以参考官方帮助文档使用前必读:移动推送名词解释&约束 Android参考Demo。 本文档适用于V2.3.7及以下版本集成,如果您使用的是V3.0及以上版本请参考:Android SDK 3.0配置 一. 创建应用二. SDK下载和集成2.1 手动集成SDK2.1.1 SDK下载2.1.2 SDK目录结构2.1.3 SDK集成:2.2 Maven集成2.3 Android支持包添加三. 配置AndroidManifest.xml3.1 appkey和appsecret配置3.2 Permission 的配置3.3 Service 的配置3.4 Receiver 的配置四. Proguard配置五. 在应用中注册和启动移动推送启动正常确认方法:一. 创建应用 到阿里云移动推送控制台创建应用,应用创建完成以后,进入移动推送相关模块进行设置,具体操作请参见 创建APP。 在应用中完成应用配置,请注意PackageName务必和App的包名一致,否则推送将无法正确初始化。 【注意】使用Gradle构建App时,PackageName的查看: 查看AndroidManifest.xml中根元素package属性;查看工程build.gradle中applicationId设置,默认AndroidManifest.xml中的package属性保持一致,如果不一致,以applicationId为准。 二. SDK下载和集成 2.1 手动集成SDK2.1.1 SDK下载 2.1.2 SDK目录结构OneSDK|-- AndroidManifest.xml|-- build.gradle|-- libs| |-- armeabi| | |-- libcocklogic.so -网络连接库及幽灵进程的辅助lib| | |-- libtnet.so| |-- armeabi-v7a| | |-- libcocklogic.so| | |-- libtnet.so| |-- arm64-v8a| | |-- libcocklogic.so| | |-- libtnet.so| |-- x86| | |-- libcocklogic.so| | |-- libtnet.so| |-- arm64| | |-- libcocklogic.so| | |-- libtnet.so| |-- alicloud-android-push-sdk.jar -移动推送主功能包| |-- alisdk-ut.jar -UT基础包| |-- utdid4all.jar -设备Id生成包|-- project.properties|-- src 2.1.3 SDK集成: 手动拷贝下载SDK中的libs目录,手动拷贝后需要在APP工程的build.gradle中配置jniLibs的目录: android { ... sourceSets { main { jniLibs.srcDirs = ['libs'] } }}2.2 Maven集成 项目顶层build.gradle中添加Maven仓库地址: allprojects { repositories { maven { url 'http://maven.aliyun.com/nexus/content/repositories/releases/' } }} gradle添加依赖: dependencies { compile 'com.aliyun.ams:alicloud-android-push:2.3.7'}(开发时可以如上所述指定完整的版本号,也可以指定模糊版本号,gradle自动拉取满足条件的最新版本SDK,如compile 'com.aliyun.ams:alicloud-android-push:2.+') 2.3 Android支持包添加 工程中添加android-support-v4.jar支持包(v2.3.0以上),关于v4支持包的说明请参考:https://developer.android.com/topic/libraries/support-library/features.html#v4; 三. 配置AndroidManifest.xml 3.1 appkey和appsecret配置<application android:name="*****"> <meta-data android:name="com.alibaba.app.appkey" android:value="*****"/> <!-- 请填写你自己的- appKey --> <meta-data android:name="com.alibaba.app.appsecret" android:value="****"/> <!-- 请填写你自己的appSecret --></application>com.alibaba.app.appkey和com.alibaba.app.appsecret为您App的对应信息,在推送控制台APP列表页的应用证书中获取。appkey和appsecret请务必写在application标签下,否则sdk会报找不到appkey错误。如果您是百川云推送用户,不能直接使用百川平台的appKey和appSecret,需要登录阿里云移动推送控制台,登录账号为您的百川平台账号,并使用阿里云平台的appKey,appSecret。 3.2 Permission 的配置 将以下uses-permission片段拷贝进你manifest中的Permission申明区域中: <!--阿里移动推送相关权限--><!--Android 6.0版本可去除,用于选举信息(通道复用)的同步--><uses-permission android:name="android.permission.WRITE_SETTINGS" /><!--进行网络访问和网络状态监控相关的权限声明--><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" /><!--允许对sd卡进行读写操作--><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_CHANGED" /><uses-permission android:name="android.permission.BROADCAST_PACKAGE_REPLACED" /><uses-permission android:name="android.permission.RESTART_PACKAGES" /><!--补偿通道小米PUSH使用,不用可去除--><uses-permission android:name="android.permission.GET_TASKS" /><!--补偿通道GCM使用,不使用可去除--><uses-permission android:name="android.permission.GET_ACCOUNTS" /><!--允许监听启动完成事件--><uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /><!--允许访问震动器--><uses-permission android:name="android.permission.VIBRATE" /><!-- 允许task重排序 --><uses-permission android:name="android.permission.REORDER_TASKS" /> 3.3 Service 的配置 将以下service片段拷贝进你Manifest中的service申明区域中: <!-- 通道保持服务 --><service android:name="com.alibaba.sdk.android.push.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="org.agoo.android.intent.action.PING_V4" /> <category android:name="taobao" /> </intent-filter></service><!-- 消息接收服务 --><service android:name="com.alibaba.sdk.android.push.MsgService" android:exported="false"> <intent-filter> <action android:name="com.taobao.accs.intent.action.RECEIVE" /> </intent-filter> <intent-filter> <action android:name="com.alibaba.sdk.android.push.NOTIFY_ACTION" /> </intent-filter></service><!-- 消息接收增强服务(可提高通知/消息达到率)--><service android:name="com.alibaba.sdk.android.push.channel.TaobaoRecvService" android:exported="true"> <intent-filter> <action android:name="org.android.agoo.client.MessageReceiverService"/> </intent-filter></service> 3.4 Receiver 的配置 将以下receiver片段拷贝进你manifest中的receiver申明区域中: <!--消息接收监听器--><receiver android:name="您的自定义Receiver(需继承com.alibaba.sdk.android.push.MessageReceiver)"> <intent-filter> <action android:name="com.alibaba.push2.action.NOTIFICATION_OPENED"/> </intent-filter> <intent-filter> <action android:name="com.alibaba.push2.action.NOTIFICATION_REMOVED"/> </intent-filter> <intent-filter> <action android:name="com.taobao.accs.intent.action.COMMAND" /> </intent-filter> <intent-filter> <action android:name="com.taobao.taobao.intent.action.COMMAND" /> </intent-filter> <intent-filter> <action android:name="org.agoo.android.intent.action.RECEIVE" /> </intent-filter> <intent-filter> <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.USER_PRESENT" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED"/> </intent-filter> <intent-filter> <action android:name="android.intent.action.PACKAGE_REMOVED"/> <data android:scheme="package"/> </intent-filter></receiver> 如果已升级到v3.0.0及以上版本,需将<action android:name="org.agoo.android.intent.action.RECEIVE" />改为<action android:name="com.alibaba.sdk.android.push.RECEIVE" />,否则会接收不到推送。 四. Proguard配置 -keepclasseswithmembernames class ** { native <methods>;}-keepattributes Signature-keep class sun.misc.Unsafe { *; }-keep class com.taobao.** {*;}-keep class com.alibaba.** {*;}-keep class com.alipay.** {*;}-dontwarn com.taobao.**-dontwarn com.alibaba.**-dontwarn com.alipay.**-keep class com.ut.** {*;}-dontwarn com.ut.**-keep class com.ta.** {*;}-dontwarn com.ta.**-keep class anet.**{*;}-keep class org.android.spdy.**{*;}-keep class org.android.agoo.**{*;}-dontwarn anet.**-dontwarn org.android.spdy.**-dontwarn org.android.agoo.** 五. 在应用中注册和启动移动推送 首先通过PushServiceFactory获取到CloudPushService,然后调用register()初始化并注册云推送通道,并确保Application上下文中进行初始化工作。 请参照以下代码段进行初始化: import android.app.Application;import android.content.Context;import android.util.Log;import com.alibaba.sdk.android.push.CloudPushService;import com.alibaba.sdk.android.push.CommonCallback;import com.alibaba.sdk.android.push.noonesdk.PushServiceFactory;public class MainApplication extends Application { private static final String TAG = "Init"; @Override public void onCreate() { super.onCreate(); initCloudChannel(this); } /** * 初始化云推送通道 * @param applicationContext */ private void initCloudChannel(Context applicationContext) { PushServiceFactory.init(applicationContext); CloudPushService pushService = PushServiceFactory.getCloudPushService(); pushService.register(applicationContext, new CommonCallback() { @Override public void onSuccess(String response) { Log.d(TAG, "init cloudchannel success"); } @Override public void onFailed(String errorCode, String errorMessage) { Log.d(TAG, "init cloudchannel failed -- errorcode:" + errorCode + " -- errorMessage:" + errorMessage); } }); }} 【注意】: 如果设备成功注册,将回调callback.onSuccess()方法。但如果注册服务器连接失败,则调用callback.onFailed方法,并且自动进行重新注册,直到onSuccess为止。(重试规则会由网络切换等时间自动触发。)请在网络通畅的情况下进行相关的初始化调试,如果网络不通,或者App信息配置错误,在onFailed方法中,会有相应的错误码返回,可参考错误处理。 启动正常确认方法: 回调方法callback.onSuccess()被调用。以上文接入代码为例,logcat将会打印以下日志: 11-24 12:55:51.096 15235-15535/com.alibaba.xxxx D/YourApp﹕ init cloudchannel success 确认cloudchannel初始化正常,在logcat日志中:输入awcn关键字: 11-24 12:53:51.036 15235-15556/com.alibaba.xxxx E/awcn﹕ |[seq:AWCN1_1] AUTH httpStatusCode: 20011-24 12:53:51.036 15235-15556/com.alibaba.xxxx E/awcn﹕ |[seq:AWCN1_1] status:AUTH_SUCC 确认DeviceId获取正常:在初始化成功后使用 cloudPushService.getDeviceId() 获取deviceId,应该能够成功获取。
2019-12-01 23:11:46 0 浏览量 回答数 0

云产品推荐

上海奇点人才服务相关的云产品 小程序定制 上海微企信息技术相关的云产品 国内短信套餐包 ECS云服务器安全配置相关的云产品 开发者问答 阿里云建站 自然场景识别相关的云产品 万网 小程序开发制作 视频内容分析 视频集锦 代理记账服务 阿里云AIoT