Dark Mode

Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

rustore-dev/react-native-rustore-update-sdk

Repository files navigation

react-native-rustore-update

React Native RuStore SDK dlia obnovleniia prilozheniia

Obshchee

RuStore In-app updates SDK pomogaet podderzhivat' aktual'nuiu versiiu vashego prilozheniia na ustroistve pol'zovatelia.

Kogda pol'zovateli podderzhivaiut prilozhenie v aktual'nom sostoianii, oni mogut oprobovat' novye funktsii, a takzhe vospol'zovat'sia uluchsheniiami proizvoditel'nosti i ispravleniiami oshibok.

Vy mozhete ispol'zovat' RuStore In-app updates SDK dlia otobrazheniia protsessa obnovleniia prilozheniia, kotoryi obespechivaet fonovuiu zagruzku i ustanovku obnovleniia s kontrolem sostoianiia. Pol'zovatel' smozhet ispol'zovat' vashe prilozhenie v moment zagruzki obnovleniia.

Primer realizatsii

Dlia togo, chtoby uznat' kak pravil'no integrirovat' RuStore In-app updates, rekomenduetsia oznakomit'sia s prilozheniem-primerom v papke example.

Usloviia korrektnoi raboty SDK

Dlia raboty RuStore In-app updates SDK neobkhodimo sobliudenie sleduiushchikh uslovii:

  • OS Android versii 7.0 ili vyshe.
  • Na ustroistve pol'zovatelia dolzhen byt' ustanovlen RuStore.
  • Versiia RuStoreApp na ustroistve pol'zovatelia dolzhna byt' aktual'noi.
  • Prilozheniiu RuStore dolzhna byt' razreshena ustanovka prilozhenii.

Podkliuchenie v proekt

Dlia podkliucheniia paketa k proektu nuzhno vypolnit' komandu

// HTTPS
npm install git+https://git@gitflic.ru/project/rustore/react-native-rustore-update-sdk.git

// SSH
npm install git+ssh://git@gitflic.ru/project/rustore/react-native-rustore-update-sdk.git

Zapros obnovleniia

Dlia raboty mekhanizma obnovlenii neobkhodimo vypolnit' initsializatsiiu SDK

RustoreUpdateClient.init();

Proverka nalichiia obnovlenii

Prezhde chem zaprashivat' obnovlenie, prover'te, dostupno li obnovlenie dlia vashego prilozheniia. Dlia proverki nalichiia obnovlenii vyzovite metod getAppUpdateInfo(). Pri vyzove dannogo metoda proveriaiutsia sleduiushchie usloviia:

  • Na ustroistve pol'zovatelia ustanovlena aktual'naia versiia RuStore.
  • Pol'zovatel' i prilozhenie ne dolzhny byt' zablokirovany v RuStore.
  • Prilozheniiu RuStore razreshena ustanovka prilozhenii.
  • Pol'zovatel' avtorizovan v RuStore.

V otvet na dannyi metod vy poluchite ob'ekt appUpdateInfo, kotoryi budet soderzhat' v sebe informatsiiu o neobkhodimosti obnovleniia.

try {
const appUpdateInfo = await RustoreUpdateClient.getAppUpdateInfo();
console.log(appUpdateInfo);
} catch (err) {
console.log(err);
}

Ob'ekt appUpdateInfo soderzhit nabor parametrov, neobkhodimykh dlia opredeleniia dostupnosti obnovleniia:

enum InstallStatus {
UNKNOWN = 0,
DOWNLOADED = 1,
DOWNLOADING = 2,
FAILED = 3,
INSTALLING = 4,
PENDING = 5,
}

enum UpdateAvailability {
UNKNOWN = 0,
UPDATE_NOT_AVAILABLE = 1,
UPDATE_AVAILABLE = 2,
DEVELOPER_TRIGGERED_UPDATE_IN_PROGRESS = 3,
}

interface AppUpdateInfo {
updatedAt: string;
packageName: string;
updatePriority: number;
updateAvailability: UpdateAvailability;
availableVersionCode: number;
installStatus: InstallStatus;
}
  • updatedAt - data obnovleniia
  • packageName - imia paketa
  • updatePriority - prioritet obnovleniia
  • availableVersionCode - kod obnovleniia
  • updateAvailability - dostupnost' obnovleniia:
    • UNKNOWN - status po umolchaniiu.
    • UPDATE_NOT_AVAILABLE - obnovlenie ne nuzhno.
    • UPDATE_AVAILABLE - obnovlenie trebuetsia zagruzit' ili obnovlenie uzhe zagruzheno na ustroistvo pol'zovatelia.
    • DEVELOPER_TRIGGERED_UPDATE_IN_PROGRESS - obnovlenie uzhe skachivaetsia ili ustanovka uzhe zapushchena.
  • installStatus - status ustanovki obnovleniia, esli pol'zovatel' uzhe ustanavlivaet obnovlenie v tekushchii moment vremeni:
    • UNKNOWN - po umolchaniiu.
    • DOWNLOADED - skachano.
    • DOWNLOADING - skachivaetsia.
    • FAILED - oshibka.
    • INSTALLING - ustanavlivaetsia.
    • PENDING - v ozhidanii.

Zapusk skachivaniia obnovleniia vozmozhen tol'ko v tom sluchae, esli pole updateAvailability soderzhit znachenie UpdateAvailability.UPDATE_AVAILABLE.

Skachivanie obnovleniia

Posle podtverzhdeniia dostupnosti obnovleniia vy mozhete zaprosit' u pol'zovatelia skachivanie obnovleniia, no pered etim neobkhodimo zapustit' slushatel' statusa skachivaniia obnovleniia, ispol'zuia metod eventEmitter.addListener:

enum InstallStatus {
UNKNOWN = 0,
DOWNLOADED = 1,
DOWNLOADING = 2,
FAILED = 3,
INSTALLING = 4,
PENDING = 5,
}

interface InstallState {
bytesDownloaded?: number;
installErrorCode?: InstallErrorCode;
installStatus?: InstallStatus;
packageName?: string;
totalBytesToDownload?: number;
}

const listener = useRef<EmitterSubscription>();

listener.current = eventEmitter.addListener(Events.INSTALL_STATE_UPDATE, (installState: InstallState) => {
console.log(installState);
});

// ...

useEffect(() => {
return () => {
listener.current?.remove();
};
}, []);

Ob'ekt installState opisyvaet tekushchii status skachivaniia obnovleniia:

  • installStatus - status ustanovki obnovleniia, esli pol'zovatel' uzhe ustanavlivaet obnovlenie v tekushchii moment vremeni:
    • UNKNOWN - po umolchaniiu.
    • DOWNLOADED - skachano.
    • DOWNLOADING - skachivaetsia.
    • FAILED - oshibka.
    • INSTALLING - ustanavlivaetsia.
    • PENDING - v ozhidanii.
  • packageName - nazvanie paketa.
  • bytesDownloaded - kolichestvo zagruzhennykh bait.
  • totalBytesToDownload - obshchee kolichestvo bait, kotoroe neobkhodimo skachat'.
  • installErrorCode - kod oshibki vo vremia skachivaniia.

Otlozhennoe obnovlenie

Skachivanie s UI ot RuStore

Dlia zapuska skachivaniia obnovleniia prilozheniia vyzovite metod download().

try {
const resultCode = await RustoreUpdateClient.download();
console.log(resultCode);
} catch (err) {
console.log(err);
}

Esli pol'zovatel' podtverdil skachivanie obnovleniia, to resultCode budet raven ResultCode.RESULT_OK, esli otkazalsia ResultCode.RESULT_CANCELED.

Posle vyzova metoda vy mozhete sledit' za statusom skachivaniia obnovleniia v slushatele. Esli v slushatele vy poluchili status InstallStatus.DOWNLOADED, to vy mozhete vyzvat' metod ustanovki obnovleniia completeUpdate. Rekomenduem uvedomit' pol'zovatelia o gotovnosti ustanovki obnovleniia.

Prinuditel'noe obnovlenie

Dlia zapuska skachivaniia prinuditel'nogo obnovleniia prilozheniia vyzovite metod immediate().

try {
const resultCode = await RustoreUpdateClient.immediate();
console.log(resultCode);
} catch (err) {
console.log(err);
}

resultCode (Int):

  • ResultCode.RESULT_OK (-1) -- obnovlenie vypolneno, kod mozhet ne byt' poluchen, t. k. prilozhenie v moment obnovleniia zavershaetsia.
  • ResultCode.RESULT_CANCELED (0) -- flou prervano pol'zovatelem ili proizoshla oshibka. Predpolagaetsia, chto pri poluchenii etogo koda sleduet zavershit' rabotu prilozheniia.
  • ResultCode.ACTIVITY_NOT_FOUND (2) -- RuStore ne ustanovlen, libo ustanovlena versiia, kotoraia ne podderzhivaet prinuditel'noe obnovlenie (RuStore versionCode < 191).

throwable -- oshibka starta stsenariia obnovleniia.

Pri uspeshnom obnovlenii dal'neishikh deistvii ne trebuetsia.

Tikhoe obnovlenie

Dlia tikhogo obnovleniia rekomenduetsia realizovat' svoi interfeis.

Dlia zapuska skachivaniia tikhogo obnovleniia prilozheniia vyzovite metod silent().

try {
const resultCode = await RustoreUpdateClient.silent();
console.log(resultCode);
} catch (err) {
console.log(err);
}

Esli pol'zovatel' podtverdil skachivanie obnovleniia, to resultCode budet raven ResultCode.RESULT_OK, esli otkazalsia ResultCode.RESULT_CANCELED.

Posle vyzova metoda vy mozhete sledit' za statusom skachivaniia obnovleniia v slushatele. Esli v slushatele vy poluchili status InstallStatus.DOWNLOADED, to vy mozhete vyzvat' metod ustanovki obnovleniia completeUpdate. Rekomenduem uvedomit' pol'zovatelia o gotovnosti ustanovki obnovleniia.

Podrobnee o stsenariiakh mozhno uznat' na https://www.rustore.ru/help/.

Ustanovka obnovleniia

Posle zaversheniia skachivaniia apk-faila obnovleniia vy mozhete zapustit' ustanovku obnovleniia. Dlia zapuska ustanovki obnovleniia vyzovite metod completeUpdate().

try {
await RustoreUpdateClient.completeUpdate();
} catch (err) {
console.log(err);
}

Obnovlenie proiskhodit cherez nativnyi instrument Android. V sluchae uspeshnogo obnovleniia prilozhenie zakroetsia.

Vozmozhnye oshibki

Spisok vozmozhnykh oshibok:

enum InstallErrorCode {
UPDATE_ERROR_DOWNLOAD = 4002,
UPDATE_ERROR_BLOCKED = 4003,
UPDATE_ERROR_INVALID_APK = 4004,
UPDATE_ERROR_CONFLICT = 4005,
UPDATE_ERROR_STORAGE = 4006,
UPDATE_ERROR_INCOMPATIBLE = 4007,
UPDATE_ERROR_APP_NOT_OWNED = 4008,
UPDATE_ERROR_INTERNAL_ERROR = 4009,
UPDATE_ERROR_ABORTED = 4010,
UPDATE_ERROR_APK_NOT_FOUND = 4011,
UPDATE_ERROR_EXTERNAL_SOURCE_DENIED = 4012,
}
  • UPDATE_ERROR_DOWNLOAD - Oshibka pri skachivanii.
  • UPDATE_ERROR_BLOCKED - Ustanovka zablokirovanna sistemoi.
  • UPDATE_ERROR_INVALID_APK - Nekorrektnyi APK obnovleniia.
  • UPDATE_ERROR_CONFLICT - Konflikt s tekushchei versiei prilozheniia.
  • UPDATE_ERROR_STORAGE - Nedostatochno pamiati na ustroistve.
  • UPDATE_ERROR_INCOMPATIBLE - Nesovmestimo s ustroistvom.
  • UPDATE_ERROR_APP_NOT_OWNED - Prilozhenie ne kupleno.
  • UPDATE_ERROR_INTERNAL_ERROR - Vnutrenniaia oshibka.
  • UPDATE_ERROR_ABORTED - Pol'zovatel' otkazalsia ot ustanovki obnovleniia.
  • UPDATE_ERROR_APK_NOT_FOUND - apk dlia zapuska ustanovki ne naiden.
  • UPDATE_ERROR_EXTERNAL_SOURCE_DENIED - Zapusk obnovleniia zapreshchion. Naprimer, v pervom metode vernulsia otvet o tom, chto obnovlenie nedostupno, no pol'zovatel' vyzyvaet vtoroi metod.

About

React Native RuStore SDK dlia obnovleniia prilozheniia

Topics

Resources

Readme

Stars

Watchers

Forks

Packages

Contributors