@cjblack/expo-audio-stream
Version:
Expo Play Audio Stream module
29 lines (28 loc) • 1.69 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const config_plugins_1 = require("@expo/config-plugins");
const MICROPHONE_USAGE = 'Allow $(PRODUCT_NAME) to access your microphone';
const withRecordingPermission = (config, existingPerms) => {
if (!existingPerms) {
console.warn('No previous permissions provided');
}
config = (0, config_plugins_1.withInfoPlist)(config, (config) => {
config.modResults['NSMicrophoneUsageDescription'] = config.modResults['NSMicrophoneUsageDescription'] || MICROPHONE_USAGE;
// Add audio to UIBackgroundModes to allow background audio recording
const existingBackgroundModes = config.modResults.UIBackgroundModes || [];
if (!existingBackgroundModes.includes('audio')) {
existingBackgroundModes.push('audio');
}
config.modResults.UIBackgroundModes = existingBackgroundModes;
return config;
});
config = (0, config_plugins_1.withAndroidManifest)(config, (config) => {
const mainApplication = config_plugins_1.AndroidConfig.Manifest.getMainApplicationOrThrow(config.modResults);
config_plugins_1.AndroidConfig.Manifest.addMetaDataItemToMainApplication(mainApplication, 'android.permission.RECORD_AUDIO', MICROPHONE_USAGE);
// Add FOREGROUND_SERVICE permission for handling background recording
config_plugins_1.AndroidConfig.Manifest.addMetaDataItemToMainApplication(mainApplication, 'android.permission.FOREGROUND_SERVICE', 'This apps needs access to the foreground service to record audio in the background');
return config;
});
return config;
};
exports.default = withRecordingPermission;