如果我们在运行时知道RN应用程序中的捆绑包标识符,就会遇到可以解决的问题。我们已经看到了一些库,但是宁愿不包括整个库来完成这一件事。有没有简单的方法可以在代码中获取此信息?
感谢
答案 0 :(得分:1)
您也可以使用
import DeviceInfo from "react-native-device-info";
console.log("@ device ",DeviceInfo.getBundleId())
答案 1 :(得分:0)
似乎react-native-device-info之类的库使用本机iOS和Android代码来返回应用程序包标识符,这意味着react-native不在javascript中提供该标识符。您可以使用React Native的native-modules API将捆绑包ID从Java或Objective C发送到javascript(链接文档中有一节介绍如何导出常量值)。
这也是来自react-native-device-info的一些片段,介绍了它们如何检索捆绑包标识符。
在Android(RNDeviceModule.java)上:
String bundleId = this.reactContext.getPackageName();
在iOS(RNDeviceInfo.m)上-请记住idk Objective-c,因此此代码段可能不起作用:
[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleIdentifier"] ?: [NSNull null]
如果您当前正在使用expo,则将you can access the app.json file与Expo.Constants一起使用:
import { Constants } from 'expo';
// this will only work if you specify the bundleIdentifier in app.json
let bundleId = Constants.manifest.ios.bundleIdentifier;
希望这篇文章的混乱对您有所帮助!老实说,使用一个库可能值得,但这取决于您。
答案 2 :(得分:0)
您可以从DeviceInfo.getVersion()
根据需要将getVersion
替换为以下列表
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;
答案 3 :(得分:0)
如果您仍然在应用程序中使用react-native-fs,则可以执行以下稍微难看的黑客操作,以获取捆绑包ID:
import RNFS from 'react-native-fs';
getAppBundleIdAndroid = () =>
RNFS.DocumentDirectoryPath.replace(/.+\/(.+?)\/files/, '$1');
}