在 React Native 中运行时获取包标识符的简单方法?

Kev*_*vin 8 react-native

我们遇到了一个问题,如果我们知道 RN 应用程序运行时的包标识符,就可以解决这个问题。我们已经见过一些库,但宁愿不包含整个库来完成这件事。有没有一种简单的方法可以在代码中获取这些信息?

谢谢

Fad*_*lam 13

在 Mac 上,您可以在常规选项卡中看到它 在此输入图像描述

你也可以使用

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

console.log("@ device   ",DeviceInfo.getBundleId())
Run Code Online (Sandbox Code Playgroud)


geo*_*oot 5

似乎像react-native-device-info这样的库使用本机iOS和Android代码来返回应用程序包标识符,这意味着react-native在javascript中不提供该标识符。您可以使用 React Native 的本机模块API 将包 id 从 Java 或 Objective C 发送到 javascript(它们在链接文档中有一个关于如何导出常量值的部分)。

这里还有一些来自react-native-device-info的片段,介绍了他们如何检索包标识符。

在 Android 上(RNDeviceModule.java):

String bundleId = this.reactContext.getPackageName();
Run Code Online (Sandbox Code Playgroud)

在 iOS (RNDeviceInfo.m) 上 - 请记住 idk Objective-c,因此此代码段可能不起作用:

[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleIdentifier"] ?: [NSNull null]
Run Code Online (Sandbox Code Playgroud)

另外,如果您当前正在使用 expo,那么您可以使用 Expo.Constants 访问 app.json 文件

import { Constants } from 'expo';
// this will only work if you specify the bundleIdentifier in app.json
let bundleId = Constants.manifest.ios.bundleIdentifier;
Run Code Online (Sandbox Code Playgroud)

希望这篇乱七八糟的帖子能有所帮助!老实说,使用图书馆可能是值得的,但这取决于你。