microg/GmsCore · error · IOException

e.getMessage()

Error message

e.getMessage()

What it means

IOException thrown in CloudMessagingRpc.sendRegisterMessageBlocking when registration fails; the message comes from the underlying exception (hence 'e.getMessage()'), typically relaying a GCM error string for a timed-out or rejected register request.

Source

Thrown at play-services-gcm/src/main/java/org/microg/gms/gcm/CloudMessagingRpc.java:131

        }
    }

    private PendingIntent getSelfAuthIntent() {
        if (selfAuthIntent == null) {
            Intent intent = new Intent();
            intent.setPackage("com.google.example.invalidpackage");
            selfAuthIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
        }
        return selfAuthIntent;
    }

    public Intent sendRegisterMessageBlocking(Bundle extras) throws IOException {
        sendRegisterMessage(extras);
        Intent resultIntent;
        try {
            resultIntent = messengerResponseQueue.poll(30, TimeUnit.SECONDS);
        } catch (InterruptedException e) {
            throw new IOException(e.getMessage());
        }
        if (resultIntent == null) {
            throw new IOException(ERROR_SERVICE_NOT_AVAILABLE);
        }
        return resultIntent;
    }

    private void sendRegisterMessage(Bundle extras) {
        Intent intent = new Intent(ACTION_C2DM_REGISTER);
        intent.setPackage(getGcmPackageName(context));
        extras.putString(EXTRA_MESSAGE_ID, "google.rpc" + messageIdCounter.getAndIncrement());
        intent.putExtras(extras);
        intent.putExtra(EXTRA_MESSENGER, messenger);
        intent.putExtra(EXTRA_APP, getSelfAuthIntent());
        context.startService(intent);
    }

    public void sendGcmMessage(Bundle extras) {

View on GitHub (pinned to 157c9d86ac)

Solutions

  1. Catch the IOException and retry with exponential backoff
  2. Verify GCM/Play services (or microG) is enabled and reachable
  3. Check device connectivity before retrying
Defensive patterns

Strategy: retry

When it happens

Trigger: Thrown at play-services-gcm/src/main/java/org/microg/gms/gcm/CloudMessagingRpc.java:131 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of microg/GmsCore@157c9d86ac (2026-09-06). Data as JSON: /api/errors/d196a119db4ce5d5. Report an issue: GitHub.