​​
​​Hi all,

I am from RIL team in Mozilla Taipei.
I'm glad to propose you a new module/web api called "IMS Registration
Manager". It is worth sharing you the details and having suggestion
and feedback from you! :)

IMS(IP Multimedia Subsystem) is a new infrastructure and is very
important in mobile network especially for the carriers that enable
LTE which relies more on IP-based network and technology compared to
circuit-switched one in 3G/2G mobile network.

With IMS enabled, carriers start to migrate current telephony services
(Call Control, Text messaging) from legacy network to reduce the
the maintenance expense on multiple infrastructures(LTE, GSM, CDMA).
The mirgation takes couple of years. That means multiple technology
will coexist for a while. Hence, an additional option for user to
toggle this feature in device side becomes required from both
carrier's and device vendor's perspective.
In addition to traditional services, with IMS, carriers can introduce
rich communication services like video call, video sharing, presence
and instant-messaging to the users.

This is also a big task to enable IMS in device side, so we'd like to
work on this step by step. Introducing "IMS Registration Manager" is
the first step to provide user 2 additional options in settings:
1. To enable/disable IMS.
   There is no obvious difference from UX perspective when making
   voice call or text messaging even the underlying technology is
   changed.
   (Note: audio quality will be better because AMR-WB is introduced.)
2. To choose the preferred IMS Porfile to have better service
   quality according to the network condition where the device user
   is located. The device will register to IMS network with preferred
   bearrer that user seleted. Possible options are:
   [wifi-preferred, wifi-only, cellular-preferred, cellular-only]

Based on these requirements, the following webidl is proposed:

enum ImsCapability {
  "voice-over-cellular",
  "voice-over-wifi",
  "video-over-cellular",
  "video-over-wifi"
};

enum ImsProfile {
  "wifi-preferred",
  "wifi-only",
  "cellular-preferred",
  "cellular-only"
};

interface MozImsRegManager {
  getter MozImsRegHandler? handler(unsigned long index);
         // with multi-sim support, will be null if not supported
         // by the device configuration.

  readonly attribute unsigned long length;
                                   // with multi-sim supported, the
                                   // value will be the same to the
                                   // number of service-id/radio
                                   // interfaces available in device.
};

interface MozImsRegHandler : EventTarget {
    Promise<void> setEnabled(boolean enabled);
    Promise<boolean> getEnabled();
    Promise<void> setPreferredProfile(ImsProfile profile);
    Promise<ImsProfile> getPreferredProfile();

    readonly attribute ImsCapability? capability;
                                      // available when ims registered.

    readonly attribute DOMString? error;
                                  // available when the ims is not
                                  // registration to provide possible
                                  // error cause.

    attribute EventHandler oncapabilitychange;
                           // triggered if capability or error is changed.
};

partial interface Navigator {
  [Throws, Pref="dom.ims.enabled",
   CheckPermissions="ims", // or "mobileconnection"
   AvailableIn="CertifiedApps", UnsafeInPrerendering]
  readonly attribute MozImsRegManager mozImsManager;
};

Any suggestion on this is really appreciated. :)

Thanks,
Bevis
_______________________________________________
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform

Reply via email to