Не удалось проверить ссылку на приложение 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/, проверка ссылки приложения успешно завершена.