小编Noa*_*ach的帖子

在运行时为 WebView 请求摄像头权限

我想在 Android WebView 上的 PWA 中使用二维码扫描仪。

  • PWA 在 chrome 浏览器上按预期工作。
  • 我确实有在应用程序 -> 应用程序名称 -> 权限下设置相机的权限
  • minSdkVersion 26targetSdkVersion 28
  • 在搭载 Android 9 的华为手机上测试

问题是权限似乎没有被授予。此外,权限请求会重复多次。

安卓代码

显现

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-feature
            android:name="android.hardware.camera"
            android:required="true" />
Run Code Online (Sandbox Code Playgroud)

根据上一个问题的答案,我在 WebViewHelper 类中有此代码

lateinit var webkitPermissionRequest : PermissionRequest
...
webView.webChromeClient = object : WebChromeClient() {

    override fun onPermissionRequest(request: PermissionRequest) {
        webkitPermissionRequest = request
        val requestedResources = request.resources
        for (r in requestedResources) {
            if (r == …
Run Code Online (Sandbox Code Playgroud)

android android-webview android-permissions

5
推荐指数
1
解决办法
5730
查看次数

Firefox 中的 WebRTC 事件

我在 Chrome 中有一个可用的 WebRTC 连接。它使用 1 个数据通道作为聊天应用程序的一部分。

我还想支持 Firefox,因此我需要更改一些不支持的事件:对于RTCPeerConnection以及DataChannel

对数据通道的更改按预期进行:

    //chrome implenetation
    dc.onopen = this.conncectionStats.bind(this);
    dc.onmessage = onMessage;
    // chrome and firefox
    dc.addEventListener('open', (event) => {
        this.conncectionStats.bind(this)
    });
    dc.addEventListener('message', (event) => {
        onMessage(event)
    });
Run Code Online (Sandbox Code Playgroud)

但是,更改 PeerConnection 时会出现问题:

    // chrome implenetation
    pc.onconnectionstatechange  = this.onConnectionStateChange.bind(this);
    // chrome and firefox
    pc.addEventListener('onconnectionstatechange', (event) => {
        console.log("onconnectionstatechange fired")
        this.onConnectionStateChange.bind(this);
    })
Run Code Online (Sandbox Code Playgroud)

该事件从未发生。有什么想法为什么会出现这种情况吗?

该事件应该是正确的,但另一方面,MDN Web Docs上缺少文档。

javascript firefox events webrtc

5
推荐指数
1
解决办法
839
查看次数

Firebase 管理 SDK:未获取访问令牌

目标是让我的 Express 服务器使用 Firebase Cloud Messaging (FCM) 发送推送通知。

问题是admin SDK的初始化似乎不起作用。代码是用 JavaScript 编写的,节点版本是 10.16.0,firebase-admin 版本是 8.3.0,服务器在最新的 Ubuntu 上运行。

我按照 firebase 指南设置了管理 SDK: https ://firebase.google.com/docs/admin/setup#initialize_the_sdk

设置了 GOOGLE_APPLICATION_CREDENTIALS 环境变量,并尝试使用该变量打开文件:

nano $GOOGLE_APPLICATION_CREDENTIALS
Run Code Online (Sandbox Code Playgroud)

一次

admin.messaging().send(message)
Run Code Online (Sandbox Code Playgroud)

被调用时,会抛出以下错误:

Error sending message: { Error: Credential implementation provided to initializeApp() via the "credential" property failed to fetch a valid Google OAuth2 access token with the following error: "Error fetching access token: Error while making request: getaddrinfo ENOTFOUND metadata.google.internal metadata.google.internal:80. Error code: ENOTFOUND".
    at FirebaseAppError.FirebaseError [as constructor] (/local/home/user/node_modules/firebase-admin/lib/utils/error.js:42:28)
    at FirebaseAppError.PrefixedFirebaseError …
Run Code Online (Sandbox Code Playgroud)

node.js firebase firebase-cloud-messaging firebase-admin

5
推荐指数
1
解决办法
7802
查看次数