tutorial react que notification apple ios notifications push-notification apple-push-notifications

react - push notifications ios swift 4



¿Cómo arreglar "cadena de autorización ''no válida'' aps-environment ''encontrada para la aplicación" en Xcode 4.3? (23)

(Xcode 5) Bueno, después de pasar una hora resolví mi problema. Incluso si vuelve a generar el archivo de aprovisionamiento en Xcode 5, debe actualizar manualmente su cuenta. Solo cambié el archivo de aprovisionamiento en la pestaña Organizador que no funcionaba, Xcode guardó la compilación con el archivo de aprovisionamiento anterior.

Entonces ve a

Xcode> Preferencias> Cuentas> Ver detalles (Seleccione su cuenta)

A continuación, actualice sus archivos de aprovisionamiento.

He estado tratando muy arduamente de crear una aplicación de iOS simple y simple que pueda recibir notificaciones automáticas. Mi única razón para hacer esto es establecer un procedimiento para que lo usen otros miembros del equipo, y no he podido encontrar una versión actualizada de estas instrucciones en otro lugar de la web. Nuestra tienda es bastante nueva para el desarrollo de iOS, personalmente no tengo experiencia con el desarrollo de iOS y Xcode. He tropezado con decenas de tutoriales, artículos y publicaciones problemáticas de Apple y otros lugares, y siento que podría estar cerca de allí ...

Aquí es donde tengo que hacerlo (tenga en cuenta que estoy usando Xcode 4.3 e intento inicialmente implementar solo en iOS 5.1, y me doy cuenta de que algunas cosas pueden haber cambiado recientemente frente a las versiones anteriores de Xcode, pero de nuevo soy nuevo para todos esto - y encontrándolo completamente confuso y enrevesado):

1) Tengo un perfil de aprovisionamiento en mi iPhone que tiene habilitada la función de inserción.

2) En mi proyecto Xcode de prueba, seleccioné ese perfil de aprovisionamiento como identidad de firma (en Configuración de compilación> Firma de código)

3) Tengo mi identificador de paquete en Resumen e Información> Propiedades de destino de iOS personalizadas configuradas correctamente * (¿Pienso?)

4) Tengo que llamar a registerForRemoteNotificationTypes en mi delegado didFinishLaunchingWithOptions

5) Tengo didRegisterForRemoteNotificationsWithDeviceToken y didFailToRegisterForRemoteNotificationsWithError en mi delegado, configurado para registrar el token del dispositivo o error respectivamente

6) Tengo derechos de habilitación marcados en Resumen.

7) Justo debajo, el archivo de derechos seleccionado es Tinker6 (el nombre de mi proyecto de prueba), que se generó automáticamente cuando marqué Activar derechos

8) En el archivo Tinker6.entitlements obtuve lo siguiente (que he recopilado es correcto en función de varias publicaciones diferentes en toda la web, pero del que no puedo encontrar nada definitivo de Apple):

Actualizado

9) Además, he intentado todo sin un archivo de derechos, y obtengo esencialmente el mismo resultado.

10) Los contenidos de mi archivo de aprovisionamiento móvil incluyen los derechos de forma adecuada (he codificado el número y el dominio, pero estructuralmente es el mismo):

<key>application-identifier</key> <string>12355456A7.com.whatever.tinker</string> <key>aps-environment</key> <string>development</string> <key>get-task-allow</key> <true/> <key>keychain-access-groups</key> <array> <string>12355456A7.*</string> </array>

/ fin de la actualización

Cuando intento ejecutar esto en mi dispositivo, aparece el siguiente error en la salida de Xcode:

2012-06-11 12:45:23.762 Tinker6[13332:707] Failed to get token, error: Error Domain=NSCocoaErrorDomain Code=3000 "no valid ''aps-environment'' entitlement string found for application" UserInfo=0x24a3b0 {NSLocalizedDescription=no valid ''aps-environment'' entitlement string found for application}

He intentado configurar get-task-allow para NO, aps-environment para producción, las cuatro combinaciones posibles, lo mismo.

¿Cómo puedo pasar esto? ¿Dónde está la documentación definitiva sobre esto?

- Más antecedentes a continuación -

* En cuanto a la identificación del paquete, todavía no estoy seguro de cómo se debe establecer esto en relación con Id. De aplicación y Id. De perfil en el perfil de Aprovisionamiento. En el portal de aprovisionamiento en App Ids tengo esto (una vez más, codificado el número y el dominio):

Y el identificador del paquete de dos lugares está configurado Tengo esto:

No estoy del todo seguro de que estos sean correctos o de si uno o ambos deben establecerse en 12355456A7.com.whatever.tinker, aunque los he probado antes en el proceso sin éxito ...

Nota: me doy cuenta de que hay muchas publicaciones con títulos similares, sin embargo, todas parecen estar desactualizadas en función de los nombres de los archivos y demás, y el hecho de que ninguna de las soluciones parece ser útil. Espero que el mayor nivel de detalle que he otorgado justifique una respuesta de calidad. Probablemente asignaré una recompensa tan pronto como sea posible y si le das una respuesta de alta calidad que conduzca a una solución, te recompensaré con la recompensa y promoveré tu respuesta a través de Twitter y mi blog. Especialmente si publicas en crosspost un muy buen "aquí están los 500 pasos exactos que necesitas para obtener una aplicación simple de notificación de inserción que funcione incluyendo el aprovisionamiento y cualquier otra cosa" en tu blog o lo que sea.


Antes de eliminar y regenerar los AppID / Perfiles, asegúrese de que su Biblioteca y Dispositivo tengan los mismos (y correctos) perfiles instalados.

Empecé a ver este error después de migrar a una computadora nueva. Push ha estado funcionando correctamente antes de la migración.

El problema era (duh) que no había importado los perfiles a la biblioteca Xcode en la nueva máquina (en Organizador / Dispositivos en Biblioteca-> Perfiles de Aprovisionamiento).

La parte confusa fue que el DISPOSITIVO ya tenía los perfiles correctos y aparecieron como se esperaba en la configuración de compilación, por lo que todo parecía correcto allí, pero la BIBLIOTECA XCode no los tenía, ¿entonces fue firmando la aplicación con ...? ?


Debe asegurarse de tener en sus perfiles de aprovisionamiento ( https://developer.apple.com/account/ios/profile/ ) un perfil de Distribución de iOS.

Cuando cargue desde xCode a App Store, asegúrese de tener el entorno-AP en las autorizaciones. De lo contrario, descárguelos desde Ver cuentas -> Ver detalles -> Descargar todo.


Elimine el perfil de aprovisionamiento anterior de XCode en Organizer.

A continuación, genere un nuevo perfil de aprovisionamiento para el mismo ID de paquete en el portal de aprovisionamiento de iOS (después de haber habilitado el envío).

Importe el nuevo perfil de aprovisionamiento en XCode, configúrelo en la configuración de compilación de su aplicación.

Construye, ejecuta, funciona.

Solo lo hice.

Me llevó 10 minutos desde el error hasta el éxito.


En primer lugar, no necesita el archivo de derechos, a menos que agregue pares personalizados de clave / valor que no existan en el perfil de aprovisionamiento. Cuando se crea su aplicación, cualquier derecho del perfil de aprovisionamiento se copiará en la aplicación.

Dado que todavía se ve un mensaje de error sobre los derechos perdidos, solo puedo suponer que las opciones de firma de código no son correctas en la configuración de compilación.

Debe asegurarse de que se haya seleccionado el perfil correcto para la configuración de "Depuración" y, para estar seguro, de haber seleccionado el perfil correcto para "Debug" y nodo hijo con la etiqueta "Any iOS SDK":

Aunque esta captura de pantalla muestra el perfil "Desarrollador automático" seleccionado, elija el perfil de aprovisionamiento exacto que desee del menú desplegable, solo para realizar pruebas. Podría ser que Xcode elija automáticamente un perfil diferente al que usted desea.

También asegúrese de hacer una compilación limpia, eliminar completamente la aplicación de su dispositivo, etc. Esto es solo para asegurarse de que no tenga alguna pelusa vieja.


Este error puede ocurrir cuando su certificado ha expirado.

La solución es renovar el certificado y firmar la aplicación con él.


Esto fue lo que me solucionó. (Ya había intentado activar / desactivar las capacidades, recrear el perfil de aprovisionamiento, etc.).

En la pestaña Configuración de compilación , en Derechos de firma de código , mi archivo .entitlements no era un enlace para todas las secciones. Una vez que lo agregué a la sección Cualquier SDK , se resolvió el error.


He enfrentado este problema en Xcode 8. Debe tener que habilitar Target-> capabilities-> push notification. Verifica la captura de pantalla.


Intenté todas las respuestas enumeradas aquí pero nadie resolvió mi problema. En mi caso, este error se debe a mi tonto error en la creación de Appid. Utilicé la ID de la aplicación Wildcard en lugar de utilizar la ID de aplicación explícita causó el problema

Si desea que una aplicación reciba notificaciones remotas (notificación push), debe utilizar una ID de aplicación explícita , como com.tutsplus.push , en lugar de com.tutsplus. *

Por favor encuentre la captura de pantalla,


La forma más fácil es hacerlo desde sus cuentas con Xcode:

Dirígete a Xcode -> Preferencias -> Selecciona la pestaña Cuentas -> Ver detalles -> Presiona el botón Actualizar en la esquina inferior izquierda -> Listo.

Compila de nuevo y debería funcionar.


La respuesta fue: comenzar de nuevo, hacer todo lo mismo, pero crear un nuevo perfil de aprovisionamiento e instalarlo. Eso funciono. La inspección de todos los detalles (titularidad en la provisión móvil) se ve exactamente igual que todo en mi pregunta aquí. Pero ahora funciona. Apple: ¿WAT?

Por supuesto, habría sido obvio hacer esto si fuera posible eliminar perfiles de aprovisionamiento. Pero como eso no es posible, no quería saturar a nuestro equipo con un montón de perfiles de prueba. Aún así, finalmente perdí la paciencia y lo intenté de todos modos, y terminó funcionando. Whatevs.


Me encontré con este mismo problema yo mismo. Para mí, el problema era que mi nombre de producto ($ TARGET_NAME) no estaba en mayúscula de la misma manera presentada en el certificado proporcionado por Apple. Por ejemplo, tuve com.companyid.APNDemo mientras que el certificado de Apple estaba usando com.companyid.apndemo.

Cambié mi objetivo para que fuera minúscula y funcionó. Nota: La pista para mí fue que la configuración de la asignación de la firma en Configuraciones de compilación se estableció en mi certificado de desarrollador predeterminado; no el perfil de aprovisionamiento APNTest.


Me llevó horas resolverlo. Dado que alguien está usando scripts personalizados para firmar y empacar, mientras que otros usan xcode, solo hay una forma de verificar qué terminó en su aplicación. Vuelca tus derechos con

codesign --display --entitlements :- path/to/MyApp.app

y marque aps-environment y application-identifier .


Menciona un perfil de aprovisionamiento, pero no veo ninguna mención de un Apple Push Profile.

Para usar Push debe tener un perfil push (hay dos, uno para desarrollo y uno para lanzamiento). Después de crearlo, deberá asegurarse de que contiene los certificados correspondientes (consulte la sección EDITAR a continuación).

Este es un excelente tutorial que lo guiará a través de todos los pasos:

http://www.raywenderlich.com/3443/apple-push-notification-services-tutorial-part-12

Me tomaría a mí, oa cualquier otra persona, horas y horas escribir una respuesta minuciosa y detallada como este tutorial, así que no intentaré, ni reclamaré la recompensa cuando este tutorial ya exista.

PD. Creo que ya no necesitas derechos, esto es algo heredado.

EDITAR: También debe comprobar que tiene los perfiles necesarios en el dispositivo: vaya a la configuración, luego a los perfiles generales, compruebe que sus perfiles estén en la lista, especialmente el perfil de inserción, por supuesto. También puede verificar esto desde la sección Organizador de XCode. En Organizer hay dos secciones que dicen Provision Profiles: una en la parte superior izquierda de la Biblioteca (estos son los perfiles en XCode que usa para firmar, etc.) También verá una sección llamada Provisioning Profiles para el dispositivo que está conectado, esto es el perfil que está instalado en el teléfono. Si no los tiene instalados en el teléfono, puede descargarlos desde el sitio web del portal de aprovisionamiento, luego haga clic en el botón Agregar en la parte inferior de la ventana del Organizador.

Mientras esté en el portal de aprovisionamiento también debe verificar que Apple Push Profile incluya los certificados: - haga clic en Provisión en el menú de la izquierda - verá una lista de su perfil, seleccione EDITAR el perfil de inserción de Apple - verá una sección de certificados, con una lista de desarrolladores o evaluadores, etc. que tiene en su proyecto, asegúrese de que la casilla de verificación esté marcada para ellos. - También verá una sección de dispositivos, asegúrese de que el dispositivo que está probando se haya agregado.

Si tiene algún perfil anterior en XCode o en el dispositivo, elimínelos y descargue / actualice / instale todos los perfiles nuevos del portal de aprovisionamiento.


Mi problema era simplemente que estaba firmando con el perfil de aprovisionamiento de comodines administrado por Xcode.

Después de crear un perfil específico de la aplicación (y de descargarlo, hacer doble clic en él y asegurarme de que mi configuración de compilación se menciona), recibí con éxito un token de dispositivo APNS.


Muchas de las respuestas anteriores son correctas. Sin embargo, parece haber más de un posible error al tratar con esto.

El que tuve fue un problema de capitalización con mi ID de aplicación. Mi ID de aplicación por algún motivo no estaba en mayúscula pero mi aplicación sí. Una vez que recreé la ID de la aplicación con las mayúsculas correctas, todo funcionó sin problemas. Espero que esto ayude. Aunque frustrante como el infierno.

PD si todavía no funciona, intente editar manualmente el campo de Identidad de firma de código con "editar". Cambie la segunda línea con el nombre del nombre de perfil de aprovisionamiento correcto.


Ok, me enfrenté al problema antes. Como la notificación push requiere la implementación en el servidor, para mí el perfil de recreación no era una opción. Así que encontré esta solución SIN crear un nuevo perfil de aprovisionamiento.

Xcode no está seleccionando correctamente el perfil de aprovisionamiento correcto aunque lo estamos seleccionando correctamente.

Primero ve al organizador. En la pestaña Dispositivos, perfil de Aprovisionamiento de la lista Biblioteca, seleccione el perfil deseado que estamos tratando de usar. Haga clic derecho sobre él y luego "Revelar perfil en el buscador".

El perfil correcto se seleccionará en la ventana del Finder abierta. Tenga en cuenta el nombre.

Ahora ve a Xcode> Log Navigator. Seleccione el filtro para "Todos" y "Todos los mensajes". Ahora en la última fase (Build Target) busque el paso llamado "ProcessProductPackaging", amplíelo. Tenga en cuenta el nombre del perfil de suministro. NO deben coincidir si tiene el error.

Ahora, en la ventana del Buscador abierto, elimine el perfil de aprovisionamiento deshonesto que está utilizando Xcode. Ahora construye de nuevo. El error debe ser resuelto. Si no, repite el proceso para buscar otro perfil deshonesto para eliminarlo.

Espero que esto ayude.


Parece que hay algo peculiar con los derechos ''automáticos'' en Xcode 4.6.

Hay un archivo Entitlement.plist para cada SDK en:

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk/Entitlements.plist

Una solución alternativa que surgió fue editar este archivo y agregar manualmente la clave fugaz de aps-environment así:

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>application-identifier</key> <string>$(AppIdentifierPrefix)$(CFBundleIdentifier)</string> <key>aps-environment</key> <string>development</string> <key>keychain-access-groups</key> <array> <string>$(AppIdentifierPrefix)$(CFBundleIdentifier)</string> </array> </dict> </plist>

Entonces, Xcode genera el archivo Xcent correcto, que contiene la clave aps-environment en:

/Users/mySelf/Library/Developer/Xcode/DerivedData/myApp-buauvgusocvjyjcwdtpewdzycfmc/Build/Intermediates/myApp.build/Debug-iphoneos/myApp.build/myApp.xcent

Puede localizar dónde se crea su archivo Xcent utilizando el Navegador de registro de Xcode,
busque "ProcessProductPackaging".

Lamentablemente, esta es la única forma que encontré que soluciona el problema .
(y finalmente puede obtener apropiadamente token de inserción ahora)

Solo me pregunto si hay disponible otra solución más elegante.
Por favor, consulte mi pregunta SO para obtener más detalles sobre eso:
La autorización automática de Xcode 4.6 no funciona: "no hay un aps-environment válido"


Si creó su perfil de aprovisionamiento antes de configurar la app ID para inserción, intente volver a generar el perfil de aprovisionamiento.

iOS Portal de aprovisionamiento -> Aprovisionamiento -> Su certificado -> EDITAR -> Hacer una edición -> Descargar nuevo aprovisionamiento

Trabajó para mi. Ahora puedo usar push.


Tuve el mismo problema con todos los demás y probé todos los trucos anteriores, nada funcionó. Incluso borré y comencé de nuevo con una cuenta de desarrollador diferente.

Lo que funcionó para mí al final fue

  1. Haz lo sugerido arriba y crea una ID de APP
  2. Luego crea un perfil de aprovisionamiento
  3. NO use el perfil comodín del equipo (administrado por xcode one) en la sección de desarrollo del aprovisionamiento. Debe crear uno diferente utilizando la ID de la aplicación para la que ha activado la notificación de inserción. De esta forma, cuando lo desarrolle, tendrá incorporada la función de notificación de inserción.

No sé si puedes habilitar eso para una aplicación comodín, pero después de probar al menos 12 sugerencias diferentes y perder unos días espero que esto ayude a alguien


Tuve un problema similar. He estado saltando entre XCode 7 y 8 por una variedad de razones. Una vez que use 8 para compilar, necesitará usar 8. Simplemente usé Xcode 8 y apliqué algunos de los cambios sugeridos anteriormente y funcionó.


volver a crear archivos provisionales solucionó todos mis problemas.


XCode 6.1.1 y múltiples cuentas de desarrollador de Apple

Otra respuesta para esta mezcla bastante comprensiva: volví a encontrar este tema hoy, y esta vez fue debido a que tenía varias cuentas de Apple. Necesitaba primero agregar la 2da cuenta de desarrollador en XCode> Preferencias> Cuentas> +

Asegúrese de que la capacidad de notificación de inserción esté activada

Luego, necesité habilitar de forma explícita la compra dentro de la aplicación en la aplicación (no tuve que hacer esto previamente). XCode> (la ventana de la aplicación)> Objetivos> Capacidades> Compra en la aplicación ENCENDIDA (y en esta etapa se me dio la opción de elegir el certificado correcto)

Tenga en cuenta que ya he agregado el certificado de habilitación de inserción haciendo doble clic en él en Finder.