web-dev-qa-db-fra.com

Universal Links fonctionne localement, mais pas à partir d'AppStore Apps

Après installation manuelle de l'application} à partir de xCode (avec le périphérique branché sur le MacBook), je peux cliquer sur les courriers contenant un lien vers l'application Web et les ouvrir dans l'application Cordova au lieu de l'application Web (comme prévu).

Mais lorsque je télécharge et installe l'application à partir d'AppStore ou de testFlight (avec exactement la même base de code), les liens universels sont ignorés et que l'application Web est ouverte.

Lorsque je surveille les journaux Apache et que j'installe l'application manuellement, je reçois:

XX.XX.XX.XX - - [29/Aug/2018:14:32:33 +0000] "GET /.well-known/Apple-app-site-association HTTP/1.1" 200 730 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36"

Mais lors de l'installation de l'application à partir de testFlight ou de l'AppStore, il n'y a aucune demande pour ce fichier.

Quelqu'un peut-il m'aider à trouver même un indice pour rechercher .... Comment activer UniversalLink pour mon application de production?

[EDIT] de la réponse de john316

J'ai décompressé l'IPA généré, ouvert le embedded.mobileprovision et j'avais:

<key>Entitlements</key>
<dict>
    <key>keychain-access-groups</key>
    <array>
        <string>XXXX.*</string>     
    </array>
    <key>get-task-allow</key>
    <true/>
    <key>application-identifier</key>
    <string>XXXX.my.domain.com</string>
    <key>com.Apple.developer.associated-domains</key>
    <string>*</string>
    <key>com.Apple.developer.team-identifier</key>
    <string>XXXX</string>
    <key>aps-environment</key>
    <string>development</string>
</dict>

Les domaines associés sont activés mais ne devraient-ils pas avoir un tableau de chaînes avec tous mes applinks:domains?

12
Alexandre SIRKO

D'après mon expérience d'observation de différences comme celle que vous décrivez, dans la plupart des cas, cela est dû à la différence entre les droits des applications aux profils de développement et de distribution. Même si vous pouvez indiquer clairement dans les paramètres de projet de votre application que vous avez besoin de certaines fonctionnalités (dans ce cas, la case "Domaines associés"), Xcode peut ne générer aucune erreur lors du processus de signature (lorsque vous exportez l'application pour la distribution) si certains droits sont manquants. dans le profil d'approvisionnement. 

Ils peuvent être manquants pour deux raisons: ils n'ont peut-être pas été ajoutés au portail developer.Apple.com pour ce profil ou Xcode n'a pas actualisé le fichier de profil à partir de ce portail. Dans ce dernier cas, il est utile d’effacer l’ancien profil de votre disque local pour forcer Xcode à le télécharger à nouveau.

Pour vérifier que vous avez bien le droit com.Apple.developer.associated-domains dans votre fichier de distribution, vous pouvez décompresser le fichier IPA et rechercher la clé com.Apple.developer.associated-domains dans la section <key>Entitlements</key> comme spécifié ici .

Une autre façon de résoudre ce problème consiste à consulter les journaux des périphériques dans la console (Xcode-> Fenêtre-> Périphériques et simulateurs-> Ouvrir la console) lors de l'exécution de la version AppStore/TestFlight de l'application. Vous pouvez trouver une ligne de journal sortie par iOS lorsque le lien est correctement suivi dans l'application pour la version dev de l'application et la comparer à la casse lorsqu'elle échoue. Habituellement, iOS se plaint à ce stade des droits manquants, dans les journaux.

6
john316

Enfin, j'ai pu résoudre ce problème:

Assurez-vous que Entitlements-Release.plist inclut les droits appropriés. Dans mon cas, seul Entitlements-Debug.plist avait les droits appropriés. De plus, lorsque vous exportez votre application à la dernière étape, vous devriez généralement voir un résumé des droits inclus, assurez-vous que com.Apple.developer.associated-domains est répertorié avec l'entrée applinks appropriée.

Il devrait ressembler à:

 enter image description here

source: https://forums.developer.Apple.com/message/334862

2
menelik

Si vous utilisez Cordova/Ionic v3

Il y a un bug ...

Vérifiez ces étapes:

Il y a quatre processus

Console 1.app

ID de l'application -> sélectionnez l'ID de l'application → activé Domaines associés -> Terminé Profil d'approvisionnement -> Modifier à nouveau 

  1. Sur Xcode

AppName -> général <-> capacité -> Domaines associés -> + ->

applinks: exemple.com

  1. Sur votre serveur Téléchargez le fichier d’association Apple-app-site-association dans le répertoire racine pour http .__ et dans le dossier .well-known pour https.

Ex - https://www.skyscanner.com/Apple-app-site-association

Ex - https://www.skyscanner.com/.well-known/Apple-app-site-association

N'ajoutez pas ce fichier en tant que json Laissez en tant que texte Ex - de Apple-app-site-association

4. (Important)

(Cordova) dossier de projet il y a deux fichiers: Projet -> Plateforme -> ios -> NomProjetFolder ->

Entitlements-Debug.plist

Entitlements-Release.plist

Lorsque j'ajoute la valeur applinks: example.com à Capabilities-> Domaines associés-> Domaines, Entitlements-Debug.plist a obtenu les lignes suivantes:

 <key>com.Apple.developer.associated-domains</key> <array>  
 <string>applinks:example.com</string> </array>

MAIS le Entitlements-Release.plist n'a pas changé. Ce que j'ai fait pour résoudre le problème est de copier-coller les lignes générées dans Entitlements-Debug.plist. Après cela, j’ai fait exactement le même processus d’archivage et de téléchargement que précédemment et tout a bien fonctionné.

et utilisez ionic-plugin-deeplinks pour obtenir les paramètres et acheminer votre processus Deeplink

....... Merci plus tard, construisez d'abord votre projet

0
Amit Pandey