Created
April 15, 2018 09:37
-
-
Save lokeshjain2008/427e5e3e735b243266788a858801c9d4 to your computer and use it in GitHub Desktop.
Ionic cordova-plugin-fcm error fix
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env node | |
'use strict'; | |
var fs = require('fs'); | |
var path = require('path'); | |
fs.ensureDirSync = function (dir) { | |
if (!fs.existsSync(dir)) { | |
dir.split(path.sep).reduce(function (currentPath, folder) { | |
currentPath += folder + path.sep; | |
if (!fs.existsSync(currentPath)) { | |
fs.mkdirSync(currentPath); | |
} | |
return currentPath; | |
}, ''); | |
} | |
}; | |
var config = fs.readFileSync('config.xml').toString(); | |
var name = getValue(config, 'name'); | |
var IOS_DIR = 'platforms/ios'; | |
var ANDROID_DIR = 'platforms/android'; | |
var PLATFORM = { | |
IOS: { | |
dest: [ | |
IOS_DIR + '/' + name + '/Resources/GoogleService-Info.plist', | |
IOS_DIR + '/' + name + '/Resources/Resources/GoogleService-Info.plist' | |
], | |
src: [ | |
'GoogleService-Info.plist', | |
IOS_DIR + '/www/GoogleService-Info.plist', | |
'www/GoogleService-Info.plist' | |
] | |
}, | |
ANDROID: { | |
dest: [ | |
ANDROID_DIR + '/google-services.json', | |
ANDROID_DIR + '/app/google-services.json', | |
], | |
src: [ | |
'google-services.json', | |
ANDROID_DIR + '/assets/www/google-services.json', | |
'www/google-services.json' | |
], | |
stringsXml: ANDROID_DIR + '/app/src/main/res/values/strings.xml' | |
} | |
}; | |
// Copy key files to their platform specific folders | |
if (directoryExists(IOS_DIR)) { | |
copyKey(PLATFORM.IOS); | |
} | |
if (directoryExists(ANDROID_DIR)) { | |
copyKey(PLATFORM.ANDROID, updateStringsXml) | |
} | |
function updateStringsXml(contents) { | |
var json = JSON.parse(contents); | |
var strings = fs.readFileSync(PLATFORM.ANDROID.stringsXml).toString(); | |
// strip non-default value | |
strings = strings.replace(new RegExp('<string name="google_app_id">([^\@<]+?)</string>', 'i'), ''); | |
// strip non-default value | |
strings = strings.replace(new RegExp('<string name="google_api_key">([^\@<]+?)</string>', 'i'), ''); | |
// strip empty lines | |
strings = strings.replace(new RegExp('(\r\n|\n|\r)[ \t]*(\r\n|\n|\r)', 'gm'), '$1'); | |
// replace the default value | |
strings = strings.replace(new RegExp('<string name="google_app_id">([^<]+?)</string>', 'i'), '<string name="google_app_id">' + json.client[0].client_info.mobilesdk_app_id + '</string>'); | |
// replace the default value | |
strings = strings.replace(new RegExp('<string name="google_api_key">([^<]+?)</string>', 'i'), '<string name="google_api_key">' + json.client[0].api_key[0].current_key + '</string>'); | |
fs.writeFileSync(PLATFORM.ANDROID.stringsXml, strings); | |
} | |
function copyKey(platform, callback) { | |
for (var i = 0; i < platform.src.length; i++) { | |
var file = platform.src[i]; | |
if (fileExists(file)) { | |
try { | |
var contents = fs.readFileSync(file).toString(); | |
try { | |
platform.dest.forEach(function (destinationPath) { | |
var folder = destinationPath.substring(0, destinationPath.lastIndexOf('/')); | |
fs.ensureDirSync(folder); | |
fs.writeFileSync(destinationPath, contents); | |
}); | |
} catch (e) { | |
// skip | |
} | |
callback && callback(contents); | |
} catch (err) { | |
console.log(err) | |
} | |
break; | |
} | |
} | |
} | |
function getValue(config, name) { | |
var value = config.match(new RegExp('<' + name + '>(.*?)</' + name + '>', 'i')); | |
if (value && value[1]) { | |
return value[1] | |
} else { | |
return null | |
} | |
} | |
function fileExists(path) { | |
try { | |
return fs.statSync(path).isFile(); | |
} catch (e) { | |
return false; | |
} | |
} | |
function directoryExists(path) { | |
try { | |
return fs.statSync(path).isDirectory(); | |
} catch (e) { | |
return false; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
For more please the below link