| /* |
| * Author: Derek Chia <snipking@gmail.com> |
| * Cordova plugin after hook to disable `Push Notification` capability for XCode 8 |
| */ |
| |
| const fs = require('fs'); |
| const path = require('path'); |
| let commonFuncs = require('./common'); |
| |
| /** |
| * remove APNS env from cordova project Entitlements-Debug.plist and Entitlements-Release.plist |
| * This two file will work when xcode archive app |
| */ |
| let disablePushNotificationForCI = (basePath, xcodeprojName) => { |
| commonFuncs.removeAPNSinEntitlements(basePath + xcodeprojName + '/Entitlements-Debug.plist'); |
| commonFuncs.removeAPNSinEntitlements(basePath + xcodeprojName + '/Entitlements-Release.plist'); |
| } |
| |
| /** |
| * remove APNS env to entitlement file; disable Push Notification capability in .pbxproj file |
| * This two file will work when xcode archive app |
| */ |
| let disablePushNotificationForXCode = (entitlementsPath, pbxprojPath) => { |
| /** |
| * remove APNS env to entitlement file |
| */ |
| if( fs.existsSync(entitlementsPath) ) { |
| commonFuncs.removeAPNSinEntitlements(entitlementsPath); |
| } |
| |
| /** |
| * disable Push Notification capability in .pbxproj file |
| * equally disable "Push Notification" switch in xcode |
| */ |
| fs.readFile(pbxprojPath, "utf8", function(err, data) { |
| if (err) { |
| throw err; |
| } |
| console.log("Reading pbxproj file asynchronously"); |
| |
| // turn off Push Notification Capability |
| let re4rep = new RegExp('isa = PBXProject;(.|[\r\n])*TargetAttributes(.|[\r\n])*SystemCapabilities(.|[\r\n])*com\.apple\.Push = {(.|[\r\n])*enabled = [01]'); |
| let parts = re4rep.exec(data); |
| if(parts !== null && parts !== undefined && parts.length > 0) { |
| result = data.replace(re4rep, parts[0].substr(0, parts[0].length - 1) + '0'); |
| |
| // write result to project.pbxproj |
| fs.writeFile(pbxprojPath, result, {"encoding": 'utf8'}, function(err) { |
| if (err) { |
| throw err; |
| } |
| console.log(pbxprojPath + " written successfully"); |
| }); |
| } |
| }); |
| } |
| |
| let basePath = './platforms/ios/'; |
| let buildType = 'dev'; |
| let xcodeprojName = commonFuncs.getXcodeProjName(basePath); |
| let pbxprojPath = basePath + xcodeprojName + '.xcodeproj/project.pbxproj'; |
| let entitlementsPath = basePath + xcodeprojName + '/' + xcodeprojName + '.entitlements'; |
| |
| disablePushNotificationForCI(basePath, xcodeprojName); |
| |
| disablePushNotificationForXCode(entitlementsPath, pbxprojPath); |