bitmovin-player-react-native
Version:
Official React Native bindings for Bitmovin's mobile Player SDKs.
59 lines (58 loc) • 2.49 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const config_plugins_1 = require("expo/config-plugins");
const isTV = !!process.env.EXPO_TV;
const withBitmovinIosConfig = (config, { playerLicenseKey, features }) => {
const offlineFeatureConfig = typeof features.offline === 'object'
? features.offline
: {
android: {
isEnabled: !!features.offline,
externalStoragePermission: false,
},
ios: { isEnabled: !!features.offline },
};
const googleCastIosConfig = features.googleCastSDK?.ios
? typeof features.googleCastSDK.ios === 'string'
? { version: features.googleCastSDK.ios }
: features.googleCastSDK.ios
: null;
config = (0, config_plugins_1.withInfoPlist)(config, (config) => {
config.modResults['BitmovinPlayerLicenseKey'] = playerLicenseKey;
if (features.backgroundPlayback ||
features.airPlay ||
features.pictureInPicture) {
let backgroundModes = new Set(config.modResults['UIBackgroundModes'] || []);
backgroundModes.add('audio');
config.modResults['UIBackgroundModes'] = Array.from(backgroundModes);
}
if (!isTV) {
if (offlineFeatureConfig?.ios?.isEnabled) {
config.modResults['BitmovinPlayerOfflineSupportEnabled'] = true;
}
if (googleCastIosConfig) {
const appId = googleCastIosConfig.appId || 'FFE417E5';
const localNetworkUsageDescription = googleCastIosConfig.localNetworkUsageDescription ||
'${PRODUCT_NAME} uses the local network to discover Cast-enabled devices on your WiFi network.';
config.modResults['NSBonjourServices'] = [
'_googlecast._tcp',
`_${appId}._googlecast._tcp`,
];
config.modResults['NSLocalNetworkUsageDescription'] =
localNetworkUsageDescription;
}
}
return config;
});
if (!isTV) {
config = (0, config_plugins_1.withPodfileProperties)(config, (config) => {
if (googleCastIosConfig) {
config.modResults['BITMOVIN_GOOGLE_CAST_SDK_VERSION'] =
googleCastIosConfig.version;
}
return config;
});
}
return config;
};
exports.default = withBitmovinIosConfig;