极光厂商通道功能:
极光新的SDK,已集成了小米,华为,魅族的厂商通道功能
针对VIP用户需要联系商务:
VIP专享高速推送通道、子账户管理、更高的推送频率、用户分群推送
为了保证 SDK 的易用性,原本 JPush 的所有接口调用逻辑都不用修改,JPush 会对自身支持的功能做兼容
Android SDK 版本
目前SDK只支持Android 2.3或以上版本的手机系统。富媒体信息流功能则需Android3.0或以上版本的系统。
jcenter 自动集成步骤
说明 : 使用jcenter自动集成的开发者,不需要在项目中添加jar和so,jcenter会自动完成依赖;在AndroidManifest.xml中不需要添加任何JPush SDK 相关的配置,jcenter会自动导入。
如果开发者需要修改组件属性,可以在本地的 AndroidManifest 中定义同名的组件并配置想要的属性,然后用 xmlns:tools 来控制本地组件覆盖 jcenter 上的组件。示例:
……
……
……
确认android studio的 Project 根目录的主 gradle 中配置了jcenter支持。(新建project默认配置就支持)
buildscript {
repositories {
jcenter()
}
......
}
allprojets {
repositories {
jcenter()
}
}
在 module 的 gradle 中添加依赖和AndroidManifest的替换变量。
android {
......
defaultConfig {
applicationId "com.xxx.xxx" //JPush上注册的包名.
......
ndk {
//选择要添加的对应cpu类型的.so库。
abiFilters 'armeabi', 'armeabi-v7a', 'arm64-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.9' // 此处以JPush 3.0.9 版本为例。
compile 'cn.jiguang.sdk:jcore:1.1.7' // 此处以JCore 1.1.7 版本为例。
......
}
注 : 如果在添加以上 abiFilter 配置之后android Studio出现以下提示:
NDK integration is deprecated in the current plugin. Consider trying the new experimental plugin
则在 Project 根目录的gradle.properties文件中添加:
android.useDeprecatedNdk=true
说明:若没有res/drawable-xxxx/jpush_notification_icon这个资源默认使用应用图标作为通知icon,在5.0以上系统将应用图标作为statusbar icon可能显示不正常,用户可定义没有阴影和渐变色的icon替换这个文件,文件名不要变。
手动集成步骤
说明 1:若没有res/drawable-xxxx/jpush_notification_icon这个资源默认使用应用图标作为通知icon,在5.0以上系统将应用图标作为statusbar icon可能显示不正常,用户可定义没有阴影和渐变色的icon替换这个文件,文件名不要变。
说明 2:使用android studio的开发者,如果使用jniLibs文件夹导入so文件,则仅需将所有cpu类型的文件夹拷进去;如果将so文件添加在module的libs文件夹下,注意在module的gradle配置中添加一下配置:
android {
......
sourceSets {
main {
jniLibs.srcDirs = ['libs']
......
}
......
}
......
}
配置 AndroidManifest.xml
根据 SDK 压缩包里的 AndroidManifest.xml 样例文件,来配置应用程序项目的 AndroidManifest.xml 。
主要步骤为:
小帖士
如果使用android studio, 可在AndroidManifest中引用applicationId的值,在build.gradle配置中 defaultConfig节点下配置,如:
defaultConfig {
applicationId "cn.jpush.example" // <--您应用的包名
……
}
在AndroidManifest中使用 ${applicationId} 引用gradle中定义的包名
AndroidManifest 示例
配置和代码说明
必须权限说明
权限 | 用途 |
---|---|
You Package.permission.JPUSH_MESSAGE | 官方定义的权限,允许应用接收JPUSH内部代码发送的广播消息。 |
RECEIVE_USER_PRESENT | 允许应用可以接收点亮屏幕或解锁广播。 |
INTERNET | 允许应用可以访问网络。 |
WAKE_LOCK | 允许应用在手机屏幕关闭后后台进程仍然运行 |
READ_PHONE_STATE | 允许应用访问手机状态。 |
WRITE_EXTERNAL_STORAGE | 允许应用写入外部存储。 |
READ_EXTERNAL_STORAGE | 允许应用读取外部存储。 |
WRITE_SETTINGS | 允许应用读写系统设置项。 |
VIBRATE | 允许应用震动。 |
MOUNT_UNMOUNT_FILESYSTEMS | 允许应用挂载/卸载 外部文件系统。 |
ACCESS_NETWORK_STATE | 允许应用获取网络信息状态,如当前的网络连接是否有效。 |
集成 JPush Android SDK 的混淆
请下载4.x及以上版本的proguard.jar, 并替换你Android Sdk "tools\proguard\lib\proguard.jar"
请在工程的混淆文件中添加以下配置:
-dontoptimize
-dontpreverify
-dontwarn cn.jpush.**
-keep class cn.jpush.** { *; }
-keep class * extends cn.jpush.android.helpers.JPushMessageReceiver { *; }
-dontwarn cn.jiguang.**
-keep class cn.jiguang.** { *; }
2.0.5 ~ 2.1.7 版本有引入 gson 和 protobuf ,增加排除混淆的配置。(2.1.8版本不需配置)
#==================gson && protobuf==========================
-dontwarn com.google.**
-keep class com.google.gson.** {*;}
-keep class com.google.protobuf.** {*;}
添加代码
JPush SDK 提供的 API 接口,都主要集中在 cn.jpush.android.api.JPushInterface 类里。
init 初始化SDK
public static void init(Context context)
setDebugMode 设置调试模式
注:该接口需在init接口之前调用,避免出现部分日志没打印的情况。多进程情况下建议在自定义的Application中onCreate中调用。
// You can enable debug mode in developing state. You should close debug mode when release.
public static void setDebugMode(boolean debugEnalbed)
init 只需要在应用程序启动时调用一次该 API 即可。
以下代码定制一个本应用程序 Application 类。需要在 AndoridManifest.xml 里配置。请参考上面 AndroidManifest.xml 片断,或者 example 项目。
public class ExampleApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
JPushInterface.setDebugMode(true);
JPushInterface.init(this);
}
}
测试确认
[JPushInterface] action:init
.......
[PushService] Login succeed!
如图所示,客户端启动分为 4 步:
技术支持
邮件联系:[email protected]
1、注册账号
2、应用通过审核,在产品服务中添加Push权益
3、需要添加应用的SHA256证书指纹。SHA256获取方式
(未通过审核的应用无法享受Push权益接收不到推送)
4、增加华为HMS SDK的aar
将华为HMS sdk的aar文件添加到工程/libs目录下。 然后在build.gradle中增加编译该 aar 的代码: dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') compile(name: 'HMSSdk-base-2.5.2.300', ext: 'aar') compile(name: 'HMSSdk-push-2.5.2.300', ext: 'aar') } repositories { flatDir{ dirs 'libs' //this way we can find the .aar file in libs folder } }
5、配置你的AndroidManifest.xml
android:name="com.huawei.hms.update.provider.UpdateProvider" android:authorities="com.youpinwallet.ypw.hms.update.provider" android:exported="false" android:grantUriPermissions="true"> android:name="cn.jpush.android.service.PluginHuaweiPlatformsReceiver"> android:name="com.huawei.android.push.intent.REGISTRATION" /> android:name="com.huawei.android.push.intent.RECEIVE" /> android:name="com.huawei.android.push.intent.CLICK" /> android:name="com.huawei.intent.action.PUSH_STATE" /> android:name="CS_cloud_ablitity" android:value="successRateAnalytics" /> android:name="com.huawei.hms.support.api.push.PushEventReceiver"> android:name="com.huawei.intent.action.PUSH" /> android:name="com.huawei.hms.client.appid" android:value="你的华为APPID">
1、注册账号应用通过审核
2、在应用服务中>消息推送>立即体验>开启推送
3、配置你的AndroidManifest.xml
android:name="com.xiaomi.push.service.XMJobService" android:enabled="true" android:exported="false" android:permission="android.permission.BIND_JOB_SERVICE" android:process=":pushservice" /> android:name="com.xiaomi.push.service.XMPushService" android:enabled="true" android:process=":pushservice" /> android:name="com.xiaomi.mipush.sdk.PushMessageHandler" android:enabled="true" android:exported="true" /> android:name="com.xiaomi.mipush.sdk.MessageHandleService" android:enabled="true" /> android:name="com.xiaomi.push.service.receivers.NetworkStatusReceiver" android:exported="true"> android:name="android.net.conn.CONNECTIVITY_CHANGE" /> android:name="android.intent.category.DEFAULT" /> android:name="com.xiaomi.push.service.receivers.PingReceiver" android:exported="false" android:process=":pushservice"> android:name="com.xiaomi.push.PING_TIMER" /> android:name="cn.jpush.android.service.PluginXiaomiPlatformsReceiver" android:exported="true"> android:name="com.xiaomi.mipush.RECEIVE_MESSAGE" /> android:name="com.xiaomi.mipush.MESSAGE_ARRIVED" /> android:name="com.xiaomi.mipush.ERROR" /> android:name="XIAOMI_APPKEY" android:value="MI-XIAOMI_APPKEY" /> android:name="XIAOMI_APPID" android:value="MI-XIAOMI_APPID" />
1、注册账号应用通过审核 (时间比较漫长)
2、配置你的AndroidManifest.xml
android:name="cn.jpush.android.service.PluginMeizuPlatformsReceiver"> android:name="com.meizu.flyme.push.intent.MESSAGE" /> android:name="com.meizu.flyme.push.intent.REGISTER.FEEDBACK" /> android:name="com.meizu.flyme.push.intent.UNREGISTER.FEEDBACK" /> android:name="com.meizu.c2dm.intent.REGISTRATION" /> android:name="com.meizu.c2dm.intent.RECEIVE" /> android:name="您应用的包名"> android:name="MEIZU_APPKEY" android:value="MZ-您的应用对应的魅族的APPKEY" /> android:name="MEIZU_APPID" android:value="MZ-您的应用对应的魅族的APPID" />
所有都集成好像极光对接的人要一份VIP申请登记表,坐等极光工作人员配置好就可以进行测试了
测试:
华为:极光根据 EMUI 系统版本间差异,现采取的方案是 EMUI 4.1 及以上版本,使用 HMS 服务,通知走 HMS 通道;对于 EMUI 4.1 以下版本还是走极光通道
魅族:在flyme5.1.11.1及以上才使用 mzpush,因为之前的版本上 mzpush 的通道并非系统通道
小米:极光集成小米通道在 JPush Android SDK 3.0.3 添加,对应测试的小米 SDK 版本为:3.2.2**
(后台杀死进程依旧能接受到推送通知)就可以了