Google Messages heeft een verborgen RCS API voor apps van derden

De Google Berichten-app heeft een verborgen Android Messages API waarmee berichtenapps van derden RCS-berichten kunnen verzenden.

Update 2 (09-07-2021 om 16:49 ET): We hebben vernomen dat deze RCS API momenteel niet bedoeld is voor gebruik door apps van derden. Klik hier voor meer informatie.

Eerdere updates

Update 1 (07/09/2021 @ 14:53 ET): We hebben het artikel bijgewerkt met informatie dat de API alleen te vinden is in de exclusieve Samsung-versie van de Google Berichten-app. Klik hier voor meer informatie.

Lees verder

RCS, wat staat voor Rich Communication Services, wordt algemeen gezien als de opvolger van SMS. Het ondersteunt functies zoals groepschatbeheer, bestandsshares van hogere kwaliteit, leesbevestigingen, type-indicatoren en end-to-end-codering. Om het RCS-protocol voor chats te kunnen gebruiken, moet het via een API worden ondersteund door het netwerk, het besturingssysteem van de telefoon en de berichten-app van de telefoon. Amerikaanse providers hebben te lang gewacht met het adopteren van RCS, dus Google heeft ze volledig omzeild en hun eigen RCS-backend toegevoegd aan de Google Berichten-app. Op Android is echter

alleen de Google Berichten-app heeft toegang tot de RCS API van Android. Dat zou kunnen veranderen als Google zijn ‘Android Messages API’ opent.

Terug in 2019, we leerden dat Google bezig was met het toevoegen van een RCS API. Helaas waren de API's verborgen voor ontwikkelaars en kunnen ze alleen worden gebruikt door apps op een verborgen toelatingslijst, waaronder de Google Berichten-app. Hoewel de Google Berichten-app de laatste tijd een stuk beter is geworden, is dat nog steeds het geval bijgewerkt met basisfuncties je vindt het in tal van andere sms-apps voor Android. Het probleem met het overstappen naar een van die andere apps is dat je geen berichten via RCS kunt verzenden, waardoor je alle functies verliest waar we het hierboven over hadden. We hebben echter bewijs gevonden dat Google een niet-gepubliceerde 'Android Messages API' heeft waarmee elke sms-app van derden sms-/mms-/RCS-berichten kan verzenden via Google Berichten.

Een APK-demontage kan vaak functies voorspellen die in een toekomstige update van een applicatie kunnen verschijnen, maar het is mogelijk dat een van de functies die we hier noemen mogelijk niet in een toekomstige release wordt opgenomen. Dit komt omdat deze functies momenteel niet zijn geïmplementeerd in de live build en op elk moment door de ontwikkelaars kunnen worden ingetrokken in een toekomstige build.

Toen Google Messages vandaag op Google Play werd uitgerold, hebben we de APK gedecodeerd en de volgende tekenreeksen in de bronnen ontdekt:

<stringname="external_messaging_api_description">With this permission the app will be allowed to send SMS/MMS/RCS using Android Messages. It will have an access to send messages without any extra approvals.string>
<stringname="external_messaging_api_label">Permission to send SMS/MMS/RCS messages using Android Messages APIstring>

Deze tekenreeksen beschrijven duidelijk een toestemming die berichtenapps van derden kunnen vragen om sms-, mms- of RCS-berichten te kunnen verzenden via de Google Berichten-app. In het Manifest-bestand van de Google Berichten-app hebben we ook de toestemming gevonden die berichten-apps moeten declareren:

<permissionandroid: description="@string/external_messaging_api_description"android: label="@string/external_messaging_api_label"android: name="com.google.android.apps.messaging.EXTERNAL_MESSAGING_API"android: permissionGroup="android.permission-group.SMS"android: protectionLevel="dangerous"/>

Het toestemmingstype wordt vermeld als 'gevaarlijk', wat betekent dat dit niet wordt verleend aan een aanvragende app zonder dat er een bevestiging aan de gebruiker wordt weergegeven. Dit wordt ook aangegeven in de hierboven ingesloten strings, waarin staat dat een app die de toestemming heeft "berichten kan verzenden zonder enige extra goedkeuringen", wat impliceert dat er in eerste instantie goedkeuring moet worden verleend. De toestemming is gegroepeerd onder de sms-categorie, wat logisch is omdat deze alleen bedoeld is voor gebruik door berichten-apps.

Hoewel we hoopten dat Google de RCS API van het Android-platform zou openen, is er potentieel één groot voordeel als Google Berichten de berichtroutering afhandelt. Dit zou kunnen betekenen dat alle RCS-berichten die via een berichten-app van derden worden verzonden, gebruik zullen maken van de chatservice van Google, wat tot nu toe de meest gebruikte RCS-implementatie is sinds geen van de versies van de vervoerders zijn vertrokken.

We hebben nog geen aankondiging van Google gevonden over deze Android Messages API, maar we hopen dat deze binnenkort wordt geopend. Sms-apps van derden zijn momenteel in het nadeel omdat ze geen RCS-ondersteuning hebben, maar deze API betekent dat je je favoriete sms-app kunt gebruiken en kunt profiteren van de voordelen van RCS. Uiteraard zal de sms-app van derden de nieuwe API ook daadwerkelijk moeten implementeren, maar het ziet er niet naar uit dat de implementatie te moeilijk zal zijn.

BerichtenOntwikkelaar: Google LLC

Prijs: gratis.

4.2.

Downloaden

Update 1: API alleen te vinden in de Samsung-versie van de app

Kort nadat we dit artikel hadden gepubliceerd, kwamen we erachter dat de tekenreeksen en het manifestitem voor de Android Messages API alleen te vinden zijn in de Google Berichten-app voor Samsung Galaxy-telefoons. Het is dezelfde app- en pakketnaam, maar Google Play rolt deze versie van de app dynamisch uit naar Samsung Galaxy-telefoons. Deze vermeldingen zijn verschillende versies geleden toegevoegd, dus de API zelf lijkt niet nieuw te zijn. We weten niet zeker waarom de vermeldingen alleen verschijnen in de versie van de app voor Samsung-telefoons, maar het is mogelijk Google heeft de API gemaakt zodat de Messaging-app van Samsung de Chat-service van Google kan gebruiken zonder dat gebruikers hoeven over te schakelen apps. We zien echter niet in waarom deze API niet kan worden opengesteld voor andere apps, en we zien ook nog geen enkel bewijs in de Samsung Messages-app zelf dat deze deze API gebruikt. Hopelijk stelt Google de API open voor alle berichten-apps van derden door deze op te nemen in de hoofdversie van de app.


Update 2: API beperkt tot Samsung-apps

Nog dieper graven in de Google Berichten-app (h/t 9to5Google), hebben we bewijs gevonden dat deze Android Messages API momenteel beperkt is voor gebruik door bepaalde Samsung-apps. Concreet lijkt het erop dat deze functie bedoeld is om Samsung-wearables en aangesloten tablets sms-, mms- en RCS-berichten te laten verzenden via Google Messages. Dit maakt deel uit van Samsungs Call & Message Continuity-functie.

De huidige toelatingslijst bevat het pakket voor oproep- en berichtcontinuïteit, dwz. "com.samsung.android.mdecservice", naast andere apps. De code controleert de pakketnaam en handtekening van de aanvragende app voordat toegang wordt verleend tot de API. Met een vlag heeft elke app toegang tot de API, maar het is duidelijk dat deze waarde niet openbaar mag worden gebruikt. (De vlag heeft de toepasselijke naam "allow_any_app_to_connect_do_not_use_in_public_builds".)

Met dank aan PNF Software voor het verstrekken van een gebruikslicentie JEB-decompiler, een professionele reverse engineering-tool voor Android-applicaties.