Значок расширения iOS 8 пуст на устройстве (работает в симуляторе)
Edit2:
Я перепробовал проблему до самого простейшего проекта, который я могу. Здесь настройка.
![Basic project setup]()
Я создал новое приложение с одним представлением и сразу добавил новую цель расширения действия. Я создал новый набор значков в файле .xcassets и добавил значок размера сетчатки iPad (я пробовал заполнять все значки, результаты совпадают).
![enter image description here]()
Я обязательно включил Images.xcassets в фазу сборки Ресурсов копирования:
![enter image description here]()
И тогда при запуске приложения в симуляторе все работает!
![enter image description here]()
При компиляции на устройство появляется пустой значок:
![enter image description here]()
Я подумал, что, возможно, это значит, что что-то не так с файлом PNG, который я использую, но все выглядит хорошо и здесь:
![enter image description here]()
Кто-нибудь сталкивался с подобным?
Я уже встречал такие вопросы, как этот, ища ответ, и я думаю, что все делаю правильно, но я до сих пор не вижу иконки в действии лист.
Вот что я сделал:
-
Создано рабочее приложение-контейнер, в котором есть значок рабочего приложения, сохраненный в 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" на симуляторе. Я даже не думал проверять симулятор, но это доказывает, что значок вытаскивается из правильного места. Что-то в этом устройстве обрабатывает изображение по-разному.
Ответы
Ответ 1
EDIT: Apple Исправлена ошибка в iOS8.1!
------------ OLD ----------------------
Думаю, в этот момент ответ должен представить отчет об ошибке Apple в
https://radar.apple.com
Если вы можете представить свой пример с примерами barebones, это поможет нашему делу!
Вот тот, который я представил:
Сводка: значок расширения действия хорошо показывает сообщения, а UIActivityViewController, но когда он появляется в приложении "Фотографии", значок пуст.
Я думаю, что это ошибка с Apple Photos App
Действия по воспроизведению: выполните следующие инструкции, но из приложения "Фотографии"
http://www.photoinvestigator.co/blog/how-to-use-ios8-action-extensions/
Ожидаемые результаты: ожидайте появления значка расширения метаданных правильно, как в http://www.photoinvestigator.co/blog/how-to-use-ios8-action-extensions/
Фактические результаты: значок чистый белый
Версия: iOS 8.0.2, iOS 8.0.0
Примечания: значок расширения действия iOS 8 пуст на устройстве (работает в симуляторе)
Вот пример использования моего расширения из приложения "Сообщения", значок отображается правильно: http://www.photoinvestigator.co/blog/how-to-use-ios8-action-extensions/Но делая эти шаги из приложения Apple photos, результат в значке не показывая правильно.
Конфигурация: любое устройство iOS под управлением iOS8. iPad 3-го поколения, iPhone 5, iPhone 5c, iPhone 6 Plus
Приложения:
Изменить:
Они закрыли его как дубликат ID: ID билета: 17208813
Прогресс!
Ответ 2
У меня была та же проблема. То, что сработало для меня, заключалось в том, чтобы следовать за ответом Тома Харрингтона, но затем также убедитесь, что "Target Membership" (правая сторона) значков расширений включает в себя как цель расширения, так и цель приложения. (В разделе "Строки сборки" он также должен быть указан в разделе "Ресурсы копирования" для обеих целей.)
Также обратите внимание, что ваши значки расширения должны иметь полностью прозрачный фон, а не сплошной белый. Любой белый или любой другой цвет, кроме прозрачного, будет отображаться как сплошной темно-серый.
Надеюсь, это поможет. К сожалению, я хотел добавить это как комментарий к ответу Тома, но Qaru не позволил мне из-за моей репутации.
Ответ 3
У нас та же проблема для нашего Yarnee App. Но я выяснил, что рядом с Camera Roll значки работают в других приложениях, например Dropbox, см. Этот снимок экрана:
![enter image description here]()
Он чувствует себя немного как ошибка...
Ответ 4
Вы не указали настройки расширения Info.plist
, поэтому я предполагаю, что вы не указали запись для файла значка. Вам нужно добавить ключ с именем NSExtensionServiceToolbarIconFile
в словаре NSExtensionAttributes
. Значение - это имя файла значка.
По крайней мере, как он должен работать. На практике кажется, что в настоящее время вам нужно иметь ключ CFBundleIconFile
верхнего уровня с именем значка. Предположительно, что используется только в том случае, если NSExtensionServiceToolbarIconFile
нет, но по крайней мере сейчас это необходимо. У меня есть и то, и другое, что, вероятно, не обязательно, но я бы предпочел оставить ключ, который задокументирован как правильный, если он начнет работать в какой-то момент.
Ответ 5
Чтобы заставить это работать с моим существующим каталогом активов, мне пришлось добавить следующие расширения:
![enter image description here]()
Имя набора в моем каталоге активов - "ExtIcon". Я попытался установить ключи CFBundleIcon и NSExtensionServiceToolbarIconFile в файле info.plist для расширения, но не повезло. Это действительно имеет смысл, так как это то же самое, что наборы значков связаны с контейнером, а не с помощью info.plist, но с помощью настроек сборки.
Ответ 6
Проблема, по-видимому, решена на iOS 8.1.
![iOS Action Extension Icon]()