Así que tengo esta aplicación llamada Dripper que publiqué hace aproximadamente un mes y luego una actualización hace un par de días. La actualización agregó notificaciones push y algunos pequeños ajustes. Lo probé con sandbox-apn usando el perfil de desarrollo y todo funcionó muy bien. Luego cambié las cosas a la apn de producción y lo empujé a vuelo de prueba, nuevamente las cosas funcionaron perfectamente. Una vez que puse la actualización en el mercado y la ejecuté, me di cuenta de que no recibía ningún registro push nuevo en el servidor. Miré los registros de la consola para el dispositivo y encontré esto:
4 de diciembre 17:55:15 Ina-touch-it coffco [1210]: Registro para notificaciones remotas
4 de diciembre 17:55:15 Ina-touch-it SpringBoard [52]: No se encontró una cadena de autorización válida 'aps-environment' para la aplicación 'Gotero': (nulo). No se enviarán notificaciones.
4 de diciembre 17:55:15 Ina-touch-it coffco [1210]<Warning>: Failed to register with error : Error Domain=NSCocoaErrorDomain Code=3000 "no valid 'aps-environment' entitlement string found for application" UserInfo=0x174270900 {NSLocalizedDescription=no valid 'aps-environment' entitlement string found for application}
Estoy un poco confundido porque pensé que la producción-apn funcionaría igual entre las compilaciones ad-hoc y de la tienda de aplicaciones.
Aquí está la identificación de mi aplicación y sus derechos -> http://i.stack.imgur.com/uf4pB.png
Aquí está el perfil de aprovisionamiento para la tienda de aplicaciones -> http://i.stack.imgur.com/AYOV5.png
Respuestas:
Soluciono este problema habilitando la función de notificación automática.
Haga clic en .xcodeproj -> Capacidades -> Habilitar notificación push
fuente
Solucioné este problema así:
¡E intenta de nuevo!
Fuente:
fuente
Debe tener que habilitar Target—> capacidades—> notificación de inserción. Me he enfrentado a este problema con Xcode 8.
fuente
Estos problemas se deben a que el perfil de aprovisionamiento actual no contiene información APNS, ya que el perfil de aprovisionamiento se crea ANTES de crear el certificado APNS.
Por lo tanto, para resolver el problema, cree un nuevo perfil de aprovisionamiento y seleccione el perfil de aprovisionamiento en Xcode. Entonces has terminado.
Además, cuando agrega push, creo que también ha actualizado los certificados en el llavero.
fuente
Con respecto a Xcode 9, algunas de las respuestas están desactualizadas o incompletas para resolver este problema específico.
Estos fueron los pasos a seguir para mí:
1. Cree el perfil de aprovisionamiento
( FCM no es un requisito previo para las notificaciones push, pero sus guías son increíblemente claras, aquí está el enlace )
Para probar su aplicación mientras está en desarrollo, necesita un perfil de aprovisionamiento para el desarrollo a fin de autorizar a sus dispositivos a ejecutar una aplicación que aún no está publicada en la App Store.
2. Activar las funciones de notificaciones push
fuente
Tuve el mismo problema al usar iOS 8.0 y versiones superiores; No obtuve el token del dispositivo y estaba dando un error: "no se encontró una cadena de autorización válida 'aps-environment' para la aplicación"
Lo arreglé siguiendo los pasos a continuación
y ahora ejecuta el proyecto definitivamente funcionará.
fuente
Por alguna razón, la solución de Wei no me estaba funcionando. Al hacer clic en Arreglar derechos, Xcode generó dos archivos y aún no funcionaba, de hecho, los archivos de derechos generados estaban vacíos.
Esto se debió (aparentemente) a que el PRODUCT_NAME del proyecto era bastante largo e incluía espacios y letras "ä" y "ö". Después de cambiarlo a una versión corta con letras solo en inglés, la solución de Wei funcionó correctamente.
fuente
Me tomó un tiempo descubrir qué causaba un error de autorización de entorno aps no válido. El problema era que había dos archivos .entitlements en el proyecto XCode. Uno es platform / ios //. Autorizaciones y otro es platform / ios // Resources / .entitlements y las autorizaciones apropiadas están presentes en el primer archivo solo mientras XCode está configurado para usar el último. Actualicé el último archivo manualmente y todo comenzó a funcionar. Otra opción para solucionar esto es cambiar qué .entitlements usa XCode. Esto se puede hacer en Build Settings -> Signing -> Code Signing Entitlements config param.
No estoy seguro de por qué hay dos archivos .entitlements en XCode. ¿Podría ser que el complemento push de cordova creó el segundo (estoy desarrollando una aplicación móvil híbrida de cordova)? ¿Y cuál es la ubicación correcta para el archivo .entitlements?
fuente
Experimenté este problema y lo resolví con la primera solución.
Sin embargo, fallé una vez porque había iniciado sesión en dos cuentas de Apple. Después de quitar uno, todo empezó a funcionar.
fuente