Droit d'accès au service IMS

À partir d'Android 12, Android est compatible avec la configuration des droits d'accès aux services TS.43, une spécification GSMA qui définit l'étape de validation des droits d'accès pour l'activation de services, y compris la voix sur Wi-Fi (VoWiFi), la voix sur LTE (VoLTE), les SMS sur IP (SMSoIP), l'activation de service sur l'appareil (ODSA) des appareils compagnons eSIM (associés à l'appareil à l'origine de la demande) et les informations sur le forfait de données.

Pour prendre en charge cette spécification, Android fournit une fonctionnalité d'éligibilité aux services IMS qui permet à un fournisseur de services d'informer les appareils mobiles de l'état des services réseau IMS (IP Multimedia Subsystem). Cette fonctionnalité d'autorisation permet à l'appareil d'interroger le serveur d'autorisation du transporteur tel que défini par la spécification GSMA TS.43 pour l'état d'autorisation IMS à l'aide de l'authentification EAP-AKA, sans que les utilisateurs aient à saisir d'identifiants manuellement.

Les opérateurs disposant de serveurs d'attribution de droits IMS peuvent utiliser la fonctionnalité d'attribution de droits de service IMS pour le provisionnement de services. L'adoption de cette fonctionnalité offre les avantages suivants:

  • Réduit les coûts de test et de certification pour les opérateurs, car cette fonctionnalité d'accès peut être utilisée sur plusieurs produits et OEM.
  • Réduit les frais généraux de développement pour les fabricants d'appareils grâce à une application Android standard.
  • Permet aux fabricants d'appareils et aux opérateurs de contribuer au code de la fonctionnalité, car elle est Open Source.
  • Fournit la gestion des adresses d'urgence pour les opérateurs nord-américains.

Partenaires GMS:

Pour les opérateurs qui ne sont pas compatibles avec la spécification TS.43, les partenaires GMS peuvent utiliser l'application d'activation de la fonctionnalité WFC, disponible sur les appareils GMS en tant qu'application non groupée, pour provisionner les services réseau IMS.

Si vous avez des demandes de fonctionnalités liées à la fonctionnalité d'éligibilité aux services IMS, contactez votre représentant Google ou envoyez un e-mail à l'adresse gms-connectivity-apps@google.com.

Architecture

La figure suivante décrit l'architecture et le comportement de la fonctionnalité d'éligibilité aux services IMS.

Fonctionnalité de droit d'accès TS.43

Figure 1 : Architecture de la fonctionnalité d'attribution de droits TS.43

Comme illustré dans la figure 1, l'architecture de la fonctionnalité d'éligibilité aux services IMS comprend les composants suivants:

  • service_entitlement Bibliothèque statique de l'API de service TS.43:cette bibliothèque implémente la spécification TS.43, interagit avec le serveur d'autorisation d'un opérateur et expose les API orientées application pour chaque cas d'utilisation TS.43.
  • ImsServiceEntitlement Application cliente:cette application utilise l'API de service TS.43. L'application implémente des éléments d'interface utilisateur, y compris des WebViews pour afficher le portail de services de l'opérateur afin que les utilisateurs puissent activer les services, et interagit avec d'autres composants Android pour gérer l'expérience utilisateur de bout en bout.

    Pour en savoir plus sur la configuration d'Android pour qu'il fonctionne avec le serveur d'autorisation basé sur TS.43 d'un opérateur, consultez l'application ImsServiceEntitlement.

Les lignes numérotées de la figure 1 montrent comment les composants de la fonctionnalité d'autorisation de service IMS communiquent entre eux. Voici une description de chacune des étapes, comme indiqué:

(1) L'application cliente appelle l'API de service TS.43 pour lancer une requête d'autorisation de service.

(2) L'API de service TS.43 envoie une requête HTTP au serveur d'autorisation du transporteur pour lancer un défi EAP-AKA.

(3) L'API de service TS.43 appelle des API de téléphonie (par exemple, getIccAuthentication) pour effectuer la requête-réponse EAP-AKA.

(4) Le service TS.43 reçoit des droits d'accès au service ou des données de configuration du serveur d'attribution du transporteur après la validation de la réponse EAP-AKA.

(5) Le service TS.43 renvoie le droit d'accès au service ou les données de configuration à l'application cliente.

(6) L'application cliente gère les données et affiche éventuellement le portail de service du transporteur pour que l'utilisateur termine l'activation du service.

Intégration

Cette section décrit le processus d'intégration de la bibliothèque service_entitlement et de l'application ImsServiceEntitlement.

Comme il n'y a pas de dépendance d'API Android 12, la bibliothèque service_entitlement et l'application ImsServiceEntitlement peuvent être rétroportées vers les anciennes plates-formes Android.

Bibliothèque service_entitlement

Étant donné que la bibliothèque service_entitlement est liée de manière statique à ImsServiceEntitlement app, aucune étape supplémentaire n'est requise pour intégrer la bibliothèque à l'application ImsServiceEntitlement.

La bibliothèque service_entitlement peut être intégrée à vos propres applications pour les cas d'utilisation TS.43, tels que le forfait de données et l'ODSA. La bibliothèque peut également être intégrée à une application pour les cas d'utilisation des droits d'accès autres que TS.43 basés sur le protocole EAP-AKA.

Vous trouverez ci-dessous les API à utiliser pour ces cas d'utilisation:

  • Application TS.43 utilisant le protocole HTTP TS.43 implémenté dans la bibliothèque : utilisez les API de la classe ServiceEntitlement.
  • Application non TS.43 utilisant le protocole EAP-AKA implémenté dans la bibliothèque: utilisez les API exposées dans la classe EapAkaHelper.

Partenaires GMS:les fournisseurs de serveurs d'autorisation TS.43 avec lesquels la bibliothèque service_entitlement a été testée dans Android 12 sont les suivants.

  • Ericsson
  • HPE
  • Nokia

Application ImsServiceEntitlement

Par défaut, Android inclut l'application ImsServiceEntitlement installée dans la partition du produit en tant qu'application privilégiée. Pour configurer l'application, utilisez les clés CarrierConfig suivantes:

Clé Valeur
KEY_ENTITLEMENT_SERVER_URL_STRING URL du serveur d'attribution des droits du transporteur. Le préfixe https:// doit être inclus.
KEY_FCM_SENDER_ID_STRING ID d'expéditeur FCM de l'opérateur.

Ne définissez pas cette valeur si le transporteur n'exige pas FCM.
KEY_SHOW_VOWIFI_WEBVIEW_BOOL Définissez la valeur sur true si l'opérateur nécessite une UI de portail Web pour que les utilisateurs puissent s'inscrire au service VoWiFi. (par exemple, accepter les conditions d'utilisation ou saisir une adresse d'urgence).

Cette information est généralement requise par les transporteurs en Amérique du Nord.
KEY_WFC_EMERGENCY_ADDRESS_CARRIER_APP_STRING
Définissez-le sur com.android.imsserviceentitlement/.WfcActivationActivity, si KEY_SHOW_VOWIFI_WEBVIEW_BOOL est true.
KEY_IMS_PROVISIONING_BOOL Définissez la valeur sur true si l'opérateur nécessite le provisionnement réseau des services IMS (VoLTE/VoWiFi/SMSoIP) en arrière-plan.

Cette information est requise par certains transporteurs européens.
KEY_CARRIER_VOLTE_PROVISIONING_REQUIRED_BOOL Définissez sur true si KEY_IMS_PROVISIONING_BOOL est true.

Le trafic HTTP vers le serveur d'attribution et le portail Web d'un opérateur passe par le réseau par défaut, par exemple les données mobiles ou le Wi-Fi par défaut.

Partenaires GMS:les opérateurs suivants sont compatibles avec l'application d'autorisation TS.43 dans Android 12, conformément à la spécification TS.43 v5.0:

  • États-Unis: CSpire, US Cellular, Cellcom
  • France: Orange

UI système supplémentaire pour le provisionnement IMS

Cette section explique comment les OEM peuvent prendre en charge des éléments d'UI système supplémentaires liés au provisionnement de services IMS (par exemple, lors de l'affichage d'une notification lorsque VoWiFi est provisionné).

L'application ImsServiceEntitlement définit l'état de provisionnement VoWiFi dans la plate-forme à l'aide de l'API système ProvisioningManager.setProvisioningIntValue(KEY_VOICE_OVER_WIFI_ENABLED_OVERRIDE, value). Cette API est également utilisée pour VoLTE (avec KEY_VOLTE_PROVISIONING_STATUS) et SMSoIP (avec KEY_SMS_OVER_IP_ENABLED).

L'UI du système peut ensuite lire l'état de provisionnement à l'aide de getProvisioningIntValue ou en enregistrant un rappel pour surveiller le changement d'état de provisionnement via registerProvisioningChangedCallback.

Forcer des configurations pour les tests

Utilisez les procédures suivantes pour modifier temporairement le comportement de l'application ImsServiceEntitlement à des fins de test. Pour savoir comment remplacer les configurations de l'opérateur, consultez Remplacer les configurations de l'opérateur.

Ignorer le processus d'inscription au VoWiFi

Pour ignorer le processus d'inscription à VoWiFi, ce qui permet d'activer VoWiFi directement, remplacez la configuration du transporteur KEY_WFC_EMERGENCY_ADDRESS_CARRIER_APP_STRING et définissez sa valeur sur une chaîne vide.

Ignorer le provisionnement IMS

Pour ignorer le provisionnement IMS, rendre les services IMS disponibles et permettre aux utilisateurs d'activer ces services sans provisionnement réseau, remplacez la configuration du transporteur KEY_CARRIER_VOLTE_PROVISIONING_REQUIRED_BOOL et définissez sa valeur sur false.

Modifier l'URL du serveur d'attribution

Pour modifier l'URL du serveur d'autorisation, remplacez la configuration du transporteur KEY_ENTITLEMENT_SERVER_URL_STRING et définissez sa valeur sur la chaîne d'URL attendue. Vous devez inclure le préfixe https://.

Remplacer les configurations de l'opérateur

À partir d'Android 11, les commandes de forçage de la configuration de l'opérateur sont intégrées et disponibles avec des droits d'accès racine.

La commande suivante montre comment remplacer la clé de configuration de l'opérateur carrier_volte_provisioning_required_bool et définir sa valeur sur false. Vous pouvez exécuter la commande plusieurs fois pour remplacer plusieurs configurations.

adb root
adb shell cmd phone cc set-value -p carrier_volte_provisioning_required_bool false

Pour effacer tous les forçages, utilisez la commande suivante:

adb shell cmd phone cc clear-values

Pour en savoir plus, exécutez la commande suivante:

adb shell cmd phone cc