swift - Hoy la extensión no pudo heredar los permisos de CoreMedia de
ios-app-extension ios8-today-widget (15)
Estoy tratando de agregar una extensión Today en Swift a mi aplicación Objective-C.
Sigo recibiendo este mensaje en mi registro de depurador: no
Failed to inherit CoreMedia permissions from 3005: (null)
.
El número ex.
3005 es diferente cada vez.
Estoy leyendo desde NSUserDefaults desde el widget pero estoy leyendo / escribiendo en la aplicación misma.
El único código en mi TodayViewController es el siguiente:
override func viewDidLoad() {
super.viewDidLoad()
let formatter = NSNumberFormatter()
formatter.numberStyle = .CurrencyStyle
totalLabel.text = formatter.stringFromNumber(0)
coinsLabel.text = formatter.stringFromNumber(0)
formatter.maximumFractionDigits = 0
billsLabel.text = formatter.stringFromNumber(0)
}
func widgetMarginInsetsForProposedMarginInsets(defaultMarginInsets: UIEdgeInsets) -> UIEdgeInsets {
return UIEdgeInsetsMake(8.0, 16.0, 8.0, 16.0)
}
func widgetPerformUpdateWithCompletionHandler(completionHandler: ((NCUpdateResult) -> Void)!) {
// Perform any setup necessary in order to update the view.
// If an error is encountered, use NCUpdateResult.Failed
// If there''s no update required, use NCUpdateResult.NoData
// If there''s an update, use NCUpdateResult.NewData
completionHandler(NCUpdateResult.NewData)
}
Aquí está mi experiencia con este mensaje de error. Tenía un guión gráfico con 4 ViewControllers en él. Hice un extracto refactorizado en todos ellos, así que ahora tengo 5 guiones gráficos, 4 de los cuales tenían controladores de vista y el original, "principal", uno solo tenía referencias de guiones gráficos.
Bueno ... eso es malo. No hagas eso.
Todo funcionó cuando mantuve el guión gráfico inicial en el archivo del guión gráfico original, por lo que no refactoricé solo uno de ellos.
Asegúrese de que el parámetro de
[[NSUserDefaults alloc] initWithSuiteName:APP_GROUP]
coincida con el nombre del grupo que definió.
Compruebe en el mainstoryboard de la extensión de hoy, viewcontroller con la opción "Is Initial View Controller" fue habilitada.
Creo que la advertencia "Error al heredar los permisos de CoreMedia de NNNN" está relacionada con los Grupos de aplicaciones cuando está creando una Extensión de aplicación. Tanto la aplicación que contiene como la extensión de la aplicación deben tener activadas las capacidades de Grupos de aplicaciones y usar el mismo ID de contenedor del grupo de aplicaciones (ejemplo: group.com.yourdomain.yourappname). Los grupos de aplicaciones se utilizan para permitir el acceso de múltiples aplicaciones a contenedores compartidos y permitir una comunicación adicional entre procesos entre aplicaciones.
Descubrí que si está utilizando un StoryBoard deberá ingresar a info.plist y eliminar la propiedad
NSExtensionPrincipalClass
.
Después de eso, la extensión comenzó a cargarse bien.
Después de hacer la mayoría de las cosas que se mencionaron en las respuestas a esta pregunta y aún obtener errores con el widget de hoy, encontré algo que funcionó para mí.
Abra la configuración de compilación de destino de su widget y busque Bibliotecas estándar Swift siempre incrustadas . Seleccione Sí
Espero que esto funcione para ti si nada más no ayudó
Es el problema del simulador, prueba algunos dispositivos reales.
Esto me golpeó porque tenía un método
init(nibName:bundle:coder:)
personalizado consolidado
init(nibName:bundle:coder:)
en mi controlador de vista, y había implementado
initWithCoder
esta manera para satisfacer a Swift:
required init?(coder aDecoder: NSCoder) {
self.init(nibName: nil, bundle: nil, coder: aDecoder)
}
super.init(coder:)
el problema haciendo que la implementación llame a
super.init(coder:)
lugar:
required init?(coder aDecoder: NSCoder) {
// [...setting some variables...]
super.init(coder: aDecoder)
}
Me encontré con este problema también. El problema para mí fue que estaba ejecutando dos programas a la vez en mi simulador. Después de que detuve a uno de ellos, el mensaje de error desapareció. Espero eso ayude.
Resolví mi caso: Active Grupos de aplicaciones para la aplicación de contenedor y extensión.
Y elimine todos los controles ocultos de UIKit como
UILabel, UIView, ...
También me encontré con ese problema, y la única solución que resolví fue agregar restricciones verticales y horizontales de cada objeto en el guión gráfico.
Tuve el mismo problema al ejecutar mi extensión. En mi caso, se resolvió ejecutando la extensión en el dispositivo real.
Tuve la misma salida de registro.
La limpieza
(Cmd + Shift + K)
resolvió por mí.