umeng推送客户端没收到

前言

这边app组想把推送统一下,聚合推送选择了umeng,一切准备就绪,demo都正常运行,但是真正接入入app时,死活收不到推送,排查了下服务端,没问题。后续用控制台测试模式也无法接收到,基本问题定位在app端了。

问题定位

这个要从之前的app优化说起,自从功能越来越多后,我们的app也变成了一个多进程的应用,所以做了如下优化

 /**
     * 判断是否是主进程
     *
     * @return
     */
    public boolean isAppMainProcess() {
        int pid = android.os.Process.myPid();
        String processName = getProcessName(getApplicationContext(), pid);
        if (processName == null) {
            return false;
        }
        return getPackageName().equalsIgnoreCase(processName);
    }

    public static String getProcessName(Context cxt, int pid) {
        ActivityManager am = (ActivityManager) cxt.getSystemService(Context.ACTIVITY_SERVICE);
        List runningApps = am.getRunningAppProcesses();
        if (runningApps == null) {
            return null;
        }
        for (android.app.ActivityManager.RunningAppProcessInfo procInfo : runningApps) {
            if (procInfo.pid == pid) {
                return procInfo.processName;
            }
        }
        return null;
    }

主要是定位是否是当前的主进程,在application中去做一次初始化工作,不重复执行,加快app的启动速度。

但是这一次,接入umeng推送后,突然无法接收到推送消息的与这个有关,把初始化的方法,移出本次优化的代码块即可,坑,不多说。

官网集成文档说明请勿在调用register方法时做进程判断处理,主进程和channel进程均需要调用register方法才能保证长连接的正确建立

你可能感兴趣的:(android路)