|Ксамарин| Универсальные ссылки не работают: я не могу открыть приложение iOS через URL-адрес https, что не так с моей конфигурацией/настройкой?

Я разрабатываю приложение с помощью xamarin. И я не могу заставить приложение iOS открываться по ссылке (универсальные ссылки) в сафари или из почтового клиента. Может кто-нибудь сказать мне, что я, возможно, делаю неправильно?

Я использую:

  • Visual studio 2019 (updated) on windows
    • I have enabled auto provisioning
  • Аренда mac через macincloud для компиляции исходников (bigSur)
  • Тестирование на iPad последней версии iOS14

В Entitlements.plist я добавил:

<?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>keychain-access-groups</key>
    <array>
        <string>$(AppIdentifierPrefix)com.redacted.redacted</string>
    </array>
    <key>com.apple.developer.networking.wifi-info</key>
    <true/>
    <key>com.apple.developer.associated-domains</key>
    <array>
        <string>applinks:mydomain.nl</string>
        <string>applinks:*.mydomain.nl</string>
    </array>
</dict>
</plist>

Где mydomain является действительным доменом, конечно. Я пробовал ?mode=developer, но мой домен общедоступен, поэтому в этом нет необходимости. Также я не могу перевести свой iPad в режим разработчика, потому что я на Windows.

На веб-сервере я добавил папку .well-know с ассоциацией сайта-приложения-яблока со следующим:

{
    "applinks": {
        "apps": [],
        "details": [{
            "appID": "redacted.com.redacted.redacted",
            "components": [

                {
                    "/": "/verify_email/*",
                    "comment": "Matches any URL whose path starts with /verify_email/"
                }
            ],
            "paths": [
                "/verify_email/*"
            ]
        }]
    }
}

компоненты для iOS 14 и пути для устройств до iOS 14

https://branch.io/resources/aasa-validator/ успешно проверяет все:

Your domain is valid (valid DNS).
Your file is served over HTTPS.
Your server does not return error status codes greater than 400.
Your file's 'content-type' header was found :)
Your JSON is validated.

У меня такое чувство, что я что-то упускаю. Включение типов URL работает как шарм. Но мне не нравится использовать такие URL-адреса, как myapp://mydomain.nl/verify_email/abcd.

Заранее спасибо!

Ник

[править1]

Фильтр в журнале устройств на «swcd» дает мне следующую ошибку: Time Device Name Type PID Tag Message Jul 26 16:26:00 iPad-van-Nick Error 233 swcd Error getting enterprise-managed associated domains data. If this device is not enterprise-managed, this is normal: Error Domain=SWCErrorDomain Code=1701 "Failed to get associated domain data from ManagedConfiguration framework." UserInfo={NSDebugDescription=Failed to get associated domain data from ManagedConfiguration framework., Line=298, Function=<private>}


person nick    schedule 26.07.2021    source источник


Ответы (1)


Недавно я написал об этом сообщение в блоге, если вам интересно: https://blog.ostebaronen.dk/2021/04/ios-applinks.html

С чем я боролся, так это с содержимым файла ассоциации сайта-приложения-яблока, где Apple не предоставляет схему JSON для проверки его содержимого. Я пробовал несколько форматов, которые они также предоставляют в документах, в конце концов у меня получилось работать со следующим содержимым:

{
    "applinks": {
        "apps": [],
        "details": [
            {
                "appID": "<app id prefix>.<bundle id>",
                "paths": [ "/pin/*"]
            }
        ]
    }
}

Это работает для URL-адреса, который соответствует чему-то вроде: https://trackman.com/pin/123456. Кроме того, убедитесь, что ваш appID соответствует вашему приложению.

Формат с компонентами и путями у меня вообще не работал.

person Cheesebaron    schedule 26.07.2021
comment
Я пробовал несколько форматов. Я заметил, что использование путей — это «старый» способ. Документы описывают, что мне нужно использовать компоненты. Сначала я попытался использовать пути, чтобы позже узнать, что они были изменены в iOS 14. Поэтому я попытался использовать компоненты и комбинированный вариант, который вы видите выше. developer.apple.com/documentation/xcode/ AppID и bundle_id (связанный точкой) был скопирован со страницы идентификатора на сайте developer.apple.com. Вы не знаете, могу ли я проверить swcd (или его вывод) при использовании Windows? - person nick; 26.07.2021
comment
В журнале устройства отфильтровал «swcs» и увидел эту ошибку: Время Имя устройства Тип Тег PID Сообщение 26 июля 16:06:25 iPad-van-Nick Ошибка 233 swcd Ошибка при получении данных связанных доменов, управляемых предприятием. Если это устройство не управляется предприятием, это нормально: Error Domain=SWCErrorDomain Code=1701 Не удалось получить связанные данные домена из среды ManagedConfiguration. UserInfo={NSDebugDescription=Не удалось получить связанные данные домена из среды ManagedConfiguration., Line=298, Function=‹private›} - person nick; 26.07.2021
comment
Возможно, у вас есть файл robots.txt, который запрещает бот Apple? См.: stackoverflow.com/a/59308939/368379 - person Cheesebaron; 26.07.2021
comment
Нет, я не знаю. Если я заполню свой subdomain.domain.nl, чтобы проверить search.developer.apple.com/ appsearch-validation-tool, который может сканировать робот. Я вижу, что получаю сообщение об ошибке Link to Application Action required Could not extract required information for application links. Learn how to implement the recommended Universal Links. Error no apps associated with url, но я думаю, что это потому, что приложение еще не опубликовано? - person nick; 27.07.2021
comment
Я не уверен, что этот инструмент вообще работает. Потому что у меня есть универсальные ссылки на приложения, работающие в нескольких приложениях, и этот инструмент говорит, что выдает ту же ошибку для этих доменов. - person Cheesebaron; 27.07.2021
comment
Я так и думал. Много читал об этих проблемах, и это, кажется, так. Поскольку я использую поддомен, у меня есть подозрение, что мне нужно установить ассоциацию сайта-приложения-яблока и в главном домене. Так что позже в этот день я перемещаю свой веб-сервер и буду исследовать эту проблему дальше. Думаю, я перепробовал все комбинации, возможные на данный момент. - person nick; 27.07.2021
comment
К сожалению, это не имело значения. Я удалил все сертификаты, профили, идентификаторы, установил файл apple-app-site-association в корень сервера, чтобы домен без поддомена и www. субдомен также имеет файл. - person nick; 28.07.2021