{"record":{"id":"d196a119db4ce5d5","repo":"microg/GmsCore","slug":"e-getmessage","errorCode":null,"errorMessage":"e.getMessage()","messagePattern":"e\\.getMessage\\(\\)","errorType":"exception","errorClass":"IOException","httpStatus":null,"severity":"error","filePath":"play-services-gcm/src/main/java/org/microg/gms/gcm/CloudMessagingRpc.java","lineNumber":131,"sourceCode":"        }\n    }\n\n    private PendingIntent getSelfAuthIntent() {\n        if (selfAuthIntent == null) {\n            Intent intent = new Intent();\n            intent.setPackage(\"com.google.example.invalidpackage\");\n            selfAuthIntent = PendingIntent.getBroadcast(context, 0, intent, 0);\n        }\n        return selfAuthIntent;\n    }\n\n    public Intent sendRegisterMessageBlocking(Bundle extras) throws IOException {\n        sendRegisterMessage(extras);\n        Intent resultIntent;\n        try {\n            resultIntent = messengerResponseQueue.poll(30, TimeUnit.SECONDS);\n        } catch (InterruptedException e) {\n            throw new IOException(e.getMessage());\n        }\n        if (resultIntent == null) {\n            throw new IOException(ERROR_SERVICE_NOT_AVAILABLE);\n        }\n        return resultIntent;\n    }\n\n    private void sendRegisterMessage(Bundle extras) {\n        Intent intent = new Intent(ACTION_C2DM_REGISTER);\n        intent.setPackage(getGcmPackageName(context));\n        extras.putString(EXTRA_MESSAGE_ID, \"google.rpc\" + messageIdCounter.getAndIncrement());\n        intent.putExtras(extras);\n        intent.putExtra(EXTRA_MESSENGER, messenger);\n        intent.putExtra(EXTRA_APP, getSelfAuthIntent());\n        context.startService(intent);\n    }\n\n    public void sendGcmMessage(Bundle extras) {","sourceCodeStart":113,"sourceCodeEnd":149,"githubUrl":"https://github.com/microg/GmsCore/blob/157c9d86ac46c195a86c2f15ab55c84036223f95/play-services-gcm/src/main/java/org/microg/gms/gcm/CloudMessagingRpc.java#L113-L149","documentation":"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.","triggerScenarios":"Thrown at play-services-gcm/src/main/java/org/microg/gms/gcm/CloudMessagingRpc.java:131 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Catch the IOException and retry with exponential backoff","Verify GCM/Play services (or microG) is enabled and reachable","Check device connectivity before retrying"],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"157c9d86ac46c195a86c2f15ab55c84036223f95","analyzedAt":"2026-09-06T17:27:33.892Z","contentChangedAt":"2026-09-06T17:27:33.892Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}