维护人:熊方瑜
1. 添加Maven库地址
AndroidStudio 上使用远程仓库自动接入,不需要在项目中导入jar包和so文件; 在 AndroidManifest.xml 中不需要配置SDK相关的内容,maven仓库会自动导入。 导入依赖过后修改应用配置,书写初始化及注册等少量代码即可快速接入。
在项目根目录build.gradle文件下配置以下内容
repositories {
mavenCentral()
......
}
2. 配置依赖
在app/build.gradle
文件下配置以下内容;
dependencies {
......
implementation "com.immomo.cosmos.photon:push:2.5.1.2"//使用protobuf-lite
}
3. 配置SO架构
目前支持armeabi-v7a和arm64-v8a架构。在app/build.gradle文件中的android.defaultConfig下指定所需的CPU架构。
android {
......
defaultConfig {
......
ndk {
abiFilters "armeabi-v7a", 'arm64-v8a'
}
}
4. 混淆配置
如果项目中使用proguard等工具做了代码混淆,请保留以下选项,否则将导致推送服务不可用。
#Photon Push SDK 公共
-keep class com.cosmos.photon.push.**{*;}
-keep class com.cosmos.photon.baseim.**{*;}
-keep interface com.cosmos.photon.push.**{*;}
-keep class com.cosmos.codedlib.Coded {*;}
-keepclasseswithmembernames class * {
native <methods>;
}
-keep class com.mm.mmfile.core.**{*;}
-keep class com.cosmos.mdlog.**{*;}
#OPPO
-keep public class * extends android.app.Service
#VIVO
-dontwarn com.vivo.push.**
-keep class com.vivo.push.**{*; }
-keep class com.vivo.vms.**{*; }
-keep class xxx.xxx.xxx.PushMessageReceiverImpl{*;}
#小米
-keep class com.cosmos.photon.thirdparty.mi.MiMessageReceiver {*;}
-dontwarn com.xiaomi.push.**
#华为
-ignorewarnings
-keepattributes *Annotation*
-keepattributes Exceptions
-keepattributes InnerClasses
-keepattributes Signature
-keepattributes SourceFile,LineNumberTable
-keep class com.huawei.hianalytics.**{*;}
-keep class com.huawei.updatesdk.**{*;}
-keep class com.huawei.hms.**{*;}
#魅族
-keep class com.meizu.cloud.pushsdk.** { *; }
-dontwarn com.meizu.cloud.pushsdk.**
-keep class com.meizu.nebula.** { *; }
-dontwarn com.meizu.nebula.**
-keep class com.meizu.push.** { *; }
-dontwarn com.meizu.push.**
#荣耀(如果已经copy过华为的配置,可不用copy下面)
-ignorewarnings
-keepattributes *Annotation*
-keepattributes Exceptions
-keepattributes InnerClasses
-keepattributes Signature
-keepattributes SourceFile,LineNumberTable
5. 代码接入
- 初始化
//在应用初始化调用init方法
PhotonPushManager.getInstance().init(this, "your app id", "deviceId", new PushMessageReceiver() {
//当通知栏展示前调用,可用于控制通知栏的显示
@Override
public boolean onNotificationShow(MoNotify notify) {
return super.onNotificationShow(notify);
}
//当通知栏被点击时调用
@Override
public void onNotificationMessageClicked(MoNotify notify) {
super.onNotificationMessageClicked(notify);
}
//当收到透传消息时调用
@Override
public void onReceivePassThroughMessage(MoMessage message) {
super.onReceivePassThroughMessage(message);
}
//命令的结果回调,比如设置别名的结果等
@Override
public void onCommand(int type, int result, String message) {
if (result == 0) {
showToast("调用成功 " + type);
} else {
showToast(message);
}
}
//token的注册结果回调
@Override
public void onToken(int result, String token, String message) {
if (result == 0) {
showToast("注册成功");
} else {
showToast(message);
}
}
//是否开启小米push
@Override
public boolean isMiPushOpen() {
return true;
}
//是否开启华为push
@Override
public boolean isHuaweiPushOpen() {
return true;
}
//是否开启VIVO push
@Override
public boolean isVivoPushOpen() {
return true;
}
//是否开启OPPO push
@Override
public boolean isOppoPushOpen() {
return true;
}
//是否开启魅族 push
@Override
public boolean isMeizuPushOpen() {
return true;
}
//是否开启荣耀 push
@Override
public boolean isHonorPushOpen() {
return true;
}
});
- 注册
PhotonPushManager.getInstance().register();
- 注销
PhotonPushManager.getInstance().unRegister();
- 统计日志
在通知打开的activity的onCreate中调用以下代码统计厂商通知的点击事件
PhotonPushManager.getInstance().logPushClick(getIntent());
- 业务方自行处理push的展示以及点击情况下:(非自行处理时可忽略)
当业务方自行处理push的展示以及点击时需要分别调用以下两个方法统计展示量以及点击量
PhotonPushManager.getInstance().onPushShow(MoNotify notify, boolean show);
PhotonPushManager.getInstance().onPushClick(MoNotify notify);
6. demo地址
https://git.wemomo.com/module/androidpushdemo