Los enlaces universales de iOS no se abren en la aplicación


109

Así que seguí este tutorial exactamente y utilicé los mismos valores que los proporcionados: https://blog.branch.io/how-to-setup-universal-links-to-deep-link-on-apple-ios-9

El archivo de Apple Association también está listo en el directorio de enlaces:
WEB_PAGE:PORT_NUMBER/apple-app-site-association

Todo parece estar dispuesto de este lado.

Agregué los derechos, actualicé el perfil de aprovisionamiento y todo está configurado.

Cuando ejecuto la aplicación en mi dispositivo y abro el enlace http://WEB_PAGE:PORT_NUMBER, esto siempre abre Safari.

Incluso tengo puntos de interrupción en el siguiente método:

- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void(^)(NSArray * __nullable restorableObjects))restorationHandler

Pero nada.

¿Alguien ha perfeccionado esto? ¿Se me escapa algo?


2
pague aquí para asegurarse de no perderse ningún paso stackoverflow.com/questions/35609667/…
Vineet Choudhary

Respuestas:


189

Hay algunos problemas posibles.

  1. Intente pegar su dominio en este validador de enlaces y asegúrese de que no haya problemas: https://limitless-sierra-4673.herokuapp.com/ (crédito a ShortStuffSushi - ver repositorio )

  2. iOS registra un mensaje de error en los registros del sistema si no tiene TLS configurado correctamente en el dominio especificado en sus derechos. Está enterrado en los registros del sistema operativo, no en los registros de la aplicación. El mensaje de error se verá así Sep 21 14:27:01 Derricks-iPhone swcd[2044] <Notice>: 2015-09-21 02:27:01.878907 PM [SWC] ### Rejecting URL 'https://examplecustomdomain.com/apple-app-site-association' for auth method 'NSURLAuthenticationMethodServerTrust': -6754/0xFFFFE59E kAuthenticationErr. Mensaje de error extraído de aquí , instrucciones rápidas (incompletas) sobre el uso de CloudFlare para TLS aquí .

  3. En mi prueba personal, hacer clic / escribir en un enlace en Safari nunca abrió la aplicación directamente. Ha funcionado hacer clic en otras aplicaciones (iMessage, Mail, Slack, etc.) . Otros han informado que al hacer clic en enlaces en los resultados de búsqueda de Google se ha abierto la aplicación directamente.

  4. Tenga en cuenta que si un enlace universal logra abrir su aplicación y luego hace clic en Safari (tocando su sitio en la esquina superior derecha de la barra de navegación en la aplicación), iOS deja de abrir la aplicación cuando visita esa URL . Luego, en Safari, puede desplegar hacia abajo para revelar un banner en la parte superior de la página con "Abrir". Perdí mucho tiempo en esto. Tenga en cuenta que hacer clic en el sitio => deshabilitar UL parece específico de la ruta , según las rutas que especifique en el archivo apple-app-site-assocation. Entonces, si tiene rutas separadas,yoursite.com/a/* y yoursite.com/b/*, si hace clic,yoursite.com/a/* y abre su aplicación directamente, tiene la opción en la esquina superior derecha de la aplicación para hacer clic yoursite.com/a/*. Si lo hace, las visitas posteriores ayoursite.com/a/*se abrirá en el navegador, no en la aplicación. Sin embargo, no yoursite.com/b/*debería verse afectado y aún abrir su aplicación directamente.

Avísame si descubres cuál es el problema. Personalmente, tengo mucha curiosidad por saber cómo funcionan los enlaces universales y qué casos extremos existen. Buena suerte.


1
La misma cosa. Tan raro. A veces abre la aplicación directamente, en ocasiones abre webView. Ojalá dejaran clara la documentación. El funcionamiento de esta función es irregular
Legolas

4
Con respecto a 1), ya no es necesario que firme su archivo de asociación de sitio de aplicación de Apple si lo está sirviendo a través de https.
Jeremy Hicks

11
Reiniciar su dispositivo iOS también podría ayudar. Verifiqué tres veces todos los ajustes y la configuración y estaba absolutamente seguro de que todo estaba correcto, pero aún así no funcionaba. Luego probé con otro dispositivo y funcionó perfectamente. Luego eliminé la aplicación del dispositivo original, reinicié el dispositivo y reinstalé la aplicación, luego simplemente funcionó ...
Mathz

4
¿Cómo volver a la aplicación en lugar de safari si alguien presionó accidentalmente el enlace del sitio web en la esquina derecha de la aplicación?
iEngineer

3
No obtuve el banner Open in App en ninguna parte. Después de una búsqueda prolongada, aquí hay una solución: escriba cualquier enlace para su sitio en la aplicación Notes (que es un enlace universal). Ahora haga clic en Listo. Una vez que se convierta en un enlace, haga clic largo en él y seleccione "Abrir en AppNAME-AQUÍ".
kishorer747

64

Hay muchas formas en que esto puede salir mal. Dos puntos me causaron problemas:

  • En Xcode, cuando agrega el derecho de Dominios asociados, cada entrada debe comenzar con applinks:y luego su nombre de dominio. Ej applinks:www.apple.com.

  • Aunque Xcode creó un archivo de derechos para mí, no se incluyó en mi compilación: tuve que hacer clic en ese cuadro manualmente.

Y sí, después de hacer eso, no fue necesario firmar el apple-app-site-associationarchivo: es solo texto sin formato y funciona, siempre que se sirva a través de HTTPS. (Sin embargo, deberá firmarlo si es compatible con iOS 8).


4
También tuve que eliminar la aplicación por completo del dispositivo de prueba y luego compilar y ejecutar nuevamente antes de que finalmente funcionara.
Phil Andrews

14
me salvas el día, este fue mi problema, aunque XCode creó un archivo de derechos para mí, no se incluyó en mi compilación: tuve que hacer clic en esa casilla manualmente.
cham

12
La inclusión del archivo de derechos en la compilación también solucionó el problema. Vale la pena señalar que en Xcode 8 las casillas de verificación de membresía de destino en el Inspector de archivos están realmente deshabilitadas. Tuve que ir a la configuración de compilación y agregar el archivo de derechos a la fase Copiar recursos.
Charles A.

5
@cham: ¿pueden explicarnos "aunque XCode creó un archivo de derechos para mí, no se incluyó en mi compilación: tuve que hacer clic en esa casilla manualmente".
Thang Pham

6
@AwaisFayyaz Vaya a Fases de compilación> Copiar recursos del paquete. Haga clic en el signo más y luego agregue su archivo de derechos.
s.zainulabideen

36

Aparentemente hay un error en la documentación para hacer el archivo de asociación para Universal Links .

En donde dice:

El valor de la clave appID es el ID del equipo de la aplicación y el ID del paquete.

debería decir

El valor de la clave appID es el prefijo de la aplicación y el ID del paquete

Para la mayoría de las aplicaciones, parece que el ID de equipo y los prefijos de la aplicación son los mismos, pero si su aplicación ha estado en la tienda durante muchos años, estos valores pueden ser diferentes.

Para encontrar este valor, abra el Centro de miembros en https://developer.apple.com y busque "Certificados, identificadores y perfiles", haga clic en "Identificadores", luego en "ID de aplicaciones" en la tabla debajo de "Identificadores". Busque su aplicación y use el valor de prefijo y el ID de paquete allí para crear su AppID para el archivo de asociación.


2
+1, esto me ayudó mucho. Pasar medio día averiguando por qué no funcionó y este parecía ser mi caso
Ivo Beckers

me salvaste el día, de hecho, mi aplicación fue hace mucho tiempo y el prefijo de la aplicación es diferente del ID del equipo.
Ti3t

esto es lo único que funciona para mí. ¡gracias!
dhin

Esta fue la solución para mí. Buen consejo.
Vincenth

33

Para ayudar a depurar este problema, busque "swcd" en la salida de la consola de su dispositivo cuando instale su aplicación para ver si el registro de su enlace universal funcionó o falló.

  1. Utilice un dispositivo real, no el simulador.
  2. Elimina la aplicación de tu dispositivo.
  3. Conecte el dispositivo a su computadora y vea la salida de la consola del dispositivo en xcode. (ventana -> dispositivos -> [su dispositivo] -> consola abierta). Mantenga esta ventana abierta.
  4. Instala tu aplicación y deja que se inicie.
  5. Filtre la salida de la consola a "swcd". Si tiene éxito, verá algo como la siguiente captura de pantalla. Si falla, verá algo más. Si no ve nada, entonces cometió un error en algo fundamental, como agregar el derecho de Dominios asociados.

Applink agregado correctamente


2
¡Excelente consejo! Estaba agregando https: // a los enlaces de aplicación: derecho y también especificando la ruta completa que quería escuchar, que eran ambos errores. Estaba especificando example.com/path * donde solo debería especificar mi dominio.com y el archivo AASA en example.com luego especifica la ruta contra el ID del paquete de mi aplicación
Numan Tariq

3
¿Puedo transferirle un bono en efectivo? Pasé 2 días revisando cada paso de esta maldita configuración de enlace universal, nada me ayudó hasta que probé tu enfoque. Realmente tuve la mala suerte de alojar mi archivo de asociación en la carpeta raíz de una base de fuego para mi dominio, y resultó que Apple consulta primero el subdirectorio .well-known / y firebase parece responder a él con su propio (!) Archivo de asociación correcto que no tiene ninguna aplicación vinculada. Dios, ¿cómo se supone que voy a averiguar esto, Apple?
nalexn

¡Ahhh gran pista! No sabía nada de la consola de este dispositivo, solo miraba la salida de la consola Xcode. Mi problema fue que 2 de cada 3 dominios de enlaces profundos funcionaban, pero no el último. Y allí, en la consola, vi que para mi último dominio lo había escrito mal con "appllinks: <dominio>" (2 L) Oh, hombre ... de todos modos, gracias de nuevo por una excelente manera de comprobar si los enlaces universales están registrados. (Encontré los registros de la consola también Eliminación de los enlaces al desinstalar la aplicación: +1)
Arno Teigseth

1
¿Se supone que es tan detallado por defecto? Debido a que no obtengo un registro tan detallado ... ¿significa esto que la operación no se realizó correctamente?
Nicholas Allio

26

La respuesta de St.derrick es informativa.

Pero para permitir que los enlaces universales nuevamente se abran en la aplicación en lugar de en un safari, debemos hacer lo siguiente.

  • Mantenga presionado el enlace Universal en Mail o iMessage, luego verá opciones para abrir en safari o en la aplicación.

2
No hay opción de app, solo copiar, abrir, agregar a la lista de lectura, etc.
iEngineer

1
Casi me volví loco depurando este problema, pero ESTA era la solución para mí. ¿Quizás si no está configurado correctamente y la aplicación Mail abre el enlace en safari, siempre se abre en safari? ni idea, pero una vez hice la pulsación larga -> abrir en 'myapp' ... ¡y ahora los enlaces se abren correctamente!
herbert

1
Muchas gracias por esta solución. Estuve atrapado en esto durante casi un día. Salvaste mi día.
andrew


18

Me di cuenta de que un problema para mí era que los enlaces al directorio raíz a (por ejemplo http://example.com/) no abrían mi aplicación, pero si agregué una ruta (por ejemplo http://example.com/mypath) funcionó. Agregar "/"a la lista de rutas lo solucionó:

{
    "applinks": {
        "apps": [],
        "details": [
            {
                "appID": "TEAM_ID.BundleIdentifier",
                "paths": [ "*", "/" ]
            }
        ]
    }
}

Como respondió slutsker en este hilo de los foros de desarrolladores de Apple.


17

Pasos rápidos para comprobar si ha implementado Universal Link correctamente.

  • Toque y mantenga presionado el enlace que espera para iniciar la aplicación. Debería ver un "Abrir en [nombre de su aplicación]" en el menú contextual.

  • Abra la aplicación Notes, escriba el enlace que espera para abrir la aplicación. Toque Listo. El enlace se volverá amarillo y al tocar el enlace debería abrir su aplicación, y no Safari.

  • Si el enlace http://yourDomain.com no inicia la aplicación, intente http://yourDomain.com/yourFolder/

  • En Safari, si el menú contextual muestra "Abrir en [nombre de la aplicación]" en safari, pero al tocar el enlace se abre el enlace en safari en lugar de iniciar la aplicación,

    a. Intente tirar hacia abajo en la página de safari que se abrió cuando se hizo clic en el enlace como la forma en que 'tira para actualizar'. Debería aparecer un banner que pueda abrir su aplicación. Toque el banner para abrir la aplicación, cierre la aplicación presionando el botón de inicio, vuelva a Safari e intente iniciar la aplicación tocando el enlace nuevamente. Esta vez, la aplicación debería iniciarse porque al tocar el banner debería haber guardado la preferencia para abrir el enlace en la aplicación.

    si. Si la aplicación aún no se inicia después del paso a., Intente enviar el enlace a un correo web como gmail y abra el sitio de correo web en Safari e intente hacer clic en el enlace. Si esto funciona, es posible que haya intentado iniciar la aplicación desde el mismo dominio que el enlace. Por lo que he visto, el lanzamiento de la aplicación desde el mismo dominio falla en su mayoría . Probablemente a Safari no le interese comprobar si la URL de destino es un enlace universal, cuando el enlace pertenece al mismo dominio en el que se encuentra el usuario. Intente iniciar la aplicación desde otro dominio.


3
Eso fue todo, he estado lidiando con este problema durante horas, EL LANZAMIENTO DE LA APLICACIÓN DESDE EL MISMO DOMINIO FALLÓ LA MAYORÍA. Gracias :)
maledr53

12

También es muy importante incrementar la versión del proyecto o el número de compilación después de integrar enlaces universales. Incluso si elimina / reinstala, iOS no recogerá los enlaces a menos que agregue la versión.


1
¡Esta! La versión del paquete fue totalmente lo que estaba causando que mis pruebas fallaran, porque seguiría todos los consejos anteriores y mis enlaces aún iniciarían Safari ya que iOS está usando el resultado en caché de la versión anterior apple-app-site-associationque tenía el prefijo de appId incorrecto
zai chang

Kyle, creo que te amo! Esta respuesta salva el día, ¡gracias!
neiker

¡Esta fue la salsa secreta para mí! ¡Gracias, gracias, gracias!
nurider

10
  • Los enlaces universales no funcionarán si pega el enlace en el campo URL del navegador.

  • Los enlaces universales funcionan con un <a href="...">clic de elemento impulsado por el usuario en todos los dominios . Ejemplo: si hay un enlace universal en google.com que apunta a bnc.lt, se abrirá la aplicación.

  • Los enlaces universales no funcionarán con un <a href="...">elemento impulsado por el usuario que haga clic en el mismo dominio . Ejemplo: si hay un enlace universal en google.com que apunta a un enlace universal diferente en google.com, no abrirá la aplicación.

  • Los enlaces universales no se pueden activar a través de Javascript (en window.onload o mediante una llamada .click () en un <a>elemento), a menos que sea parte de una acción del usuario.

fuente: https://dev.branch.io/getting-started/universal-app-links/support/ios/#appsbrowsers-that-support-universal-links

La tercera bala me costó alrededor de un día averiguarlo.


1
Tercera viñeta, lo mismo aquí: perdí muchas horas resolviéndolo. Apple incluso tiene una explicación muy estúpida: "iOS respeta la intención más probable del usuario y abre el enlace en Safari", mírate aquí .
jox

3ª viñeta TOP!
Byteros

10

Para cualquiera que necesite probar fácilmente enlaces de apertura (universales), también puede abrir el enlace en su simulador desde la terminal con este comando:

xcrun simctl openurl booted yourapp_or_http://yourlink

por ejemplo:

xcrun simctl openurl booted https://www.google.com


1
No tengo que esto funcione, siempre abre Safari. Sin embargo, funcionan cuando ejecuto en un dispositivo real. Cualquier idea sería apreciada ya que es un poco más doloroso depurar / desarrollar sin el simulador.
chib

7

En caso de que la gente de aquí esté buscando otras soluciones, reunimos todo un paso a paso sobre la depuración de enlaces universales, ya que hemos visto surgir muchos problemas que causan MUCHOS dolores de cabeza.

Echale un vistazo:

Guía de depuración de enlaces universales

Vista previa de la guía de depuración

Si solo está buscando configurar Universal Links desde cero, esta guía es realmente útil:

Guía de configuración de enlaces profundos de iOS

¡Espero que sean de ayuda!


¡Muy útil, gracias! Funcionó para mí cuando se ejecuta en un dispositivo real, pero no en el simulador de iOS.
Josh Sklar

6

Solo pensé en agregar algunas cosas que descubrí en caso de que más personas se encuentren con los mismos problemas que yo en el futuro. Estos están principalmente relacionados con errores de autenticación.

Aunque Apple no lo indica explícitamente, el apple-app-site-associationarchivo debe entregarse a través de https, incluso si está firmado. Apple también debe confiar en el certificado utilizado para https. Entonces, si bien un certificado agregado al dispositivo en Configuración -> General -> Perfiles permitirá https en safari, no permitirá que funcionen los enlaces universales.

En los registros del dispositivo, ante un error de autenticación entre el dispositivo y el servidor, aparecerá un valor impreso como "TrustResultValue" : 4. Una TrustResultValuede 5 significa que el certificado es para el dominio incorrecto (por ejemplo, test.com servido desde www.test.com). UNATrustResultValue de 4 significa que el certificado no es de confianza para este uso.

Puede que haya algunos pasos útiles para depurar aquí . La sección "Probar el acceso a la asociación de sitios de aplicaciones de Apple" es una guía paso a paso sobre cómo asegurarse de que el dispositivo obtenga el apple-app-site-associationarchivo. Los pasos se reducen a:

  1. Desinstale la aplicación. Esto es necesario porque el archivo se descarga durante la instalación.

  2. Evite que el servidor sirva correctamente apple-app-site-association.

  3. En xcode, abra Ventana -> Dispositivos y luego seleccione su dispositivo.

  4. Abra los registros del dispositivo haciendo clic en el triángulo en la parte inferior de la ventana.

  5. Borre los registros haciendo clic en la papelera para borrar los registros anteriores que puedan estar relacionados.

  6. Reinstale la aplicación con xcode haciendo clic en el botón de reproducción.

  7. Una vez iniciada la aplicación, si el dispositivo solicita correctamente el archivo, los registros del dispositivo deberían contener un error que se puede encontrar buscando "apple-app-site-association".

Si el apple-app-site-associationarchivo se entrega correctamente (se omite el paso 2), no debería haber ningún error. En su lugar, se puede mostrar un error de autenticación si ese es el problema.


1
Estaba haciendo suplantación de SSL usando Charles Proxy y esto resultó en un valor de confianza de 4. Cuando apagué el proxy, tuvo éxito.
Ben Flynn

6

La causa más común es cuando el usuario toca en la esquina superior derecha, lo que le dice a iOS que NO abra la aplicación (en este caso, Uber) en el futuro.

Para solucionarlo, tire hacia abajo para revelar el banner inteligente y toque ABRIR:

Tire hacia abajo en Safari y ABRA de nuevo

Esto posteriormente "recordará" abrir la aplicación.


5

Hemos agregado el archivo de asociación de sitio de aplicación de Apple a esta ubicación:

https://example.com/apple-app-site-association

En iOS 9 funcionó bien, pero en iOS 10 no funcionó.

Parecía que el problema estaba con la ruta. Bien conocida :

https://example.com/.well-known/apple-app-site-association

Debido a https://example.com/.well-known/apple-app-site-association ruta redirigida a https://example.com

<Notice>: Allowing redirect 'https://example.com/.well-known/apple-app-site-association' -> 'https://example.com/'
<Notice>: ### Rejecting AASA file size 154466 for URL https://example.com/.well-known/apple-app-site-association

En mi opinión, si de alguna manera .la ruta conocida no funciona correctamente, rompe los enlaces universales.


El manual dice claramente que "El archivo debe ser accesible a través de HTTPS, sin redirecciones".
eonil

El manual también dice claramente que "para las aplicaciones que se ejecutan en iOS 9.3.1 y posterior, el tamaño sin comprimir del archivo de asociación de sitio de aplicación de apple no debe ser mayor de 128 KB, independientemente de si el archivo está firmado". Este archivo tiene 154 KB.
Roberto

En iOS11, su servidor debe devolver explícitamente el estado 404 para: example.com/.well-known/apple-app-site-association y luego swcd usa fallback to root: example.com/apple-app-site-association . Puede verificar rápidamente el estado HTTP devuelto con herramientas como Postman
Max Odnovolyk

4

Me las arreglé para que funcionara, pero tomó bastante tiempo y lucha. Tenga en cuenta que a menos que firme el apple-app-site-association archivo (¡la firma es opcional!), Tocar un enlace en Safari no abrirá su aplicación (me ha causado muchos dolores de cabeza).


1
Eso es curioso. Apple afirma en los documentos que para los enlaces universales puros y el uso en iOS9 no es necesario firmar. Solo si desea admitir iOS 8 Handoff / Shared Web Credentials, debe firmar. ¡Interesante! Tengo el mismo problema, así que intentaré fichar.
wrtsprt

De hecho, la firma es opcional. Tocar un enlace en Mobile Safari para activar la apertura de la aplicación nativa de iOS se denomina "Transferencia de navegador web a aplicación nativa", en cuyo caso, deberá agregar una activitycontinuationpropiedad al apple-app-site-associationarchivo json. developer.apple.com/library/ios/documentation/UserExperience/…
Devy

3

Me tomó casi un día darme cuenta de esto. El problema que tuve fue no descargar los perfiles de aprovisionamiento actualizados en XCode (también reinicié XCode después de esto).

(Preferencias> Cuentas> Ver detalles> Descargar todo)


3

Puede probar enlaces universales en el simulador

De la Guía de programación de búsqueda de aplicaciones: Soporte de enlaces universales


6
¿Alguien ha conseguido que los enlaces universales funcionen en un simulador? Lo he intentado innumerables veces y nunca funciona. Sin embargo, funciona usando un dispositivo real con los mismos flujos.
Tony

Tampoco he podido probar esto. Intentar que Safari active enlaces universales en el simulador ha sido inútil, a pesar de que funciona correctamente en un dispositivo físico.
Albert Bori

Tampoco he podido hacer que funcionen en el simulador. @AlbertBori, ¿conseguiste que esto funcionara?
chib

Estoy casi seguro de que no funcionan en el simulador . Estoy familiarizado con todas las otras trampas, y nunca puedo hacer que funcionen en el simulador.
Fattie

3

Después de dos días, resultó para mí que este tipo de enlaces (de la sucursal)

apliques: xxxx.app.link

sólo funciona después de Archivar (también Ad-hoc) la aplicación e instalarla en el teléfono.


3

Si está alojando su apple-app-site-associationen Firebase , ¡asegúrese de ponerlo en un /.well-known/subdirectorio! Parece que Xcode consulta esa URL primero y, si tiene éxito, no intenta consultarla apple-app-site-associationen el directorio raíz. Por alguna razón, los ingenieros de Firebase hicieron que los sitios web alojados respondieran automáticamente /.well-known/apple-app-site-associationcon un archivo de asociación vacío (pero correctamente formado) que anula el personalizado, dejándote sin idea de por qué nada funciona.


2
¡Finalmente! Muchas gracias. ¿Está escrito en alguna parte? Firebase debería documentarse en algún lugar.
Berkay Turancı

2

Vaya a developer.apple.com y edite uno de sus perfiles de distribución. En la página de edición, puede abrir una ventana emergente para los ID de aplicaciones que mostrará una lista de los nombres de sus aplicaciones y, entre paréntesis () detrás del nombre de la aplicación, revelará todos sus ID de aplicaciones reales . Algunas aplicaciones pueden tener su ID de equipo como prefijo, pero otras no . Asegúrese de usar exactamente lo que ve en ese menú emergente dentro de () y colóquelo en el campo appID de detalles de asociación de sitio de aplicación de apple. Tuve exactamente este problema con una aplicación y sus enlaces universales.


2

El problema para mí resultó ser el apple-app-site-associationarchivo. Según la documentación de Apple, solo se requiere el parámetro applinks. Agregué el activitycontinuationparámetro y funcionó.

{
  "activitycontinuation": {
    "apps": [
      "9JA89QQLNQ.com.apple.wwdc"
    ]
  },
  "applinks": {
    "apps": [],
    "details": [{
        "appID": "9JA89QQLNQ.com.apple.wwdc",
        "paths": [ "/wwdc/news/", "/videos/wwdc/2015/*" ]
      }]
  }
}

3 años después y llegamos a este problema exacto. Agregar activitycontinuationes lo que nos arregló.
readyornot

2

Realmente no he visto exactamente el mismo combo de problema / solución que lo hizo funcionar para mí, ¡así que podría agregar el mío en caso de que alguien tenga el mismo problema!

Para mi aplicación, estoy usando un esquema de URL personalizado (configurado APP_TARGET > Info > URL Types) y configuro el esquema de URL desde aquí en la consola de Firebase para que coincida, pero todavía no funcionaba.

Mi problema fue en realidad dos problemas:

Tenga cuidado si marca Gestionar firmas automáticamente

Si está comprobando la configuración "Gestionar automáticamente la firma" de Xcode como yo, ya que solo estaba tratando de hacer una aplicación de demostración rápida, querrá asegurarse de que el TeamID que se usa coincida con el de su consola Firebase. Originalmente fui a mi cuenta de desarrollador de Apple y copié el ID del equipo de mi página de Membresía, pero luego vi que el ID real que usaba Xcode era diferente. (Puedes encontrar esto en APP_TARGET > General > Signing > Signing Certificate.Para mí se veía iPhone Developer: My Name (TEAM_ID)).

Prefije su TeamID a su identificador de paquete en sus tipos de URL

Después de asegurarme de que coincidieran en mi consola Firebase y Xcode, mi siguiente problema fue el identificador de mi esquema de URL. Es típico usar su identificador de paquete aquí, pero Firebase en realidad lo antepone al ID de equipo que proporcionó en su consola de Firebase, por lo que también tuve que anteponerlo al identificador en la sección de tipos de URL en Xcode.

Después de estas dos correcciones y de volver a descargar el GoogleService-Info.plistarchivo, no tuve problemas para abrir mis enlaces dinámicos.


2

Después de dos días de total desesperación, creo que finalmente lo he arreglado. Aquí está mi solución:

Parece que las aplicaciones más antiguas usan un prefijo de aplicación diferente al de las aplicaciones más nuevas. Las aplicaciones más nuevas solo usan el ID de equipo para este propósito. Si el prefijo de la aplicación y el ID del equipo no son idénticos, parece que debe especificar el campo de continuación de la actividad en el archivo de asociación del sitio de la aplicación de Apple:

{
    "activitycontinuation": {
        "apps": [
            "YOUR_APP_PREFIX.de.company.app"
        ]
   },
  "applinks": {
    "apps": [],
    "details": [
      {
        "appID": "YOUR_APP_PREFIX.de.company.app",
        "paths": ["/*"]
      }
    ]
  }
} 

Otra cosa que experimenté durante mi viaje infernal fue que eliminar la aplicación y reiniciar el dispositivo parece ser la única forma de forzar la actualización de este archivo.


1

Para mí, mi error fue que nuestro sitio está redireccionando www.domain.com a domain.com, por lo que todo www.domain.com/* fallará debido a eso. Espero que ayude.


1

Pude probar los enlaces universales en el simulador de iOS utilizando la aplicación Calendario.

Acabo de crear un evento y agregué la URL que quería probar en el URLcampo del evento . Luego, al ver el evento creado, simplemente puede tocar el enlace URL y su aplicación debería abrirse.


Esto no parece funcionar para mí, he intentado todo para que funcionen en el simulador sin éxito. Funcionan bien en el dispositivo real, pero eso no es ideal para el desarrollo / depuración. Intenté presionar el enlace durante mucho tiempo y no hay la opción "Abrir en la aplicación".
chib

1

Después de pasar un día tratando de que esto funcione, reiniciar mi teléfono resolvió el problema.

Desinstalar / reinstalar la aplicación tampoco funcionó.


1

Para ios13, hay un nuevo formato: consulte aquí https://developer.apple.com/documentation/safariservices/supporting_associated_domains_in_your_app?language=objc

Actualicé mi archivo para que se vea así:

{
  "applinks": {
      "details": [
           {
             "appIDs": [ "ABCDE12345.com.example.app" ],
             "components": [
               {
                  "/": "/my-link/*",
                  "exclude": true,
                  "comment": "Matches any URL whose path starts with /my-link/ and instructs the system not to open it as a universal link"
               }
             ]
           }
       ]
   },
   "webcredentials": {
      "apps": [ "ABCDE12345.com.example.app" ]
   }
}

necesitarías agregar "exclude": trueal componentsobjeto para commentser verdad
skornos

@skornos buen punto. enmendaré mi respuesta.
Anita

0

Para futuros lectores que encuentren esta página ...

Tuve una situación similar. Sin embargo, en mi situación, iOS10 estaba funcionando correctamente, y no importaba lo que hiciera (aumentar los números de compilación, eliminar / reinstalar, etc.), iOS9 parecía negarse a funcionar.

Llegué a esto desde iOS10 y necesitaba ser compatible con iOS9. En ese momento, la documentación aquí - https://developer.apple.com/library/content/documentation/General/Conceptual/AppSearch/UniversalLinks.html - establece claramente que el archivo puede colocarse en la raíz del servidor web (p /apple-app-site-association. ej. ) o en la carpeta .well-known (p /.well-known/apple-app-site-association. ej .). Debido a que también soy compatible con Android, que también usa la carpeta .well conocida para un archivo similar, decidí poner ambos allí.

Para nuevas instalaciones en iOS10, claramente solicita el archivo raíz, falla, luego solicita el archivo .well conocido y tiene éxito.

Para iOS9, solicitó claramente el archivo raíz, falla y no hace nada más.

Solución: si es compatible con iOS9, coloque el archivo en /apple-app-site-association.


0

En mi caso, mi error fue poner parámetros de consulta en rutas:

{
    "applinks": {
        "apps": [],
        "details": [
            {
                "appID": "TEAM_ID.BundleIdentifier",
                "paths": [ "/auth-ui/hub?target=confirm&*" ]
            }
        ]
    }
}

cuando elimino '? target = confirm & *' de las rutas, comienza a funcionar

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.