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

React native 在React Native中运行时获取捆绑包标识符的简单方法?,react-native,React Native,我们遇到了一个问题,如果我们在运行时在RN应用程序中知道bundle标识符,这个问题就可以解决。我们已经看到了一些库,但不希望包含整个库来完成这一点。有没有一种简单的方法可以在代码中获取这些信息 Thanx看起来像是库使用本机iOS和Android代码来返回应用程序包标识符,这意味着react native在javascript中不提供该标识符。您可以使用React Native的API将包id从Java或Objective C发送到javascript(链接文档中有一节介绍如何导出常量值) 这

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


Thanx

看起来像是库使用本机iOS和Android代码来返回应用程序包标识符,这意味着react native在javascript中不提供该标识符。您可以使用React Native的API将包id从Java或Objective C发送到javascript(链接文档中有一节介绍如何导出常量值)

这里还有一些react native device info中关于如何检索捆绑包标识符的片段

在Android(RNDeviceModule.java)上:

在iOS(RNDeviceInfo.m)上—请记住idk objective-c,因此此代码段可能无法工作:

[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleIdentifier"] ?: [NSNull null]
此外,如果您当前正在使用expo,则使用expo.Constants:

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

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

您可以从
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;

在mac电脑上,您可以在“常规”选项卡中看到它

你也可以使用

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

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

如果您仍在应用程序中使用react native fs,您可以执行以下稍微难看的操作来获取捆绑包Id:

import RNFS from 'react-native-fs';

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

}

谢谢您的意见。是的,关于react本机设备信息,我们得出了类似的结论。我们可能不得不使用它,或者尝试解析出他们的解决方案。虽然很凌乱,但可能有用。我只是希望有人知道更简单的事情。不,我们不用世博会。谢谢你提供的信息。这并不是我想要的,但它成功了,这就是我们最终要做的。
import RNFS from 'react-native-fs';

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