Получение ошибки: sp-react-native-in-app-updates checkNeedsUpdate (в функции обновления приложения)

Я пытаюсь добавить функцию обновления приложения в свое приложение. настраиваю все по документации

Получение этой ошибки на моем физическом устройстве (Android): [Ошибка: ошибка sp-react-native-in-app-updates checkNeedsUpdate: ошибка: com.google.android.play.core.install.InstallException: -10: ошибка установки (-10): приложение не принадлежит никому пользователь на этом устройстве. Приложение считается «принадлежащим», если оно было приобретено из Play. (https://developer.android.com/reference/com/google/android/play/core/install/model/InstallErrorCode#ERROR_APP_NOT_OWNED)]

Получение этой ошибки на эмуляторе (Android): [Ошибка: ошибка sp-react-native-in-app-updates checkNeedsUpdate: ошибка: com.google.android.play.core.install.InstallException: -6: ошибка установки (-6): загрузка/установка не разрешена , из-за текущего состояния устройства (например, низкий заряд батареи, мало места на диске, ...). (https://developer.android.com/reference/com/google/android/play/core/install/model/InstallErrorCode#ERROR_INSTALL_NOT_ALLOWED)]

Babel.config.js

module.exports = function (api) {
  api.cache(true);
  return {
    presets: ['babel-preset-expo'],
    plugins: [
      [
        'module-resolver',
        {
          root: ['.'],
          alias: {
            'react-native-device-info': './react-native-device-info.js'
          }
        }
      ],
      'nativewind/babel',
      'react-native-reanimated/plugin'],
    env: {
      production: {
        plugins: ['react-native-paper/babel'],
      },
    },
  };
};

реакция-native-device-info.js

import Constants from "expo-constants"

export const getBundleId = () => {
    return Constants.expoConfig?.ios?.bundleIdentifier ?? '';
}
export const getVersion = () => {
    return Constants.expoConfig?.version
}
export default {
    getBundleId,
    getVersion,
};

checkAppUpdate.ts

import SpInAppUpdates, {
    IAUUpdateKind,
    StartUpdateOptions,
    IAUInstallStatus,
  } from "sp-react-native-in-app-updates";
  import { Platform } from "react-native";
  
  export const checkForUpdate = async () => {
    const inAppUpdates = new SpInAppUpdates(
      false// isDebug
    );
    // curVersion is optional if you don't provide it will automatically take from the app using react-native-device-info
    try {
      console.info("checking for update");
      await inAppUpdates.checkNeedsUpdate().then((result) => {
        console.info("result", result);
        try {
          if (result.shouldUpdate) {
            let updateOptions: StartUpdateOptions = {};
            if (Platform.OS === "android") {
              // android only, on iOS the user will be promped to go to your app store page
              updateOptions = {
                updateType: IAUUpdateKind.IMMEDIATE,
              };
            }
            if (Platform.OS === "ios") {
              updateOptions = {
                title: "Update available",
                message:
                  "There is a new version of the app available on the App Store, do you want to update it?",
                buttonUpgradeText: "Update",
                buttonCancelText: "Cancel",
              };
            }
            inAppUpdates.addStatusUpdateListener((downloadStatus) => {
              console.info("download status", downloadStatus);
              if (downloadStatus.status === IAUInstallStatus.DOWNLOADED) {
                console.info("downloaded");
                inAppUpdates.installUpdate();
                inAppUpdates.removeStatusUpdateListener((finalStatus) => {
                  console.info("final status", finalStatus);
                });
              }
            });
            inAppUpdates.startUpdate(updateOptions);
          }
        } catch (error) {
          console.info("nested error", error);
        }
      });
    } catch (error) {
      console.info("error", error);
    }
  };

Может ли кто-нибудь помочь мне с правильными рекомендациями по реализации? Спасибо

Я пытаюсь добавить опцию обновления в приложении, чтобы пользователи могли обновлять мое приложение через него (автоматическое всплывающее окно).

0
0
282
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В качестве предварительного условия

Чтобы протестировать функциональность обновления внутри приложения, вам необходимо сначала распространить приложение через внутренний тестовый трек в магазине Google Play.


Теперь давайте обсудим сообщение об ошибке

«com.google.android.play.core.install.InstallException: -10: Ошибка установки (-10): приложение не принадлежит ни одному пользователю на этом устройстве».

Указывает, что приложение, которое вы пытаетесь обновить, не установлено на устройстве. Это означает, что приложение не было получено из магазина Google Play, и поэтому у устройства нет необходимых разрешений для его обновления.

Чтобы решить эту проблему, вам придется добавить проверку в свой код.

try {
    getPackageManager().getPackageInfo("com.example.app", PackageManager.GET_ACTIVITIES);
} catch (PackageManager.NameNotFoundException e) {
  // App is not installed
}

Если приложение не установлено, вы можете инициировать намерение Google Play, чтобы пользователь установил приложение, используя следующий код:

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("https://play.google.com/store/apps/details?id=com.example.app"));
startActivity(intent);

Цель установщика Apk:

Intent intent = new Intent(Intent.ACTION_INSTALL_PACKAGE);
intent.setData(Uri.parse("file:///path/to/app.apk"));
startActivity(intent);

Примечание:

Это собственный код, который вы можете использовать, создав интерфейс JavaScript и вызывая его из собственного кода реагирования.

Справочная ссылка:

https://developer.android.com/reference/com/google/android/play/core/install/model/InstallErrorCode#ERROR_APP_NOT_OWNED

Спасибо. я забыл включить и использовать внутреннее тестирование.

Hasib 28.05.2024 10:42

@Хасиб, рад слышать, что ты решил проблему :-)

Bob 28.05.2024 11:14

Другие вопросы по теме

Как мне решить эту ошибку в expo React Native?
Когда я выполняю «npx create-expo-app App3», чтобы создать собственный проект реагирования, файл App.js не создается
Статические изображения не загружаются с `<ImageBackground>` после обновления до Expo SDK 51
Как сделать совместимое соответствие между реагированием и реагированием нативного кода
Общий TypeScript для управления данными Supabase
Возникла проблема при оценке проекта «:react-native-firebase_app». Слишком поздно задавать пространство имен. Он уже прочитан для настройки этого проекта
Как мне изменить цвет кнопки при нажатии в React Native?
Нужно ли мне опубликовать приложение Facebook, чтобы запустить в производство мое собственное приложение React, использующее вход в Facebook?
Как мне подключить серверную часть проекта React Native Amplify к моему интерфейсу, размещенному в мобильных магазинах?
Ошибка: [auth/missing-client-identifier] В этом запросе отсутствует действительный идентификатор приложения, проверки целостности Play и проверки reCAPTCHA не увенчались успехом