umengプッシュクライアントが受信していません

1550 ワード

前言


こちらの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;
    }

主に現在のメインプロセスかどうかを位置決めし、アプリケーションで初期化作業を行い、繰り返し実行せずにappの起動速度を速める.
しかし今回、umengプッシュにアクセスした後、突然プッシュメッセージを受信できなくなったのはこれに関連して、初期化の方法を、今回最適化されたコードブロックから移動すればよく、ピット、多くは言わない.
公式サイトの統合ドキュメントでは、registerメソッドを呼び出すときにプロセス判断処理をしないでください.メインプロセスとchannelプロセスは、長い接続の正確な確立を保証するためにregisterメソッドを呼び出す必要があります.