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
4 Réponses :
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.
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.
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;
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 >