iOS Universal Links openen niet in-app

Dus ik heb deze tutorial precies gevolgd en dezelfde waarden gebruikt als de opgegeven waarden:
https://blog .branch.io/how-to-setup-universal-links-to-deep-link-on-apple-ios-9

Het Apple Association-bestand is ook gereed in de linkdirectory:
WEB_PAGE:PORT_NUMBER/apple-app-site-association

Alles lijkt aan deze kant te zijn ingesteld.

Ik heb de rechten toegevoegd, het registratieprofiel geüpdatet en alles is ingesteld.

Als ik de app op mijn apparaat start en de link http://WEB_PAGE:PORT_NUMBERopen, wordt Safari altijd geopend.

Ik heb zelfs breekpunten in de volgende methode:

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

Maar niets.

Heeft iemand dit geperfectioneerd? Is er iets dat ik mis?


Antwoord 1, autoriteit 100%

Er zijn een paar mogelijke problemen.

  1. Probeer uw domein in deze linkvalidator te plakken en zorg ervoor dat er geen problemen zijn: https://limitless-sierra -4673.herokuapp.com/(met dank aan ShortStuffSushi — zie repo)

  2. iOS registreert een foutmelding in de systeemlogboeken als TLS niet correct is ingesteld op het domein dat is opgegeven in uw rechten. Het is begraven in de OS-logboeken, niet in de toepassingslogboeken. De foutmelding ziet eruit als 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. Foutmelding afkomstig van hier, snelle (onvolledige) instructies over het gebruik van CloudFlare voor TLS hier.

  3. Tijdens mijn persoonlijke tests heeft het klikken/typen van een link in Safari nog nooit een keer rechtstreeks de app geopend. Klikken vanuit andere apps (iMessage, Mail, Slack, etc.) heeftgewerkt. Anderen hebben gemeld dat het klikken op links in de zoekresultaten van Google de app rechtstreeks heeft geopend.

  4. Houd er rekening mee dat als een Universal Link erin slaagt uw app te openen en u vervolgens doorklikt naar Safari (door op uw site in de rechterbovenhoek van de navigatiebalk in de app te tikken), iOS stopt met het openen van de app wanneer u die URL bezoekt. Vervolgens kunt u in Safari naar beneden trekken om een ​​banner boven aan de pagina met “Openen” weer te geven. Ik heb hier veel tijd aan verspild.Merk op dat doorklikken naar de site => het uitschakelen van UL lijkt padspecifiek, gebaseerd op de paden die je opgeeft in het apple-app-site-assocation-bestand. Dus als u afzonderlijke routes heeft, yoursite.com/a/*en yoursite.com/b/*, als u op yoursite.com/a/*en het opent je app direct, je hebt dan de optie in de rechterbovenhoek van de app om door te klikken naar yoursite.com/a/*. Als u dat doet, worden volgende bezoeken aan yoursite.com/a/*geopend in de browser, niet in de app. yoursite.com/b/*zou echter onaangetast moeten blijven en uw app nog steeds rechtstreeks moeten openen.

Laat het me weten als je ontdekt wat het probleem is. Ik ben persoonlijk erg benieuwd naar hoe Universal Links werken en welke randgevallen er zijn. Veel succes.


Antwoord 2, autoriteit 38%

Er zijn veel manieren waarop dit fout kan gaan. Twee punten bezorgden me problemen:

  • In Xcode moet elke vermelding beginnen met applinks:en vervolgens uw domeinnaam wanneer u het recht Geassocieerde domeinen toevoegt. bijv. applinks:www.apple.com.

  • Hoewel Xcode een rechtenbestand voor mij heeft gemaakt, is het niet opgenomen in mijn build: ik moest handmatig op dat vakje klikken.

En ja, daarna was het niet nodig om het bestand apple-app-site-associationte ondertekenen: het is gewoon platte tekst en het werkt, zolang het maar wordt geserveerd HTTPS. (Je moet het echter nog steeds ondertekenen als je iOS 8 ondersteunt.)


Antwoord 3, autoriteit 28%

Zoek tijdens het installeren van uw app naar ‘swcd’ in de console-uitvoer van uw apparaat om te helpen bij het oplossen van dit probleem om te zien of het registreren van uw universele link heeft gewerkt of is mislukt.

  1. Gebruik een echt apparaat, niet de simulator.
  2. Verwijder de app van je apparaat.
  3. Sluit het apparaat aan op uw computer en bekijk de console-uitvoer van het apparaat in xcode. (venster -> apparaten -> [uw apparaat] -> open console). Houd dit venster open.
  4. Installeer je app en laat hem starten.
  5. Filter de console-uitvoer op “swcd”. Als het is gelukt, ziet u zoiets als de volgende schermafbeelding. Als het niet lukt, zie je iets anders. Als je niets ziet, heb je iets fundamenteels verprutst, zoals het toevoegen van het recht op Associated Domains.

Applink succesvol toegevoegd


Antwoord 4, autoriteit 18%

Er staat blijkbaar een fout in de documentatie voor het maken van het associatiebestand voor Universal Links.

Waar staat:

De waarde van de appID-sleutel is de team-ID van de app en de bundel-ID

er zou moeten staan

De waarde van de appID-sleutel is het voorvoegsel van de app en de bundel-ID

Voor de meeste apps lijkt het erop dat de team-ID en app-voorvoegsels hetzelfde zijn, maar als uw app al vele jaren in de winkel is, kunnen deze waarden verschillen.

Om deze waarde te vinden, opent u het Ledencentrum op https://developer.apple.comen kijkt u naar “Certificaten, ID’s en ; Profielen”, klik op “Identifiers” en vervolgens op “App ID’s” in de tabel onder “Identifiers”. Zoek uw app en gebruik daar de Prefix-waarde en Bundel-ID om uw AppID voor het koppelingsbestand te maken.


Antwoord 5, autoriteit 13%

Om apple-app-site-associationaan de serverzijde te valideren, kunt u
gebruik de officiële validator van Apple.

https://search.developer.apple.com/appsearch-validation-tool/


Antwoord 6, autoriteit 13%

Het antwoordvan St.derrick is informatief.

Maar om universele links weer in de app te laten openen in plaats van in safari, moeten we het volgende doen.

  • Druk lang op Universele link in Mail of iMessage, dan zie je opties of je wilt openen in Safari of in App.

Antwoord 7, autoriteit 9%

Ik realiseerde me dat het probleem voor mij was dat links naar de hoofdmap a (bijv. http://example.com/) mijn app niet opende, maar als ik een pad toevoeg (bijv. http://example.com/mypath) werkte het. Door "/"toe te voegen aan de padenlijst is het opgelost:

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

Zoals beantwoord door slutsker in dezethread van Apple Developer Forums.


8, autoriteit 8%

Voor iedereen die behoefte heeft om gemakkelijk te testen opening (Universal) Links, kunt u ook de link in uw Simulator van de terminal te openen met de volgende opdracht:

xcrun simctl openurl booted yourapp_or_http://yourlink

Bijvoorbeeld:

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


9, Autoriteit 6%

Het is ook super belangrijk om het project versie of build nummer te verhogen na de integratie van universele koppelingen. Zelfs als u verwijderen / opnieuw te installeren, iOS zal niet pick-up de links, tenzij u de versie bump.


10, Autoriteit 3%

Incase mensen hier zijn op zoek naar andere oplossingen, samen te stellen we een hele stap-voor-stap op het debuggen Universal Links zoals we hebben gezien veel problemen pop-up, waardoor een hoop kopzorgen.

Check it out:

Universal Links foutopsporing

 Debug Guide preview

Als je gewoon op zoek naar het opzetten Universal Links fris, deze gids is echt nuttig:

iOS deeplinking Setup Guide

Hope Ze zijn behulpzaam!


11, autoriteit 3%

Net dacht dat ik zou een aantal dingen die ik ontdekte in het geval dat meer mensen dezelfde problemen ondervinden als ik in de toekomst toe te voegen. Deze zijn meestal voor de authenticatie fouten.

Hoewel Apple dit niet expliciet vermeldt, moet het bestand apple-app-site-associationworden aangeboden via https, zelfs als het is ondertekend. Het certificaat dat voor https wordt gebruikt, moet ook door Apple worden vertrouwd. Dus terwijl een certificaat aan het apparaat is toegevoegd in Instellingen -> Algemeen -> Profielen staan ​​https toe in safari, universele links werken niet.

In de apparaatlogboeken wordt bij een authenticatiefout tussen het apparaat en de server een waarde afgedrukt zoals "TrustResultValue" : 4. Een TrustResultValuevan 5 betekent dat het certificaat voor het verkeerde domein is (bijv. test.com geserveerd vanaf www.test.com). Een TrustResultValuevan 4 betekent dat het certificaat niet wordt vertrouwd voor dit gebruik.

Er kunnen enkele handige stappen zijn voor het debuggen van hier. De sectie “Toegang tot apple-app-site-association testen” is een stapsgewijze handleiding om ervoor te zorgen dat het apparaat het bestand apple-app-site-associationontvangt. De stappen komen neer op:

  1. Verwijder de app. Dit is nodig omdat het bestand tijdens de installatie wordt gedownload.

  2. Voorkom dat de server apple-app-site-associationcorrect weergeeft.

  3. Open in xcode Window -> Apparaten en selecteer vervolgens uw apparaat.

  4. Open de apparaatlogboeken door op het driehoekje onder aan het venster te klikken.

  5. Wis de logboeken door op de prullenbak te klikken om eerdere logboeken te wissen die mogelijk verband houden.

  6. Installeer de app opnieuw met xcode door op de afspeelknop te klikken.

  7. Nadat de app is gestart en het apparaat correct om het bestand vraagt, moeten de apparaatlogboeken een fout bevatten die kan worden gevonden door te zoeken naar “apple-app-site-association”.

Als het bestand apple-app-site-associationcorrect wordt weergegeven (stap 2 is weggelaten), zou er geen fout moeten zijn. In plaats daarvan kan er een authenticatiefout worden weergegeven als dat het probleem is.


Antwoord 12, autoriteit 3%

We hebben het bestand apple-app-site-associationtoegevoegd aan deze locatie:

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

Op iOS 9 werkte het prima, maar op iOS 10 werkte het niet.

Het bleek dat er een probleem was met het .bekendepad:

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

Vanwege https://example.com/.well-known/ apple-app-site-associationpad omgeleid naar 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

Naar mijn mening verbreekt het universele links als het op de een of andere manier een bekend pad niet correct werkt.


Antwoord 13, autoriteit 3%

De meest voorkomende oorzaak is wanneer de gebruiker in de rechterbovenhoek tikt, waardoor iOS wordt verteld de app (in dit geval Uber) in de toekomst NIET te openen.

Om op te lossen, trek je naar beneden om de slimme banner weer te geven en tik je op OPENEN:

Trek omlaag in Safari en weer OPEN

Dit zal vervolgens “onthouden” om de app te openen.


Antwoord 14, autoriteit 2%

Het is me gelukt om het te laten werken, maar het kostte nogal wat tijd en moeite. Houd er rekening mee dat tenzij u hetapple-app-site-associationbestand(ondertekenen is optioneel!) ondertekent (ondertekenen is optioneel!) op een link in Safari nietje app openen (het heeft me veel hoofdpijn bezorgd).


Antwoord 15, autoriteit 2%

Voor ios13 is er een nieuwe indeling – kijk hier https:/ /developer.apple.com/documentation/safariservices/supporting_associated_domains_in_your_app?language=objc

Ik heb mijn bestand bijgewerkt zodat het er als volgt uitziet:

{
  "applinks": {
    "apps": [],
    "details": [
        {
          "appIDs": ["1234.app.company.appname"],
          "appID": "1234.app.company.appname",
          "components": [
            {
              "/": "/login"
            }
         ],
           "paths": [ "/login" ]
        }
    ]
  },
  "webcredentials": {
    "apps": ["1234.app.company.appname"]
  }
}

Antwoord 16

Het kostte me bijna een dag om dit uit te zoeken.
Het probleem dat ik had was het niet downloaden van de bijgewerkte inrichtingsprofielen in XCode (hierna heb ik XCode ook opnieuw opgestart).

(Voorkeuren > Accounts > Details bekijken > Alles downloaden)


Antwoord 17

U kunt universele links testen in simulator

Uit de Programmeergids voor app-zoekopdrachten: ondersteuning voor universele koppelingen


Antwoord 18

Na twee dagen bleek voor mij dat dit soort links (van branch)

applinks:xxxx.app.link

werk alleen na het archiveren (ook ad-hoc) van de applicatie en installeer deze op de telefoon.


Antwoord 19

Als u uw apple-app-site-associationhost op Firebase, zorg er dan voor dat u deze in /.well-known/submap! Het lijkt erop dat Xcode eerst die URL opvraagt, en als het lukt, doet het geen poging om de apple-app-site-associationin de hoofdmap te doorzoeken. Om de een of andere reden hebben Firebase-ingenieurs ervoor gezorgd dat de gehoste websites automatisch reageren op /.well-known/apple-app-site-associationmet een leeg (maar correct gevormd) koppelingsbestand dat uw aangepaste koppeling overschrijft, waardoor je geen idee hebt waarom niets werkt!


Antwoord 20

Ga naar developer.apple.com en bewerk een van je distributieprofielen. Op de bewerkingspagina kunt u een pop-up voor app-ID’sopenen die een lijst met uw app-namen toont en tussen () ronde haakjes achter de naam van de app al uw echte App-ID’s. Sommige apps hebben mogelijk uw team-ID als voorvoegsel, maar sommige hebben dit niet. Zorg ervoor dat u precies gebruikt wat u ziet in dat pop-upmenu in de () en plaats het in het appID-veld met details van de app-app-site-associatie. Ik had precies dit probleem met een app en zijn universele links.


Antwoord 21

Het probleem voor mij bleek het bestand apple-app-site-associationte zijn. Volgens de documentatie van Apple is alleen de parameter applinks vereist. Ik heb de parameter activitycontinuationtoegevoegd en het werkte.

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

Antwoord 22

Ik heb niet echt exact dezelfde combinatie van probleem/oplossing gezien waardoor het voor mij werkte, dus kan net zo goed de mijne toevoegen voor het geval iemand hetzelfde probleem heeft!

Voor mijn app gebruik ik een aangepast URL-schema (ingesteld in APP_TARGET > Info > URL Types) en stel het URL-schema van hier in op de Firebase-console om overeen te komen, maar was nog steeds niet werken.

Mijn probleem bestond eigenlijk uit twee problemen:

Pas op als u Ondertekenen automatisch beheren aanvinkt

Als u de instelling “Ondertekenen automatisch beheren” van Xcode aanvinkt zoals ik deed, aangezien ik net een snelle demo-app probeerde te maken, moet u ervoor zorgen dat de TeamID die wordt gebruikt overeenkomt met die in uw Firebase-console. Ik ging oorspronkelijk naar mijn Apple Developer Account en kopieerde de team-ID van mijn lidmaatschapspagina, maar zag later dat de werkelijke ID die door Xcode werd gebruikt, anders was. (Je kunt dit vinden in APP_TARGET > General > Signing > Signing Certificate.Voor mij leek het op iPhone Developer: My Name (TEAM_ID)).

Voeg uw TeamID toe aan uw bundel-ID in uw URL-typen

Nadat ik ervoor had gezorgd dat deze overeenkwamen in mijn Firebase-console en Xcode, was mijn volgende probleem de identifier voor mijn URL-schema. Het is gebruikelijk om hier uw bundel-ID te gebruiken, maar Firebase laat dit in feite voorafgaan door de team-ID die u in uw Firebase-console hebt opgegeven, dus ik moest het ook als voorvoegsel toevoegen aan de ID in het gedeelte URL-typen in Xcode.

Na deze twee oplossingen en het opnieuw downloaden van het bestand GoogleService-Info.plisthad ik geen probleem om mijn dynamische links te openen.


Antwoord 23

Na twee dagen van totale wanhoop, denk ik dat ik het eindelijk heb opgelost. Hier is mijn oplossing:

Het lijkt erop dat oudere apps een ander app-voorvoegsel gebruiken dan nieuwere apps. Nieuwere apps gebruiken hiervoor alleen de Team-ID. Als het app-voorvoegsel en de team-ID niet identiek zijn, lijkt het erop dat u het veld voor voortzetting van de activiteit moet specificeren in het koppelingsbestand van de Apple app-site:

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

Een ander ding dat ik tijdens mijn helrit heb meegemaakt, was dat het verwijderen van de app en het opnieuw opstarten van het apparaat de enige manier lijkt te zijn om dit bestand geforceerd te vernieuwen.


Antwoord 24

Voor mij was mijn fout dat onze site www.domain.com omleidt naar domain.com, dus alle www.domain.com/* zal daardoor mislukken. Ik hoop dat dat helpt.


Antwoord 25

Voor toekomstige lezers die deze pagina vinden …

Ik had een soortgelijke situatie. In mijn situatie werkte iOS10 echter AOK, en wat ik ook deed (buildnummers wijzigen, verwijderen/opnieuw installeren, enz.), iOS9 leek te weigeren te werken.

Ik kwam hier vanaf iOS10 en moest iOS9 ondersteunen. Destijds was de documentatie hier – https:// developer.apple.com/library/content/documentation/General/Conceptual/AppSearch/UniversalLinks.html– geeft duidelijk aan dat het bestand in de root van de webserver kan worden geplaatst (bijv. /apple-app-site-association) of in de .well-known map (bijv. /.well-known/apple-app-site-association). Omdat ik ook Android steun, dat ook de .well-known map gebruikt voor een soortgelijk bestand, heb ik besloten om beide daarin te plaatsen.

Voor nieuwe installaties op iOS10 vraagt ​​het duidelijk om het rootbestand, mislukt, vraagt ​​dan om het .well-known bestand en slaagt.

Voor iOS9 heeft het duidelijk om het rootbestand gevraagd, mislukt en doet niets anders.

Oplossing: als je iOS9 ondersteunt, plaats je het bestand op /apple-app-site-association.


Antwoord 26

Ik heb Universal Links in de iOS Simulator kunnen testen met behulp van de Agenda-app.

Ik heb zojuist een evenement gemaakt en de URL die ik wilde testen toegevoegd aan het veld URLvan het evenement. Wanneer je het gemaakte evenement bekijkt, kun je gewoon op de URL-link tikken en je app zou moeten openen.


Antwoord 27

Ik hoop dat dit iemand helpt, want het kostte me ongeveer twee dagen om erachter te komen.

We moesten www.toevoegen aan onze associated-domainsin ons bestand .entitlements.

       <string>applinks:www.yourdomain.com</string>
        <string>activitycontinuation:www.yourdomain.com</string>

Omdat als we yourdomain.comgebruikten in plaats van www.yourdomain.comonze servers een omleiding uitvoerden -> 304 en bevatte vervolgens niet het content-type: application/jsonvoor het apple-app-site-association file.

NB de universele links werken nog steeds voor yourdomain.comen www.yourdomain.com


Antwoord 28

Na een dag proberen om dit te laten werken, loste het opnieuw opstarten van mijn telefoon het probleem op.

Het verwijderen/opnieuw installeren van de app werkte ook niet.

Other episodes