@desc: 描述
*/
public class AliPushManager implements IPushActions {
private static AliPushManager mPushManager;
private String TAG = “AliPushManager”;
CloudPushService pushService;
private FirebaseApp firebaseApp;
private AliPushManager() {
}
public static AliPushManager getInstance() {
if (mPushManager == null) {
mPushManager = new AliPushManager();
}
return mPushManager;
}
@Override
public void setDebugMode(boolean isDebugMode) {
if (pushService != null) {
//调试是否打开
pushService.setDebug(isDebugMode);
//设置日志级别
pushService.setLogLevel(CloudPushService.LOG_DEBUG);
}
}
@Override
public void initPush(final Application application) {
pushService = PushServiceFactory.getCloudPushService();
pushService.setPushIntentService(MyMessageIntentService.class);
pushService.register(application, new CommonCallback() {
@Override
public void onSuccess(String response) {
LogUtils.d(TAG, “init cloudchannel success”);
AliPushManager.getInstance().setAlias(application, PushTagUtils.getDeviceId());
AliPushManager.getInstance().setTags(application, PushTagUtils.getTag());
}
@Override
public void onFailed(String errorCode, String errorMessage) {
LogUtils.d(TAG, "init cloudchannel failed -- errorcode:" + errorCode + " -- errorMessage:" + errorMessage);
}
});
//初始化辅助渠道推送
initThirdPush(application);
AliPushManager.getInstance().setDebugMode(BuildConfig.DEBUG);
setPushService(pushService);
}
private void initThirdPush(Application application) {
// 初始化小米辅助推送
MiPushRegister.register(application, AppUseConstant.XIAOMI_APP_ID, AppUseConstant.XIAOMI_APP_KEY);
// 接入华为辅助推送
HuaWeiRegister.register(application);
// 接入ViVo初始化推送
VivoRegister.register(application);
// 接入Opp)初始化推送
OppoRegister.register(application, AppUseConstant.OPPO_APP_KEY, AppUseConstant.OPPO_APP_Secret);
// 接入MeiZu初始化推送
MeizuRegister.register(application, “MEIZU_ID”, “MEIZU_KEY”);
// 接入FCM/GCM初始化推送
GcmRegister.register(application, AppUseConstant.GCM_SEND_ID, AppUseConstant.GOOGLE_APP_ID);
//注册FireBase
initFireBaseApp(application);
}
private void initFireBaseApp(Application application) {
FirebaseOptions options = new FirebaseOptions.Builder()
.setApplicationId(AppUseConstant.GOOGLE_APP_ID)
.setGcmSenderId(AppUseConstant.GCM_SEND_ID)
.setApiKey(AppUseConstant.GOOGLE_API_KEY).build();
boolean hasBeenInitialized = false;
List firebaseApps = FirebaseApp.getApps(application);
for (FirebaseApp app : firebaseApps) {
if (app.getName().equals(FirebaseApp.DEFAULT_APP_NAME)) {
hasBeenInitialized = true;
firebaseApp = app;
}
}
//判断是否注册
if (!hasBeenInitialized) {
firebaseApp = FirebaseApp.initializeApp(application, options, AppUtils.getAppName());
}
}
public void setPushService(CloudPushService pushService) {
this.pushService = pushService;
}
public CloudPushService getPushService() {
return pushService;
}
@Override
public boolean isPushStopped(Context context) {
return false;
}
@Override
public void setAlias(final Context context, final String alias) {
if (pushService != null) {
pushService.addAlias(alias, new CommonCallback() {
@Override
public void onSuccess(String s) {
LogUtils.d(TAG, alias + " success 别名绑定成功");
}
@Override
public void onFailed(String errorCode, String errorMsg) {
LogUtils.d(TAG, alias + " failed." + "errorCode: " + errorCode + ", errorMsg:" + errorMsg + "\n");
}
});
}
}
@Override
public void unBindTag(final Context context, final int target, final String[] tags) {
if (pushService != null) {
pushService.unbindTag(target, tags, null, new CommonCallback() {
@Override
public void onSuccess(String response) {
LogUtils.d(TAG, “success tag解绑成功” + tags);
AliPushManager.getInstance().setTags(context, PushTagUtils.getTag());
}
@Override
public void onFailed(String errorCode, String errorMsg) {
LogUtils.d(TAG, " failed." + "errorCode: " + errorCode + ", errorMsg:" + errorMsg + "\n");
}
});
}
}
@Override
public void setTags(Context context, final String[] tags) {
if (pushService != null) {
pushService.bindTag(CloudPushService.DEVICE_TARGET, tags, “”, new CommonCallback() {
@Override
public void onSuccess(String s) {
LogUtils.d(TAG, " success 标签绑定成功" + Arrays.toString(tags));
}
@Override
public void onFailed(String errorCode, String errorMsg) {
LogUtils.d(TAG, tags + " failed." + "errorCode: " + errorCode + ", errorMsg:" + errorMsg + "\n");
}
});
}
}
@Override
public void removeAlias(final Context context, final String alias) {
if (pushService != null) {
pushService.removeAlias(alias, new CommonCallback() {
@Override
public void onSuccess(String response) {
LogUtils.d(TAG, alias + " success 别名解绑成功");
LogUtils.d(TAG, AppUseConstant.ALIAS + " --解绑前的别名—");
if (!AppUseConstant.isUnBind) {
AppUseConstant.ALIAS = PushTagUtils.getDeviceId();
LogUtils.d(TAG, AppUseConstant.ALIAS + " --解绑后的别名—");
AliPushManager.getInstance().setAlias(context, AppUseConstant.ALIAS);
}
}
@Override
public void onFailed(String errorCode, String errorMsg) {
LogUtils.d(TAG, " failed." + "errorCode: " + errorCode + ", errorMsg:" + errorMsg);
}
});
}
}
@Override
public void openPush() {
if (pushService != null) {
pushService.turnOnPushChannel(new CommonCallback() {
@Override
public void onSuccess(String s) {
com.blankj.utilcode.util.LogUtils.d(“turn on push channel success”);
}
@Override
public void onFailed(String errorCode, String errorMsg) {
com.blankj.utilcode.util.LogUtils.d("turn on push channel failed." + "errorCode: " + errorCode + ", errorMsg:" + errorMsg + "\n");
}
});
}
}
@Override
public void closePush() {
if (pushService != null) {
pushService.turnOffPushChannel(new CommonCallback() {
@Override
public void onSuccess(String s) {
com.blankj.utilcode.util.LogUtils.d(“turn off push channel success”);
}
@Override
public void onFailed(String errorCode, String errorMsg) {
com.blankj.utilcode.util.LogUtils.d("turn off push channel failed." + "errorCode: " + errorCode + ", errorMsg:" + errorMsg + "\n");
}
});
}
}
@Override
public boolean isStopPush(Context context) {
return false;
}
@Override
public void stopJPush(Context context) {
}
@Override
public void resumeJPush(Context context) {
}
@Override
public void bindAccount(Context context, String userId) {
final String account = userId;
if (pushService != null) {
pushService.bindAccount(account, new CommonCallback() {
@Override
public void onSuccess(String s) {
LogUtils.d(TAG, account + " 账号绑定成功 success\n");
}
@Override
public void onFailed(String errorCode, String errorMsg) {
LogUtils.d(TAG, account + " failed." + "errorCode: " + errorCode + ", errorMsg:" + errorMsg);
}
});
}
}
@Override
public void unbindAccount(Context context, final String account) {
if (pushService != null) {
pushService.bindAccount(account, new CommonCallback() {
@Override
public void onSuccess(String s) {
LogUtils.d(TAG, s + “unbind account success 解绑账号成功”);
}
@Override
public void onFailed(String errorCode, String errorMsg) {
LogUtils.d(TAG, "bind account failed." + "errorCode: " + errorCode + ", errorMsg:" + errorMsg + "\n");
}
});
}
}
@Override
public void listTags(final Context context, final int target) {
if (pushService != null) {
pushService.listTags(target, new CommonCallback() {
@Override
public void onSuccess(String response) {
LogUtils.d(TAG, response + " success 查询标签成功");
if (response.contains(Arrays.toString(PushTagUtils.getTag()))) {
AliPushManager.getInstance().unBindTag(context, CloudPushService.DEVICE_TARGET, PushTagUtils.getTag());
} else {
bindTag(context, PushTagUtils.getTag());
}
}
@Override
public void onFailed(String errorCode, String errorMsg) {
LogUtils.d(TAG, " failed." + "errorCode: " + errorCode + ", errorMsg:" + errorMsg);
}
});
}
}
private void bindAlias(Context context, String alias) {
LogUtils.d(TAG, alias);
if (alias.isEmpty()) {
return;
}
AliPushManager.getInstance().setAlias(context, alias);
}
private void bindTag(Context context, String[] tags) {
AliPushManager.getInstance().setTags(context, tags);
//LogUtils.d(TAG, String.valueOf(tags));
}
@Override
public void listAliases(final Context context) {
if (pushService != null) {
pushService.listAliases(new CommonCallback() {
@Override
public void onSuccess(String response) {
LogUtils.d(TAG, response + " success 别名查询成功");
}
@Override
public void onFailed(String errorCode, String errorMsg) {
LogUtils.d(TAG, " failed." + "errorCode: " + errorCode + ", errorMsg:" + errorMsg);
}
});
}
}
}