El icono de la extensión de acción iOS 8 está en blanco en el dispositivo(funciona en el simulador)
iphone ios8 (6)
EDIT: Apple solucionó este problema en iOS8.1!
------------ ANTIGUO ----------------------
Creo que en este punto, la respuesta es enviar un informe de error a Apple en
Si puede enviar su proyecto de ejemplo de barebones, ¡eso ayudará a nuestra causa!
Aquí está el que he enviado:
Resumen: el ícono de la extensión de acción se muestra bien en Mensajes, y en el UIActivityViewController, pero cuando aparece en la aplicación Fotos, el ícono está en blanco.
Creo que esto es un error con la aplicación de fotos de Apple.
Pasos para reproducir: siga estas instrucciones pero desde la aplicación Fotos
http://www.photoinvestigator.co/blog/how-to-use-ios8-action-extensions/
Resultados esperados: espere que el icono de la extensión de metadatos aparezca correctamente como en http://www.photoinvestigator.co/blog/how-to-use-ios8-action-extensions/
Resultados reales: El icono es blanco puro.
Versión: iOS 8.0.2, iOS 8.0.0
Notas: el icono de la extensión de acción iOS 8 está en blanco en el dispositivo (funciona en el simulador)
Este es un ejemplo del uso de mi extensión desde la aplicación Messages, con el ícono que se muestra correctamente: http://www.photoinvestigator.co/blog/how-to-use-ios8-action-extensions/ Pero siguiendo estos pasos desde la aplicación de fotos de Apple , hace que el icono no se muestre correctamente.
Configuración: Cualquier dispositivo iOS que ejecute iOS8. iPad 3ra generación, iPhone 5, iPhone 5c, iPhone 6 Plus
Archivos adjuntos:
Edit: Lo cerraron como un duplicado de ID: Ticket ID: 17208813 ¡Progreso!
Edit2:
He destilado el problema al proyecto más simple que puedo. Aquí está la configuración.
Creé una nueva aplicación de vista única e inmediatamente agregué un nuevo objetivo de extensión de Acción. Creé un nuevo conjunto de iconos en el archivo .xcassets y agregué un icono del tamaño de una retina de iPad (he intentado rellenar todos los iconos, los resultados son los mismos).
Me aseguré de incluir Images.xcassets en la fase de compilación de Copy Bundle Resources:
Y luego, al ejecutar la aplicación en el simulador, ¡todo funciona!
Sin embargo, la compilación al dispositivo da como resultado un icono en blanco:
Pensé que tal vez eso significa que algo está mal con el archivo PNG que estoy usando, pero todo se ve bien aquí también:
¿Alguien ha encontrado similar?
Ya he visitado preguntas como this busca de una respuesta y creo que estoy haciendo todo bien, pero todavía no veo un icono en la hoja de acción.
Esto es lo que he hecho:
Creó una aplicación de contenedor de trabajo que tiene un icono de aplicación de trabajo almacenado en Images.xcassets. Luego creé un objetivo de extensión de acción como miembro del mismo proyecto.
Se agregaron Images.xcassets de mi aplicación contenedora a la fase de compilación "Copiar los recursos del paquete" de mi extensión. Sé que esto funcionó porque puedo cargar imágenes desde el archivo
UIImage.imageNamed(...)
usandoUIImage.imageNamed(...)
en mi extensión.En la pestaña General de la configuración de mi extensión, señalé el "Origen de los iconos de la aplicación" en "Iconos de la aplicación e Imágenes de inicio" para señalar el recurso de Images.xcassets llamado "AppIcon", el mismo que se usa para mi aplicación contenedora.
Cuando eso no funcionó, hice más lecturas y descubrí que las Extensiones de acción requieren una imagen de estilo de "máscara alfa". Creé otro elemento en mi archivo .xcassets llamado "AppIcon-2" y lo llené con todos los tamaños de íconos de aplicaciones, excepto como un PNG de 1 color + transparencia. Señalé "Iconos de aplicaciones e Imágenes de inicio" de mi extensión a este nuevo "AppIcon-2"
Aún el icono de mi extensión de acción es un cuadrado blanco en blanco. ¿Hay algún paso que me falte? ¿Hay algún formato muy específico en el que tenga que estar la máscara alfa? (Solo estoy guardando como .png en photoshop). ¿Hay algún nombre muy específico que el recurso debe tener en .xcassets?
También estoy confundido por algunas de las respuestas (como la que está vinculada anteriormente) que parecen implicar que el problema se resuelve agregando .xcassets a la fase de compilación. ¿No es la mayoría del icono de la aplicación completamente opaco? ¿Cómo genera iOS una máscara alfa desde un icono de aplicación completamente opaco?
Edit: no estoy completamente seguro de qué cambio hizo la diferencia (intentaré deducirlo y actualizar esta publicación si lo descubro) pero ahora veo un icono en funcionamiento basado en la máscara alfa de "AppIcon-2 "en el simulador. Ni siquiera había pensado en comprobar el simulador, pero prueba que el ícono se está extrayendo del lugar correcto. Algo sobre el dispositivo está procesando la imagen de manera diferente.
El problema parece estar resuelto en iOS 8.1 .
No mencionó la configuración de la extensión Info.plist
, por lo que asumo que no incluyó una entrada para el archivo de icono. Deberá agregar una clave denominada NSExtensionServiceToolbarIconFile
en el diccionario NSExtensionAttributes
. El valor es el nombre del archivo de icono.
Al menos así se supone que funciona. En la práctica, parece que actualmente necesita tener una clave CFBundleIconFile
nivel CFBundleIconFile
con el nombre del icono. Supuestamente, eso solo se usa si NSExtensionServiceToolbarIconFile
no está presente, pero al menos por ahora es necesario. Tengo ambos, lo que probablemente no sea necesario, pero preferiría dejar la clave que está documentada como correcta en caso de que empiece a funcionar en algún momento.
Para que esto funcione con mi Catálogo de Activos existente, tuve que agregar lo siguiente a la Configuración de Compilación de la extensión:
El nombre del conjunto en mi Catálogo de Activos es "ExtIcon". Intenté configurar las claves CFBundleIcon y NSExtensionServiceToolbarIconFile en la lista de información para la extensión, pero no tuve suerte. En realidad, esto parece tener sentido, ya que es de la misma manera que los conjuntos de iconos están vinculados a la aplicación del contenedor, no a través de info.plist, sino a través de la Configuración de compilación.
Tenemos el mismo problema para nuestra aplicación Yarnee . Pero me di cuenta de que junto a Camera Roll, los iconos funcionan en otras aplicaciones, por ejemplo, Dropbox, vea esta captura de pantalla:
Se siente un poco como un error ...
Yo tuve el mismo problema. Lo que funcionó para mí fue seguir la respuesta de Tom Harrington, pero también asegurarse de que la "Membresía de destino" (panel lateral derecho) de los íconos de extensión incluya tanto el objetivo de extensión Y el objetivo de la aplicación. (En Fases de compilación, también debe aparecer en Copiar recursos de paquete para ambos destinos).
Además, tenga en cuenta que los íconos de sus extensiones deben tener un fondo completamente transparente, NO blanco sólido. Cualquier blanco, o cualquier otro color que no sea transparente, se representará como gris oscuro sólido.
Espero que esto ayude. Lo siento, quería agregar esto como un comentario a la respuesta de Tom, pero no me dejó por mi reputación.