API ориентации устройства не работает с локальным веб-сервером - PullRequest
0 голосов
/ 07 января 2020

При работе с Device Orientation API я заметил кое-что странное.

Следующая онлайн-демонстрация работает отлично (за исключением «compassneedscalibration»): https://www.audero.it/demo/device-orientation-api-demo.html

Но когда я клонирую Soucecode локально и предоставляю Web-страницу через локальный веб-сервер *, API, кажется, больше не доступен , Хотя использую ту же вкладку браузера. Также в консоли JavaScript не отображаются сообщения, предупреждения или ошибки.

На веб-странице указано:

событие deviceorientation не поддерживается
событие devicemotion не поддерживается
compassneedscalibration событие не поддерживается Screenshot of non working Webpage

Я что-то не так делаю? Или это предполагаемое поведение или ошибка? Мне нужно будет предоставить свое веб-приложение на локальном веб-сервере.

Я использую "Chrome 79.0.3945.93" на "Android 7.1.1; VNS-L21 Build / NMF26V"

*) python3 -m http.server

1 Ответ

0 голосов
/ 08 января 2020

Я обнаружил, что вам необходимо предоставить страницу wep через зашифрованное соединение HTTPS, чтобы получить доступ к API ориентации устройства, а также к некоторым медиаустройствам.

Простой способ предоставления страниц HTTPS во время разработки (не производства ) это простой python веб-сервер:

#!/usr/bin/env python3

# Based on http://www.piware.de/2011/01/creating-an-https-server-in-python/

# generate server.xml with the following command:
#    openssl req -new -x509 -keyout key.pem -out server.pem -days 365 -nodes
# run as follows:
#    python3 simple-https-server.py
# then in your browser, visit:
#    https://localhost:4443


import http.server
import ssl
import os

directory_of_script = os.path.dirname(os.path.abspath(__file__))

#server_address = ('localhost', 4443)
server_address = ('', 4443)
httpd = http.server.HTTPServer(server_address, http.server.SimpleHTTPRequestHandler)
httpd.socket = ssl.wrap_socket(httpd.socket,
                               server_side=True,
                               certfile=os.path.join(directory_of_script, "server.pem") ,
                               keyfile=os.path.join(directory_of_script, "key.pem"),
                               ssl_version=ssl.PROTOCOL_TLS)
httpd.serve_forever()

...