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

时间:2019-01-03 17:37:43

标签: react-native

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

感谢

4 个答案:

答案 0 :(得分:1)

在Mac上,您可以在常规标签中看到它 enter image description here

您也可以使用

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');

}