Univerzální odkaz problém při použití protokolu http

0

Otázka

Vím, že v Apple docs, oni říkají, že toto:

Poté můžete vytvořit přidružení souboru, umístěte ho na své stránky .známých firem. Souboru URL by měla odpovídat následující formát:

https:///.well-known/apple-app-site-association musíte hostit soubor pomocí https:// platný certifikát a žádné přesměrování.

Naše stránky není pomocí https, ale spíše http, ale apple-app-site-asociace souboru je hostován pomocí protokolu https. To je dosaženo tím, že:

  • pomocí letsencrypt a certbot, který dává platný certifikát
  • některé konfigurace nginx tak, že všechno funguje

Nejsem devops, takže nevím, podrobnosti o výše, ale když jsme se jít do ASAA validator (https://branch.io/resources/aasa-validator/) dostaneme toto:

enter image description here

Apple-app-site-asociace souboru vypadá takto:

{
    "applinks": {
        "apps": [],
        "details": [
            {
                "appID": "com.xxx.MyApp",
                "paths": [ "/#/new-password/*", "/#/new-password/"]
            }
        ]
    }
}

V developer portal, mám povoleno související domény, a v Xcode, Associatied Domén-> Domény nastavení vypadá takto:

applinks:mysite.dev.com

Také v ApplicationDelegate jsem implementoval continueUserActivity metoda v AppDelegate, ale to neznamená, spoušť, a když jsem klikněte na odkaz pro obnovení hesla (z mailtrap) moje aplikace neotevře, ale spíše odkaz je otevřena (web).

Odkaz má tuto strukturu:

http://mysite.dev.com/#/new-password/a-random-hash-goes-here

Je to problém, protože jen apple-app-site-sdružení je server na https, ale zbytek stránky koryto https?

Nebo, možná, tam je problém se strukturou souboru? (konkrétně cesty, klíče)?

ios ios-universal-links objective-c
2021-11-23 11:14:31
2

Nejlepší odpověď

1

Můžete zkusit následující, v Info.plist soubor vaší aplikace přidejte následující klíče:

  1. Přidat Klíč s názvem NSAppTransportSecurity jako Slovník
  2. Pak přidejte následující podklíče:
  • Přidat podklíč tzv. NSAllowsArbitraryLoads jako Boolean a nastavte její hodnotu na ANO
  • Přidat podklíč tzv. NSTemporaryExceptionMinimumTLSVersion jako Řetězec a nastavte její hodnotu na TLSv1.2. Výše uvedené by vidět jako na následujícím obrázku: enter image description here

A kód by být jako:

    <key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
        <key>NSTemporaryExceptionMinimumTLSVersion</key>
        <string>TLSv1.2</string>
    </dict>
  1. Čisté a sestavení projektu a vyzkoušet své všeobecné spojení pomocí protokolu HTTP

Pokud před kroky nefungují, můžete zkusit přidat výjimek pro konkrétní domény v vaše Info.plist:

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSExceptionDomains</key>
    <dict>
        <key>mysite.dev.com</key>
        <dict>
            <key>NSIncludesSubdomains</key>
            <true/>
            <key>NSExceptionAllowsInsecureHTTPLoads</key>
            <true/>
            <key>NSExceptionRequiresForwardSecrecy</key>
            <true/>
            <key>NSExceptionMinimumTLSVersion</key>
            <string>TLSv1.2</string>
            <key>NSThirdPartyExceptionAllowsInsecureHTTPLoads</key>
            <false/>
            <key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
            <true/>
            <key>NSThirdPartyExceptionMinimumTLSVersion</key>
            <string>TLSv1.2</string>
            <key>NSRequiresCertificateTransparency</key>
            <false/>
        </dict>
    </dict>
</dict>

Výše uvedené je jen experimentálně, mít na paměti, že pokud vaše aplikace nebude mít dobrý důvod, proč povolit provoz protokolu HTTP může být odmítnut Apple, jsem s vámi podělit o některé zajímavé odkazy:

https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html#//apple_ref/doc/uid/TP40009251-SW33 https://developer.apple.com/videos/play/wwdc2015/703/ https://github.com/AFNetworking/AFNetworking/issues/2779#issuecomment-112030880

Jde o!

2021-11-24 21:52:58

Rozhodli jsme se jít s podáváním apple-app-site-asociace souboru přes https, a fungovalo to. Ale to, co jsi navrhl, možná by mohlo být řešení v případě, že https není možné vůbec. Díky za sdílení!
Whirlwind
0

Z jablek dokumentace:

Pokud vaše aplikace běží v iOS 9 nebo novější a používáte protokol HTTPS sloužit apple-app-site-asociace souborů, můžete vytvořit textový soubor, který používá application/json MIME typ a nemusíte podepsat

Takže v tvém případě si myslím, že iOS nemá snažili, aby si jej stáhnout přes HTTPS verzi a získat nepodepsané apple-app-site-association

Vidím dvě možné řešení:

  1. znamení apple-app-site-association
  2. přesměrovat uživatele stejně na https, pokud máte platný certifikát
2021-11-23 11:50:01

Vlastně to funguje stejně jako je(sloužící apple-app-site-asociace souboru pouze přes https). Jen jsem musel odstranit aplikace z telefonu, a nainstalovat znovu.
Whirlwind

V jiných jazycích

Tato stránka je v jiných jazycích

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................