qué número móvil moviles extensiones descargas ayudan aumentar aplicación aplicaciones ios swift nsbundle ios-app-extension

ios - número - extensiones de aplicaciones moviles



Obtenga el paquete principal de aplicaciones desde la extensión (1)

¿Es posible obtener el NSBundle la aplicación NSBundle dentro de una extensión de la aplicación? Me gustaría obtener el nombre para mostrar de la aplicación principal, no el nombre para mostrar de la extensión.


El método +mainBundle devuelve el paquete que contiene el "ejecutable de la aplicación actual", que es una subcarpeta de su aplicación cuando se llama desde una extensión.

Esta solución implica quitar dos niveles de directorio de la URL del paquete, cuando termina en "appex".

C objetivo

NSBundle *bundle = [NSBundle mainBundle]; if ([[bundle.bundleURL pathExtension] isEqualToString:@"appex"]) { // Peel off two directory levels - MY_APP.app/PlugIns/MY_APP_EXTENSION.appex bundle = [NSBundle bundleWithURL:[[bundle.bundleURL URLByDeletingLastPathComponent] URLByDeletingLastPathComponent]]; } NSString *appDisplayName = [bundle objectForInfoDictionaryKey:@"CFBundleDisplayName"];

Swift 2.2

var bundle = NSBundle.mainBundle() if bundle.bundleURL.pathExtension == "appex" { // Peel off two directory levels - MY_APP.app/PlugIns/MY_APP_EXTENSION.appex bundle = NSBundle(URL: bundle.bundleURL.URLByDeletingLastPathComponent!.URLByDeletingLastPathComponent!)! } let appDisplayName = bundle.objectForInfoDictionaryKey("CFBundleDisplayName")

Swift 3

var bundle = Bundle.main if bundle.bundleURL.pathExtension == "appex" { // Peel off two directory levels - MY_APP.app/PlugIns/MY_APP_EXTENSION.appex let url = bundle.bundleURL.deletingLastPathComponent().deletingLastPathComponent() if let otherBundle = Bundle(url: url) { bundle = otherBundle } } let appDisplayName = bundle.object(forInfoDictionaryKey: "CFBundleDisplayName")

Esto se romperá si alguna vez cambia la extensión o la estructura del directorio para una extensión de iOS.