Android 14 се подготвя да направи изживяването още по-добро за потребителите на магазини за приложения на трети страни благодарение на новите API.
Google Play е най-популярният магазин за приложения сред потребителите на Android, но някои може да твърдят, че не е спечелил честно първото си място. Google е подложена на щателна проверка от регулаторни агенции и законодателни органи по целия свят поради как поддържа господството си в магазина за приложения и няма признаци, че този натиск ще отслабне по всяко време скоро. Може би затова Google поема инициативата да въведе нови функции в Android 14 които подобряват изживяването за потребителите на магазини за приложения на трети страни.
Повечето магазини за приложения на трети страни за Android не са наистина конкурентни на Google Play и това не е само поради техния избор на приложения. Докато магазините за предварително инсталирани приложения на първи страни винаги са имали възможността да правят автоматични актуализации на приложения, магазините за приложения на трети страни едва наскоро успяха да правят актуализации без надзор. Google добави
API в Android 12 което позволява на магазините за приложения на трети страни да актуализират приложения, без да е необходимо действие от страна на потребителя, намалявайки триенето на с помощта на магазин за приложения на трета страна.Това обаче все пак остави магазините за приложения на трети страни в голямо неизгодно положение, когато става въпрос за функционалност, тъй като те не можеха лесно да знаят кога би било безопасно действително да направите автоматична актуализация. Това е, което Google се опитва да реши в Android 14 с нов API, който позволява на магазините за приложения на трети страни да извършват „нежни актуализации“.
Нежни актуализации
Android 14 добави нов API, който позволява на магазините за приложения на трети страни да проверяват дали са изпълнени определени условия, преди да пристъпят към автоматично актуализиране на приложение. The PackageInstaller. API на InstallConstraints „може да се използва от магазините за приложения за доставяне на автоматични актуализации, без да се нарушава потребителското изживяване (наричано нежна актуализация) - например магазин за приложения може да задържи актуализациите, когато установи [sic], че приложението за актуализиране взаимодейства с потребител."
Този нов API позволява на магазините за приложения на трети страни да проверяват дали приложение, което се подготвят да актуализират, има активна услуга на преден план (isRequireAppNotForeground), взаимодейства с потребителя по някакъв начин (isRequireAppNotInteracting) или е на екрана (isRequireAppNotTopVisible). Магазините за приложения на трети страни също могат да проверят дали устройството е в режим на дрямка (isRequireDeviceIdle) или в телефонен разговор (isRequireNotInCall).
Въпреки че API позволява да се определят какви условия да се проверяват, документацията препоръчва използването на предварително зададените ограничения, тъй като „системата знае най-добре как да го направя. Това е логично, като се има предвид, че Google разполага с достатъчно време, за да разработи как най-добре да се справя с автоматичните актуализации в собствения си магазин за приложения. Използването на предварителната настройка също е от полза, както е отбелязано в документацията, тъй като точността и ефективността на нежните актуализации може да се подобри в бъдещи версии, ако Google добави повече ограничения към API.
Всяко условие, което PackageInstaller. API на InstallConstaints позволява проверката вече може да бъде проверена чрез съществуващи API, но системата да обработва тези проверки е много по-лесно и по-малко натрапчиво. Например магазини за приложения на трети страни, които искат да проверят дали приложение, което актуализират, се използва активно от потребителя в момента ще трябва да използва API като UsageStats или AccessibilityService, и двете чувствителни разрешения. Ако обаче използват този нов Android 14 API, няма да имат нужда от тези разрешения, за да си вършат работата.
Актуализиране на собствеността
Активирането на „деликатни актуализации“ не е единственото подобрение в Android 14 за магазини за приложения на трети страни. Има и нов механизъм за „актуализиране на собствеността“, който позволява на магазините за приложения на трети страни да станат изключителен източник на бъдещи автоматични актуализации на приложение, което са инсталирали за първи път. Това ще означава, че ако използвате магазин за приложения на трета страна, тъй като приложенията, достъпни през него, са проверени от общност, например, тогава непроверена актуализация, която е достъпна през други магазини за приложения, няма да бъде автоматично насочена към вашето устройство.
В момента, когато инсталирате приложение чрез магазин за приложения на трета страна, нищо не пречи на магазин за приложения на първа страна да актуализира това приложение. Докато API за неконтролирани актуализации на Android 12 позволява само на магазините за приложения на трети страни безшумно да актуализират приложенията, които са инсталирали първо, магазините за приложения на първи страни не са засегнати, тъй като притежават привилегированите INSTALL_PACKAGES разрешение.
Магазините за приложения на трети страни на Android 14 могат да използват новото setRequestUpdateOwnership метод в PackageInstaller. Параметри на сесията, обаче, за да кажат на системата, че претендират за собственост върху актуализацията на приложението, което ще инсталират. След като налагането на собственост върху актуализацията е активирано за дадено приложение, всички други магазини за приложения – дори тези с разрешение INSTALL_PACKAGES – се нуждаят от действие от страна на потребителя, за да актуализира приложението. Актуализацията на собствеността може да бъде активирана само по време на първоначалната инсталация на приложение, така че друг магазин за приложения няма да може да поема актуализации, освен ако въпросното приложение не бъде деинсталирано и преинсталирано от него магазин. Магазините за приложения могат да проверят дали собствеността върху актуализацията е активирана за приложение и ако е така, кое приложение е собственикът на актуализацията, чрез новия InstallSourceInfo#getUpdateOwnerPackageName() API.
Магазините за приложения на трети страни трябва да държат новото ENFORCE_UPDATE_OWNERSHIP разрешение за използване на API за прилагане на собственост върху актуализацията, но тъй като това разрешение има ниво на защита „нормално“, то ще бъде предоставено от системата по време на инсталиране. Остава обаче да видим дали Google Play ще одитира използването на това разрешение/API.
Инсталирайте предварително одобрение
Последният нов API за Android 14, който исках да подчертая, е PackageInstaller. Session#requestUserPreapproval. Този API позволява на магазините за приложения на трети страни да поискат одобрение от потребителя, преди да извършат инсталационна сесия. Предполагам, че това ще бъде полезно за магазини за приложения на трети страни, които умишлено искат да подканят потребителя, преди да актуализират приложение във фонов режим.
Например, представете си, че магазин за приложения, фокусиран върху сигурността, иска да уведоми своя потребител, когато актуализация на приложение добавя нови разрешения; вместо автоматично да актуализира това приложение, като по този начин автоматично предоставя това разрешение, ако нивото му на защита е „нормално“, магазинът за приложения може да подкани потребителя, преди да извърши актуализацията. Понастоящем, ако потребителят не присъства по време на автоматична актуализация, магазинът за приложения на трета страна ще трябва да следи инсталационната сесия и да ги подкани по-късно. Този API опростява този процес.
Android 14 ще въведе много нови функции и API, когато бъде пуснат за обществеността по-късно тази година. Въпреки че тези нови API не са скрити като някои от другите промени, които забелязахме, няма гаранция, че тези API ще бъдат достъпни за разработчиците в стабилната версия. Това е така, защото замразяването на API няма да се случи, докато Android 14 не достигне „стабилност на платформата“ с Beta 3 през юни 2023 г., а в момента сме само на DP1. Ще следим бъдещите издания на Android 14 DP и Beta, за да видим дали тези API ще останат или ще бъдат добавени нови API, свързани с магазините за приложения на трети страни.