iOS и eSIM

Данная статься является четвертой в цикле лекций по изучению процесса перепродажи тарифов eSIM и в ней мы поговорим более подробнее из чего состоит процесс установки eSIM на телефоны с операционной системой iOS. Первая статья была обзорной и рассказывала об общей актуальности данной темы, вторая статья погружала нас в различные части экосистемы eSIM, а в третьей мы говорили о процессе установки eSIM на телефоны с операционной системой Android. В дальнейшем мы будем рассматривать предлагаемое решение для перепродажи тарифов eSIM.

iOS - это операционная система, разработанная Apple на базе Mac OS и работающая на их мобильных телефонах и планшетах, но в отличие от Android, iOS не имеет открытого исходного кода. С момента выпуска iOS 12.1 iOS поддерживает создание профилей eSIM, многие iPhone, поступающие в продажу сегодня, оснащены возможностями eSIM. В этой главе рассказывается о том, как структурированы и работают приложения для iOS, а также о том, как приложение для iOS может реализовать некоторые функциональные возможности.

1. SDK

iOS SDK - это набор, содержащий инструменты и фреймворки, необходимые для создания приложений для устройств под управлением iOS. Архитектуру iOS и SDK можно разделить на четыре набора, которые можно рассматривать как слои, как показано на рисунке 1. Нижние уровни содержат фундаментальные технологии и сервисы, в то время как более высокие уровни построены на нижних уровнях для создания более сложных и изощренных сервисов.

Рисунок 1. Архитектурные слои iOS
Рисунок 1. Архитектурные слои iOS

Слой Cocoa touch содержит основные фреймворки, необходимые при создании приложения для iOS, такие как фреймворк UIKit, который, например, предлагает поддержку для создания пользовательского интерфейса и управления им и предоставления пользовательского ввода, а также других типов ввода в приложение. Медиауровень и его фреймворки используются, когда в приложении используются изображения, анимация, аудио или видео. Основные сервисы содержат некоторые фреймворки, которые предоставляют основные сервисы, необходимые для создания полезных приложений, такие как Core Telephony framework, который будет обсуждаться позже в разделе 5. Базовый уровень ОС содержит фреймворки, которые используются для предоставления низкоуровневых служб, связанных с сетями и оборудованием, таких как доступ к файловой системе или доступ к Bluetooth. Эти фреймворки очень ограничены разработчиками, но вместо этого используются фреймворками более высокого уровня для предоставления сервиса, который может использовать разработчик [32].

2. Xcode

Xcode - это IDE от Apple (интегрированная среда разработки), которая используется для создания и тестирования программного обеспечения для продуктов Apple, таких как iPhone, iPad и Mac [33]. Он включает в себя новейшие SDK для различных платформ и поддерживает официально поддерживаемые языки программирования, которые включают Objective-C и Swift. Xcode доступен только для macOS и не может быть запущен, например, в Windows.

3. UIKit

Платформа UIKit содержит все основные объекты и инфраструктуру, необходимые для создания приложения для iOS. Он предоставляет приложению способы взаимодействия с системой, отображения содержимого на экране, а затем позволяет пользователю взаимодействовать с отображаемым содержимым с помощью различных методов ввода. Он также обеспечивает основной цикл событий, с помощью которого можно управлять всеми различными взаимодействиями между приложением, пользователем и системой [34]. Приложения, созданные с помощью UIKit, структурированы на основе шаблона проектирования MVC (Model-View-Controller), где модель отвечает за все данные и логику, представление визуально представляет данные пользователю, а контроллер соединяет модель и представление, перемещая данные между ними при необходимости [35]. Это можно увидеть на рисунке 2, где также показаны некоторые основные компоненты приложения, такие как объект UIApplication, который запускает основной цикл событий приложения и отвечает за жизненный цикл приложения и управляет им.

Рисунок 2. Основные компоненты в приложении для iOS, реализованные с использованием UIKit, структурированы на основе шаблона проектирования MVC
Рисунок 2. Основные компоненты в приложении для iOS, реализованные с использованием UIKit, структурированы на основе шаблона проектирования MVC

3.1 Жизненный цикл приложения

В течение своего жизненного цикла приложение iOS проходит через набор из нескольких состояний, как показано на рисунке 3. При запуске система переведет приложение либо в фоновое состояние, либо в неактивное, если пользовательский интерфейс вот-вот будет отображен. Как только пользовательский интерфейс появляется на экране на переднем плане, система автоматически переводит приложение в активное состояние. Теперь приложение будет переключаться между активным и фоновым состояниями вплоть до момента закрытия приложения, когда оно переходит в приостановленное состояние, а затем обратно в не запущенное [36]. При каждом из этих переходов приложение может выполнять некоторые задачи, такие как сохранение данных и освобождение любых общих ресурсов при переходе в приостановленное состояние и освобождение памяти при переходе в фоновое состояние.

Рисунок 3. Жизненный цикл iOS приложения
Рисунок 3. Жизненный цикл iOS приложения

Начиная с iOS 13, можно создавать несколько так называемых сцен. Сцена содержит один экземпляр пользовательского интерфейса приложения и выполняется одновременно с другими сценами в том же приложении, разделяя такие вещи, как память и пространство процесса [37]. Все сцены в приложении обрабатываются отдельно и имеют свои собственные события жизненного цикла, независимые друг от друга, и даже независимы от самого приложения. Это означает, что каждая сцена может находиться в разных состояниях в данный момент времени [36].

4. Права

Права в iOS - это права или привилегии, которые используются для предоставления приложениям определенных возможностей, таких как использование специального сервиса. Они настраиваются в Xcode как пары ключ-значение и хранятся в файле списка с расширением .entitlements [38].

Тип значения, связанного с ключом права доступа, зависит от ключа. Многие ключи принимают логические значения, т.е. true или false, но могут также принимать в качестве значения строку или массивы строк [39].

Права, определенные в файле прав доступа для приложения, затем в процессе подписи кода приложения объединяются с информацией из учетной записи разработчика вместе с другой соответствующей информацией о проекте, чтобы определить и применить окончательный набор прав, предоставленных приложению. Эти права затем встраиваются в подпись кода приложения [38][39].

5. eSIM в iOS

Базовая платформа телефонии, расположенная на уровне основных служб, предоставляет услуги для управления, например, информацией об абоненте и получения информации о поставщике услуг сотовой связи пользователя. Начиная с iOS 12.1, он также поддерживает управление eSIM с помощью классов CTCellularPlanProvisioning и CTCellularPlanProvision- ingRequest [40].

Класс CTCellularPlanProvisioning содержит два метода, supportsCellularPlan() и addPlan() [41]. В отличие от Android, здесь нет методов, которые можно использовать для включения, отключения или удаления профиля из приложения. Ниже описаны только два существующих метода:

  • Метод supportsCellularPlan() проверяет, есть ли у устройства порт поддержки eSIM.
  • Метод addPlan() запускает процесс подготовки нового файла eSIM pro. В качестве входных данных addPlan() принимает обработчик завершения, который выполняется после завершения процесса подготовки, указывающий, был ли он успешным, неудачным или оказался в неизвестном состоянии, и CTCellularPlanProvisioningRequest, используемый для идентификации профиля eSIM для загрузки. Когда приложение вызывает этот метод, запускается мастер iOS, который проведет пользователя через процесс установки и настройки [42].

CTCellularPlanProvisioningRequest, в свою очередь, содержит адрес SM-DP+ и необязательно маркер кода активации, код подтверждения, EID, ICCID и OID, который является идентификатором объекта запроса на предоставление и используется в качестве входных данных для метода addPlan() в CTCellularPlanProvisioning [43].

Чтобы иметь возможность использовать любой из этих классов и методов, вызывающее приложение должно иметь соответствующие права. Право на доступ к eSIM в iOS можно запросить у Apple, отправив форму по адресу https://developer.apple.com/contact/request/esim-access-permission , но это право предоставляется не для всех, поскольку оно предназначено исключительно для приложений операторов беспроводной связи и может быть запрошено только владельцем учетной записи команды разработчиков в Apple developer program.

Литература

[1] D. Gleeson, eSIM Device Sales Forecast: Smartphones, Tablets, and Wearables, 2019–24, 2019.

https://ovum.informa.com/resources/product-content/esim-device-sales-forecast-smartphones-tablets-and-wearables-201924-ces004-000118

[2] E. Vahidian, Evolution of the SIM to eSIM, Norwegian University of Science and Technology, Department of Telematics, 2013.

[3] D. G. Koshy, S. N. Rao, Evolution of SIM Cards – What’s Next?, Interna- tional Conference on Advances in Computing, Communications and Infor- matics (ICACCI), Bangalore, 2018, pp. 1963-1967.

[4] B. A. Abdou, Commercializing eSIM for Network Operators, 2019 IEEE 5th World Forum on Internet of Things (WF-IoT), Limerick, Ireland, 2019, pp. 616-621.

[5] T. J. Gerpott, S. May, Embedded Subscriber Identity Module eSIM, Business

& Information Systems Engineering 59, 2017, pp. 293–296. https://doi.org/10.1007/s12599-017-0474-4

[6] P. Hristova and J. Bryan, eSIM For The Roaming Consumer, Roaming Con- sultancy Company Limited, 2018.

[7] GSMA, eSIM Whitepaper, The what and how of Remote SIM Provisioning, 2018.

[8] M. Meyer, E. A. Quaglia and B. Smyth, An Overview of GSMA’s M2M Remote Provisioning Specification, 2019.

[9] A. Vesselkov, H. Hammainen and P. Ikalainen, Value networks of embedded SIM-based remote subscription management, 2015 Conference of Telecommu- nication, Media and Internet Techno-Economics (CTTE), Munich, 2015, pp. 1-7.

[10] M. Tsurusawa, Latest Trends in Remote SIM Provisioning Technology, Special Feature - The future of cellular networks, New Breeze Vol. 29 No.3 Summer, 2017, pp. 1-10.

[11] J. Park, K. Baek and C. Kang, Secure Profile Provisioning Architecture for Embedded UICC, 2013 International Conference on Availability, Reliability and Security, Regensburg, 2013, pp. 297-303.

[12] S. Chitroub, N. Zidouni, H. Aouadia, D. Blaid and R. Laouar, SIM Card of the Next-Generation Wireless Networks: Security, Potential Vulnerabilities and Solutions, 2018 2nd European Conference on Electrical Engineering and Computer Science (EECS), Bern, Switzerland, 2018, pp. 502-509.

[13] M. Meyer, E. A. Quaglia and B. Smyth, Attacks against GSMA’s M2M Re- mote Provisioning, Financial Cryptography and Data Security, 2018, pp. 243- 252.

https://www.blackhat.com/docs/eu-17/materials/eu-17-Meyer-Attacks-Against-GSMAS-M2M-Remote-Provisioning-wp.pdf

[14] Ernst & Young Mobile network operator on-demand subscription management study, 2015.

https://www.ey.com/Publication/vwLUAssets/EY-mobile-network-operator-on-demand-subscription-management/%24FILE/EY-mobile-network-operator-on-demand-subscription-management.pdf

[15] GSMA, RSP Technical Specification Version 2.2.1, 2018. https://www.gsma.com/newsroom/wp-content/uploads//SGP.22-v2.2.1-2.pdf

[16] GSMA, RSP Architecture Version 2.2, 2017. https://www.gsma.com/newsroom/wp-content/uploads//SGP.21_v2.2.pdf

[17] T. Chang, eSIMS: Everything You Need to Know, WhistleOut, September 2019. https://www.whistleout.com/CellPhones/Guides/esims

[18] Huawei, HUAWEI P40 Specifications. https://consumer.huawei.com/en/phones/p40/specs/

[19] Apple, Find wireless carriers that offer eSIM service. https://support.apple.com/en-us/HT209096

[20] T-Mobile T-Mobile Prepaid eSIM app.

https://www.t-mobile.com/support/plans-features/t-mobile-esim-app

[21] Android, Application Fundamentals. https://developer.android.com/guide/components/fundamentals

[22] Android, Introduction to Activities. https://developer.android.com/guide/components/activities/intro-activities

[23] Android, Understand the Activity Lifecycle. https://developer.android.com/guide/components/activities/activity-lifecycle

[24] Android, Content providers. https://developer.android.com/guide/topics/providers/content-providers

[25] Android, Intents and Intent Filters. https://developer.android.com/guide/components/intents-filters

[26] Android, App Manifest Overview. https://developer.android.com/guide/topics/manifest/manifest-intro

[27] Android, Secure an Android Device.

https://source.android.com/security

[28] Android, Application Sandbox.

https://source.android.com/security/app-sandbox

[29] Android, Permissions overview. https://developer.android.com/guide/topics/permissions/overview

[30] Android, Implementing eSIM. https://source.android.com/devices/tech/connect/esim-overview

[31] Android, UICC Carrier Privileges. https://source.android.com/devices/tech/config/uicc

[32] Naveen, iOS Architecture, IntelliPaat, December 2019.

[33] Apple, Xcode.

[34] Apple, UIKit.

[36] Apple, Managing Your App’s Life Cycle.

[38] Apple, Entitlements.

[39] Apple, About Entitlements.

[41] Apple, CTCellularPlanProvisioning.

[43] Apple, CTCellularPlanProvisioningRequest.

11
Начать дискуссию