Edit2:
Я перепробовал проблему до самого простейшего проекта, который я могу. Здесь настройка.
Я создал новое приложение с одним представлением и сразу добавил новую цель расширения действия. Я создал новый набор значков в файле .xcassets и добавил значок размера сетчатки iPad (я пробовал заполнять все значки, результаты совпадают).
Я обязательно включил Images.xcassets в фазу сборки Ресурсов копирования:
И тогда при запуске приложения в симуляторе все работает!
При компиляции на устройство появляется пустой значок:
Я подумал, что, возможно, это значит, что что-то не так с файлом PNG, который я использую, но все выглядит хорошо и здесь:
Кто-нибудь сталкивался с подобным?
Я уже встречал такие вопросы, как этот, ища ответ, и я думаю, что все делаю правильно, но я до сих пор не вижу иконки в действии лист.
Вот что я сделал:
-
Создано рабочее приложение-контейнер, в котором есть значок рабочего приложения, сохраненный в Images.xcassets. Затем я создал Action Extension Target в качестве члена одного и того же проекта.
-
Добавлены Images.xcassets из моего содержащего приложения в мою фазу сборки "Копирование ресурсов Bundle". Я знаю, что это сработало, потому что я могу загружать изображения из файла .xcassets, используя
UIImage.imageNamed(...)
в своем расширении. -
На вкладке "Общие" параметров моего расширения я указал "Иконки приложений" в "Иконки приложений и запуск изображений", чтобы указать ресурс Images.xcassets, называемый "AppIcon", тот же, что и для мое приложение.
-
Когда это не сработало, я сделал некоторое дальнейшее чтение и обнаружил, что для Action Extensions требуется изображение стиля "альфа-маска". Я создал другой элемент в моем файле .xcassets под названием "AppIcon-2" и заполнил его значками всех размеров приложения, за исключением PNG с 1-цветным + прозрачностью. Я указал "App Icons и Launch Images" моего расширения на этот новый "AppIcon-2"
И все же мой значок расширения действия - пустой белый квадрат. Есть ли какие-то шаги, которые мне не хватает? Есть ли какой-то очень специфический формат, в котором должна находиться альфа-маска? (Я просто сохраняю как .png в фотошопе). Есть ли какое-то конкретное имя, которое должен иметь ресурс в .xcassets?
Я также смущен некоторыми ответами (например, приведенными выше), которые, по-видимому, подразумевают, что проблема решена путем добавления .xcassets к фазе сборки. Являются ли большинство приложений совершенно непрозрачными? Как iOS генерирует альфа-маску из полностью непрозрачного значка приложения?
Изменить: я не совсем уверен, какие изменения изменили (я попытаюсь вывести его и обновить этот пост, если я это выясню), но теперь я вижу рабочий значок, основанный на альфа-маске "AppIcon-2" на симуляторе. Я даже не думал проверять симулятор, но это доказывает, что значок вытаскивается из правильного места. Что-то в этом устройстве обрабатывает изображение по-разному.