Значок расширения 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