Application Level Roaming (ALR) is a facility which allows a SIP Profile to switch between service providers by using Internet Access Points (IAPs). By default, all SIP clients allow the SIP profiles they are using to roam across IAPs.
To restrict roaming for a SIP profile to a set of IAPs, configure the profile with a Service Network Access Point (SNAP) ID. A SNAP ID is a unique identifier for a set of IAPs. The SIP profile store must include the SNAP ID that can be used by the SIP profile while roaming.
Use the CSipProfileAlrController and MSipProfileAlrObserver classes to control ALR.
To register for ALR events, use an instance of the CSipProfileAlrController class and implement the MSipProfileAlrObserver interface to register for ALR events. When registered for the ALR event, the MSipProfileAlrObserver interface notifies the client when a SIP profile used by the client tries to migrate to another IAP. Then the client can allow or disallow the migration request using the CSipProfileAlrController::AllowMigrationL() or CSipProfileAlrController::DisallowMigrationL() functions.
The following illustration shows the call flow of enabling a SIP profile configured with a SNAP ID.
When the SIP profile is registered with a SNAP ID, you can allow the SIP profile to migrate to another IAP within the SNAP.
In the following illustration, the SIP profile is deregistered after migrating to another IAP. To use it again, you must register the profile again.
The following illustration shows the call flow of SIP profile migration.