推送,用极光,大家都说好,哈哈.
进入正题:
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