2
votes

Un moyen simple d'obtenir l'identifiant du bundle au moment de l'exécution dans React Native?

Nous avons rencontré un problème qui pourrait être résolu si nous connaissons l'identifiant du bundle au moment de l'exécution dans notre application RN. Nous avons vu quelques bibliothèques mais préférerions ne pas inclure une bibliothèque entière pour faire cette seule chose. Existe-t-il un moyen simple d'obtenir ces informations dans le code?

Merci


0 commentaires

4 Réponses :


2
votes

Il semble que des bibliothèques comme react-native-device-info utilisent code natif iOS et Android afin de renvoyer l'identifiant du bundle d'applications, ce qui signifie que react-native ne le fournit pas en javascript. Vous pouvez utiliser l'API native-modules de React Native pour envoyer le bundle id de Java ou Objective C vers javascript (ils ont une section dans les documents liés sur la façon d'exporter des valeurs constantes).

Voici également quelques extraits de react-native-device-info sur la façon dont ils ont récupéré l'identifiant du bundle.

Sur Android (RNDeviceModule.java):

import { Constants } from 'expo';
// this will only work if you specify the bundleIdentifier in app.json
let bundleId = Constants.manifest.ios.bundleIdentifier;

Sur iOS (RNDeviceInfo.m) - gardez à l'esprit idk objective-c afin que cet extrait de code ne soit pas travail:

[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleIdentifier"] ?: [NSNull null]

Aussi si vous utilisez expo actuellement, alors vous pouvez accéder au fichier app.json avec Expo.Constants:

String bundleId = this.reactContext.getPackageName();

J'espère que ce désordre d'un message aide un peu! Honnêtement, cela peut valoir la peine d'utiliser une bibliothèque, mais c'est à vous de décider.


2 commentaires

Merci de votre contribution. Ouais, nous sommes arrivés à des conclusions similaires concernant les informations sur les appareils natifs. Nous devrons peut-être l'utiliser ou essayer d'analyser leur solution. C'est compliqué, mais ça pourrait marcher. J'espérais juste que quelqu'un savait quelque chose de plus simple. Non, nous n'utilisons pas Expo. Merci pour l'info.


Ce n'est pas tout à fait ce que je voulais, mais cela a fonctionné et c'est ce que nous avons fini par faire.



0
votes

Vous pouvez l'obtenir depuis DeviceInfo.getVersion()

remplacez getVersion par la liste suivante selon vos besoins

export function getUniqueID(): string;
export function getManufacturer(): string;
export function getDeviceId(): string;
export function getSystemName(): string;
export function getSystemVersion(): string;
export function getBundleId(): string;
export function getBuildNumber(): string;
export function getVersion(): string;
export function getDeviceName(): string;


0 commentaires

4
votes

sur mac, vous pouvez le voir dans l ' onglet général entrez la description de l'image ici

vous pouvez également utiliser

import DeviceInfo from "react-native-device-info";

console.log("@ device   ",DeviceInfo.getBundleId())


0 commentaires

0
votes

Si vous utilisez de toute façon react-native-fs dans votre application, vous pouvez faire le piratage un peu laid suivant pour obtenir votre identifiant de groupe:

import RNFS from 'react-native-fs';

getAppBundleIdAndroid = () => 
    RNFS.DocumentDirectoryPath.replace(/.+\/(.+?)\/files/, '$1');

}

p >


0 commentaires