Resumen de extensiones compartidas de iOS
Hablemos principalmente de algunos lugares que personalmente creo que son más importantes en todo el proceso.
Simplemente establezca la cantidad de estos atributos según sus propias necesidades. Hablemos de los problemas que puede encontrar
1.1. NSExtensionActivationSupportsText se usa principalmente para compartir texto, como notas. Algunos materiales en línea dicen que se debe establecer el tipo bool y otros dicen que se debe establecer el tipo de cadena y el valor. es SÍ. Aquí estoy. Ninguno de ellos funcionó. Finalmente, se configuró en un tipo de número con un valor de 1. Si encuentra el mismo problema que yo, puede intentarlo
1.2. Al compartir la aplicación en la App Store, hay dos UTI que son public.url y public.png, respectivamente. obtiene los tipos de elementos como NSURL y UIImage, el tipo de elemento para compartir capturas de pantalla también es UIImage
Obtenga de forma asincrónica los datos compartidos en viewDidLoad del VC personalizado y actualice la interfaz de usuario después de obtenerlos
Aquí es donde esta función tiene más dificultades. Debido a que el límite de memoria en el widget es de 120 M, se exceden todas las imágenes, videos, archivos, etc. Aquí hay algunas cosas a las que debe prestar atención.
La razón principal aquí es que cuando hay varias imágenes, la memoria puede ser demasiado grande. En este caso, mi solución aquí es copiar directamente la imagen al directorio compartido y luego saltar a la aplicación principal para enviar la imagen original.
También puede comprimir la imagen directamente y convertirla en una matriz base64str y luego escribirla en el directorio compartido. Sin embargo, la relación de compresión es difícil de controlar, el tamaño total después de la compresión y la imposibilidad de comprimir imágenes pequeñas, etc. Aquí se muestran algunos utilizados. Publique el método y el tiempo de procesamiento
3.1.1 Método de compresión de imágenes
3.1.2 Conversión de base64str. p> 3.1.3. Obtener información principal loadItemForTypeIdentifier Guardar la dirección de la imagen en el método para visualización de la interfaz de usuario y posterior escritura en el directorio compartido
3.1.4 Al confirmar el uso compartido, copie por lotes las imágenes al directorio compartido. O puede optar por comprimir y transferir La matriz base64str se escribe en el archivo
3.1.5 Después de llamar a la aplicación principal, primero obtenga la matriz de direcciones de la imagen y luego obtenga los datos compartidos a través de la imagen. dirección
Por un lado, es necesaria para que la interfaz de usuario muestre contenido, como la imagen de portada del video, la duración, el tamaño, el tamaño del archivo y el tipo.
Aquí hablamos sobre el método de longitud de NSData que no se puede usar para obtener el tamaño del archivo. Los archivos grandes causarán un desbordamiento de la memoria y deben obtenerse usando NSFileManager Aquí. Tenga en cuenta que la ruta obtenida a través de loadItemForTypeIdentifier primero debe decodificarse mediante stringByRemovingPercentEncoding y luego interceptar la ruta después de /var. , si obtiene la ruta del archivo como file3A2F2F2Fprivate2Fvar2Fmobile2FLibrary2FMobile20Documents2Fcom7Eapple7ECloudDocs2FE69CAAE591BDE5908DE69687E4BBB6E5A4B92Faaa.pdf
Entonces debe usar /var/mobile/Library/Mobile Documents/ s/Unnamed Folder/aaa.pdf para obtener el tamaño del archivo Los métodos principales se publican a continuación
3.2.1. Tamaño y formato del archivo
3.2.2 Obtenga la duración del video (aquí se debe usar la ruta completa)
.3.2.3. Obtener la imagen de portada del video (aquí también se debe usar la ruta completa)
3.2.4 Obtener el archivo El tipo corresponde a la imagen cortada y reemplazar el material de la imagen con. la imagen cortada proporcionada por su UI
Debido a que los archivos compartidos deben almacenarse en el directorio compartido del grupo***, cuando el archivo excede los 120 M, no se puede usar writeToURL, para evitar el desbordamiento de la memoria, use. copyItemAtPath de NSFileManager aquí. Al usar esta función, ambas rutas deben decodificarse y luego interceptarse después de /var.
Eso es todo lo que puedo pensar en este momento. Si tienes alguna pregunta o encuentras alguna deficiencia, por favor dejen comentarios y correcciones.