首页 > 解决方案 > IndexedDB 在 WebView 中不起作用 - 为什么?

问题描述

我有一个需要使用本地存储(IndexedDB)的团队应用程序。

在最常见的浏览器上一切正常:Chrome、Firefox,但是当我尝试将应用程序与适用于 Teams 的 Android 应用程序一起使用时,出现问题:“应用程序的正确运行必须允许访问 IndexedDB”。

Android 版本:10 - WebView 版本:81.0.4044.138

从我的角度来看,这与使用 WebView 进行本地存储的权限有关

这是我的代码:

if (window.indexedDB) {

  var request = indexedDB.open('__mydb', 2);
    request.onerror = function (event) {
      alert('It is necessary for the correct functioning of the app to allow access to IndexedDB.');
    };
    request.onsuccess = function (event) {
      mydb = event.target.result;

      try {
        console.log('Database opened, checking existence of table');
        var objectStore = mydb.transaction([tableName], 'readwrite')
          .objectStore(tableName);

        console.log('Table exists. Proceeding to save data');
        saveTokenDataIndexedDB(objectStore);

        console.log('All done, going to app');
        goToApp();
      } catch (e) {
        console.log(e);
      }
    };
 }

这是我的 Teams 应用程序的清单文件:

{
  "$schema": "https://developer.microsoft.com/en-us/json-schemas/teams/v1.2/MicrosoftTeams.schema.json",
  "manifestVersion": "1.0",
  "packageName": "XXXXXX",
  "id": "29bcd6f4-XXXXXX-4111-820b-XXXXXXXXXXX",
  "version": "0.1",
  "developer": {
    "name": "XXXXXXXXXXXXX",
    "websiteUrl": "https://products.office.com/en-us/sharepoint/collaboration",
    "privacyUrl": "https://privacy.microsoft.com/en-us/privacystatement",
    "termsOfUseUrl": "https://www.microsoft.com/en-us/servicesagreement"
  },
  "name": {
    "short": "XXXXXXXXXXXX"
  },
  "description": {
    "short": "XXXXXXXXXXXXX",
    "full": "XXXXXXXXXXXXXXXX"
  },
  "icons": {
    "outline": "XXXXXXXXXXXX_outline.png",
    "color": "XXXXXXXXXXXXX_color.png"
  },
  "accentColor": "#004578",
  "configurableTabs": [
    {
      "configurationUrl": "https://{teamSiteDomain}{teamSitePath}/_layouts/15/TeamsLogon.aspx?SPFX=true&dest={teamSitePath}/_layouts/15/teamshostedapp.aspx%3FopenPropertyPane=true%26teams%26componentId=XXXXX-eadc-4020-XXXX-edea2c24753b%26forceLocale={locale}",
      "canUpdateConfiguration": true,
      "scopes": [
        "team"
      ]
    }
  ],
  "staticTabs": [
    {
      "entityId": "XXXXX",
      "name": "XXXXXXXXX",
      "contentUrl": "https://{teamSiteDomain}/_layouts/15/TeamsLogon.aspx?SPFX=true&dest=/_layouts/15/teamshostedapp.aspx%3Fteams%26personal%26componentId=XXXXXXXXX-eadc-4020-b4e2-XXXXXXXb%26forceLocale={locale}",
      "scopes": [
        "personal"
      ]
    }
  ],
  "validDomains": [
    "*.login.microsoftonline.com",
    "*.sharepoint.com",
    "*.sharepoint-df.com",
    "spoppe-a.akamaihd.net",
    "spoprod-a.akamaihd.net",
    "resourceseng.blob.core.windows.net",
    "msft.spoppe.com"
  ],
  "webApplicationInfo": {
    "resource": "https://{teamSiteDomain}",
    "id": "XXXXXXXX-eadc-4020-b4e2-XXXXXXXXXX"
  }
}

我坚持这一点,如果有人可以给我一个线索,我将不胜感激。

问候

标签: androidandroid-webviewindexeddbmicrosoft-teams

解决方案


推荐阅读