Не удалось проверить ссылку на приложение Android M

Я определяю ссылки на приложения следующим образом: AndroidManifest.xml:

<intent-filter android:autoVerify="true">
    <action android:name="android.intent.action.VIEW"/>
    <category android:name="android.intent.category.BROWSABLE"/>
    <category android:name="android.intent.category.DEFAULT"/>

    <data android:host="mysite.com" android:scheme="http"/>
    <data android:host="mysite.com" android:scheme="https"/>
    <data android:host="www.mysite.com" android:scheme="http"/>
    <data android:host="www.mysite.com" android:scheme="https"/>
</intent-filter>

Приложение правильно определяет URL-адреса хоста, но запрашивает, хочет ли пользователь открыть их в приложении или браузере, потому что проверка не удалась, как видно на консоли монитора Android:

01-17 15:44:28.847 7084-30015/? I/IntentFilterIntentSvc: Verifying IntentFilter. verificationId:2 scheme:"https" hosts:"mysite.com www.mysite.com" package:"com.site.myapp.android.flavor".
01-17 15:44:29.821 7084-30015/? I/IntentFilterIntentSvc: Verification 2 complete. Success:false. Failed hosts:mysite.com,www.mysite.com.

Мой файл assetlinks.json находится по адресу mysite.com/.well-known/assetlinks.json и содержит правильное имя пакета и хэш SHA256. Это также доступно через http и https. Я проверил, совпадает ли хэш SHA из хранилища ключей, извлекая файл CERT.RSA из APK и используя keytool -printcert -file CERT.RSA

Я пробовал звонить https://digitalassetlinks.googleapis.com/v1/statements:list?source.web.site=https://domain1:port&relation=delegate_permission/common.handle_all_urls а также с помощью тестера списка утверждений на сайте Google, и оба возвращают OK.

Я использую устройство Nexus под управлением Android 7 для тестирования.

Согласно документации, я сделал все необходимое для работы приложения. Есть что-нибудь еще, что я могу проверить?

Мой сервер работает под управлением IIS в Windows 7, я уже добавил application/json как mimetype в файлы IIS и web.config. Может ли это быть сбой, потому что я использую самоподписанный сертификат SSL?

РЕДАКТИРОВАТЬ: SingleHostAsyncVerifier также регистрирует сбой проверки. (заменил mysite на пример и хэш SHA)

01-17 15:44:29.817 7084-30017/? I/SingleHostAsyncVerifier: Verification result: checking for a statement with source a <
a: "https://www.example.com"
>
, relation delegate_permission/common.handle_all_urls, and target b <
a: "com.mypackage.flavor"
b <
a: "(SHA256 hash)"
>
>
--> false.
01-17 15:44:29.820 7084-30016/? I/SingleHostAsyncVerifier: Verification result: checking for a statement with source a <
a: "https://example.com"
>
, relation delegate_permission/common.handle_all_urls, and target b <
a: "com.mypackage.flavor"
b <
a: "(SHA256 hash)"
>
>
--> false.

1 ответ

Решение

Несмотря на то, что в документации ссылок приложений не упоминается, ссылки приложений требуют, чтобы на сервере был действительный сертификат SSL от общедоступного или доверенного центра сертификации.

После перехода на SSL-сертификат, выданный https://www.thawte.com/, проверка ссылки приложения успешно завершена.

Другие вопросы по тегам