推送,用极光,大家都说好,哈哈.
进入正题:
1.确认android studio的 Project 根目录的主 gradle 中配置了jcenter支持。(基本上现在都已经支持了,循例说一下) ,就是这个
2.在 module 的 gradle 中添加依赖和AndroidManifest的替换变量(建议先插入依赖包,再插入另外的ndk和manifestPlaceholders )
android { ...... defaultConfig { applicationId "com.xxx.xxx" //JPush上注册的包名. ...... ndk { //选择要添加的对应cpu类型的.so库。 abiFilters 'armeabi', 'armeabi-v7a', 'armeabi-v8a' // 还可以添加 'x86', 'x86_64', 'mips', 'mips64' } manifestPlaceholders = [ JPUSH_PKGNAME : applicationId, JPUSH_APPKEY : "你的appkey", //JPush上注册的包名对应的appkey. JPUSH_CHANNEL : "developer-default", //暂时填写默认值即可. ] ...... } ...... } dependencies { ...... compile 'cn.jiguang.sdk:jpush:3.0.0' // 此处以JPush 3.0.0 版本为例。 compile 'cn.jiguang.sdk:jcore:1.0.0' // 此处以JCore 1.0.0 版本为例。 ...... }
3.基本不会出现,这个是ndk(调用c或者c++语言的方法的转换器)版本太旧就导致的
注 : 如果在添加以上 abiFilter 配置之后android Studio出现以下提示: NDK integration is deprecated in the current plugin. Consider trying the new experimental plugin. 则在 Project 根目录的gradle.properties文件中添加: android.useDeprecatedNdk=true
4.请在工程的混淆文件中添加以下配置:
看清楚文件位置和需要添加的东西
-dontoptimize -dontpreverify -dontwarn cn.jpush.** -keep class cn.jpush.** { *; } -dontwarn cn.jiguang.** -keep class cn.jiguang.** { *; }
5.最重要的来了,如果app已经有了application类(启动应用执行的第一个类,在里面做很多前期准备的),就在里面写入极光推送的初始化代码,如果没有的就自己写一个类继承Application(下面以自己写的为例子)
package com.example.lym.jiguangtest; import android.app.Application; import cn.jpush.android.api.JPushInterface; /** * Created by lym on 2016/12/22. */ public class TryJiGuang extends Application { @Override public void onCreate() { super.onCreate(); JPushInterface.setDebugMode(true); JPushInterface.init(this); } }
然后要在manifest文件里面对该类进行声明,到这里准备工作基本完成,可以开始测试了
6.运行app之后,看studio的log日志
测试确认 确认所需的权限都已经添加。如果必须的权限未添加,日志会提示错误。 确认 AppKey(在Portal上生成的)已经正确的写入 Androidmanifest.xml 。 确认在程序启动时候调用了init(context) 接口 确认测试手机(或者模拟器)已成功连入网络 + 客户端调用 init 后不久,如果一切正常,应有登录成功的日志信息 启动应用程序,在 Portal 上向应用程序发送自定义消息或者通知栏提示。详情请参考管理Portal。 在几秒内,客户端应可收到下发的通知或者正定义消息,如果 SDK 工作正常,则日志信息会如下: [JPushInterface] action:init ....... [PushService] Login succeed! 如图所示,客户端启动分为 4 步: 检查 metadata 的 appKey 和 channel ,如果不存在,则启动失败 初始化 JPush SDK,检查 JNI 等库文件的有效性,如果库文件无效,则启动失败 检查 Androidmanifest.xml,如果有 Required 的权限不存在,则启动失败 连接服务器登录,如果存在网络问题,则登陆失败,或者前面三步有问题,不会启动JPush SDK