UNPKG

@cjblack/expo-audio-stream

Version:
29 lines (28 loc) 1.69 kB
"use strict"; 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;