Альтернативные значки не включены в сборку CFBundleAlternateIcons приложения для iPadOS.IOS

Программируем под IOS
Ответить
Anonymous
 Альтернативные значки не включены в сборку CFBundleAlternateIcons приложения для iPadOS.

Сообщение Anonymous »

Я разрабатываю приложение SwiftUI и реализовал переключение значков приложений. Я просматриваю список CFBundleAlternateIcons из ключа CFBundleIcons основного пакета во время выполнения, чтобы отобразить список параметров, которые пользователь может выбрать.
Все хорошо при работе на iOS (устройстве или симуляторе). Однако ни один из альтернативных значков не доступен при работе на iPadOS (устройстве или симуляторе).
Проект настроен с установленным флажком Включить все ресурсы значков приложений в целевом приложении, и все наборы значков находятся в основном каталоге ресурсов и настроены как Единый размер для iOS. Основываясь на некоторых старых сообщениях StackOverflow, я также пытался переключить их на Все размеры и явно добавлять изображения для каждого варианта, но безрезультатно.
На всякий случай я также переключил параметр Включить все ресурсы значков приложений на Да на уровне проекта, что не дало никакого эффекта. Целью проекта и приложения является целевая версия iOS 16.0.
При использовании xcrun --sdk iphoneos assetsutil --info в файле Assets.car сборки iPad отображаются соответствующие записи для файлов значков. Например:

Код: Выделить всё

{
"AssetType" : "MultiSized Image",
"Idiom" : "pad",
"Name" : "BlackIcon",
"NameIdentifier" : 25144,
"Scale" : 1,
"SHA1Digest" : "3ADDEA1FD56367BF89B8931F5D01A583F6D8C6D47EAAB8F4BB5E7FE61D7D9596",
"SizeOnDisk" : 236,
"Sizes" : [
"1024x1024 index:0 idiom:pad"
]
}
А проверка файла .car с помощью Asset Catalog Tinkerer показывает, что различные альтернативные изображения значков действительно присутствуют.
И тем не менее, CFBundleAlternateIcons равен нулю при доступе к основному пакету при запуске приложения на iPadOS.
Даже попытка просто напрямую установить один из альтернативных значков по имени приводит к ошибке

Код: Выделить всё

UserInfo={_LSLine=198, NSUnderlyingError=0x60000290e400 {Error
Domain=LSApplicationWorkspaceErrorDomain Code=-105 "iconName not found in
CFBundleAlternateIcons entry" UserInfo={_LSLine=186, NSLocalizedDescription=iconName
not found in CFBundleAlternateIcons entry, _LSFunction=-[LSAltIconManager
_setAlternateIconName:forIdentifier:withIconsDictionary:error:]}}, _LSFunction=-
[LSAltIconManager _setAlternateIconName:forIdentifier:withIconsDictionary:error:]} The
file doesn’t exist.
Я попытался воспроизвести это поведение в новом проекте, даже используя те же исходные файлы изображений, что и в наборах значков моего проекта, и все работало так, как и следовало ожидать на iPadOS. Так что мне остается задаться вопросом, есть ли что-то не так в моем файле проекта... возможно.
Я не знаю, что попробовать/проверить на этом этапе. Использование Xcode 14.3 (14E222b).

Подробнее здесь: https://stackoverflow.com/questions/761 ... rnateicons
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»