UNPKG

react-native-notificare-push

Version:
64 lines (63 loc) 3.61 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.setupNotificationServiceExtension = setupNotificationServiceExtension; const fs_1 = __importDefault(require("fs")); const path_1 = __importDefault(require("path")); const constantsIOS_1 = require("../../constants/constantsIOS"); const xcode_project_1 = require("../utils/xcode-project"); const plugin_1 = require("react-native-notificare/lib/plugin"); async function setupNotificationServiceExtension(proj, projRoot, appBundleID, deploymentTarget) { const extFiles = [ 'NotificationService.swift', 'NotificationServiceExtension-Info.plist', ]; const pluginDir = require.resolve('react-native-notificare-push/package.json'); const extFilesDir = path_1.default.join(pluginDir, `../lib/plugin/ios/${constantsIOS_1.NOTIFICARE_NOTIFICATION_SERVICE_EXTENSION}/`); const isExtExists = fs_1.default.existsSync(`${projRoot}/ios/${constantsIOS_1.NOTIFICARE_NOTIFICATION_SERVICE_EXTENSION}`); const isTargetExists = proj.pbxTargetByName(constantsIOS_1.NOTIFICARE_NOTIFICATION_SERVICE_EXTENSION); try { if (!isExtExists) { (0, plugin_1.copyResources)(extFilesDir, `${projRoot}/ios/${constantsIOS_1.NOTIFICARE_NOTIFICATION_SERVICE_EXTENSION}`); } if (!isTargetExists) { const extTarget = proj.addTarget(constantsIOS_1.NOTIFICARE_NOTIFICATION_SERVICE_EXTENSION, 'app_extension'); const extGroup = proj.addPbxGroup(extFiles, constantsIOS_1.NOTIFICARE_NOTIFICATION_SERVICE_EXTENSION, constantsIOS_1.NOTIFICARE_NOTIFICATION_SERVICE_EXTENSION); const groups = proj.hash.project.objects.PBXGroup; // Making files visible in Xcode Object.keys(groups).forEach(function (key) { if (groups[key].name === undefined) { proj.addToPbxGroup(extGroup.uuid, key); } }); proj.addBuildPhase(['NotificationService.swift'], 'PBXSourcesBuildPhase', 'Sources', extTarget.uuid); proj.addBuildPhase([], 'PBXResourcesBuildPhase', 'Resources', extTarget.uuid); } const extConfigRefs = (0, xcode_project_1.getConfigReferences)(proj, constantsIOS_1.NOTIFICARE_NOTIFICATION_SERVICE_EXTENSION); initialSetup(proj, extConfigRefs, constantsIOS_1.NOTIFICARE_NOTIFICATION_SERVICE_EXTENSION, appBundleID); updateDeploymentTarget(proj, extConfigRefs, deploymentTarget); console.log(`Successfully ${!isExtExists ? 'added' : 'updated'} Notification Service Extension.`); return proj; } catch (e) { console.error(`Failed to ${!isExtExists ? 'add' : 'update'} Notification Service Extension: ${e}`); } } function initialSetup(proj, extConfigRefs, extName, appBundleID) { extConfigRefs.forEach((ref) => { const buildSettings = proj.hash.project.objects.XCBuildConfiguration[ref].buildSettings; if (appBundleID) { buildSettings.PRODUCT_BUNDLE_IDENTIFIER = `${appBundleID}.NotificationServiceExtension`; } buildSettings.PRODUCT_NAME = `${extName}`; buildSettings.SWIFT_VERSION = '5.0'; }); } function updateDeploymentTarget(proj, extConfigRefs, deploymentTarget) { extConfigRefs.forEach((ref) => { const buildSettings = proj.hash.project.objects.XCBuildConfiguration[ref].buildSettings; buildSettings.IPHONEOS_DEPLOYMENT_TARGET = deploymentTarget || '13.4'; }); }