Expo Permissions возвращает статус "неопределенный" в производстве - PullRequest
1 голос
/ 30 мая 2020

В моем собственном приложении React, которое я опубликовал в Google Play Store, мне требуются разрешения Camera Roll. Это работает во время тестирования, но не в опубликованной версии приложения.

  getPermissionAsync = async () => {
    const { status } = await Permissions.askAsync(Permissions.CAMERA_ROLL);
    if (status !== "granted") {
      alert("Sorry, we need camera roll permissions to make this work!");
    }
    await this.setState({ permission: status === "granted" });
  };

  _pickMedia = async () => {
    if (this.state.permission != true) {
      await this.getPermissionAsync();
    }
    if (this.state.permission == true) {
        // get image
    }
  };

При тестировании это работает должным образом, запрашивая разрешение на доступ к фотопленке каждый раз, когда пользователь пытается загрузить изображение до тех пор, пока оно не будет получено. . Однако в производственной среде пользователю один раз предлагается разрешить использование фотопленки, и независимо от того, разрешают ли они это, появляется окно предупреждения, и пользователь не может выбрать изображение. Если они снова попытаются добавить носитель, им не будут предложены разрешения, и он снова будет предупрежден.

В соответствии с документами expo я добавил READ_EXTERNAL_STORAGE к своим разрешениям в приложении. json:

    "android": {
      "permissions": ["READ_EXTERNAL_STORAGE", "WRITE_EXTERNAL_STORAGE"],
    }

Кто-нибудь может сказать мне, почему это не работает в продакшене?

Ответы [ 2 ]

0 голосов
/ 01 июня 2020

Я не осознавал, что изменения в частях app.json не обновляются для опубликованного приложения expo publish, и вам нужно вместо этого запустить expo build. Проблема заключалась в том, что я изначально не добавил WRITE_EXTERNAL_STORAGE в разрешения, а когда я сделал это позже, я использовал expo publish для обновления приложения. Это означало, что опубликованная версия фактически не обновлялась. После запуска expo build сейчас и создания нового пакета приложений разрешения начали работать правильно.

0 голосов
/ 01 июня 2020

он не работает в производстве, потому что вы не добавили разрешение КАМЕРА. Поэтому добавьте CAMERA разрешение

"android": {
      "permissions": ["CAMERA","READ_EXTERNAL_STORAGE", "WRITE_EXTERNAL_STORAGE"],
 }
...