Compare commits
35 Commits
master
...
MOHEMM-HUA
| Author | SHA1 | Date |
|---|---|---|
|
|
6a54905e53 | 4 years ago |
|
|
dc5d23a82e | 4 years ago |
|
|
bc9c5e9deb | 4 years ago |
|
|
f2232c544a | 4 years ago |
|
|
5814f04a58 | 4 years ago |
|
|
039a3425c1 | 4 years ago |
|
|
1d832ba36d | 4 years ago |
|
|
f997ac8812 | 5 years ago |
|
|
5cdfe47be3 | 5 years ago |
|
|
8ca4123af7 | 5 years ago |
|
|
7be642e52e | 5 years ago |
|
|
957a809073 | 5 years ago |
|
|
4bccdd5f28 | 5 years ago |
|
|
9247af4cc2 | 5 years ago |
|
|
3ec34bc23f | 5 years ago |
|
|
9774c49d19 | 5 years ago |
|
|
4a8aaedcda | 5 years ago |
|
|
32055f1662 | 5 years ago |
|
|
069f966fdb | 5 years ago |
|
|
36390647b0 | 5 years ago |
|
|
b9e9d18f01 | 5 years ago |
|
|
908fc58af0 | 5 years ago |
|
|
2e1860b798 | 5 years ago |
|
|
4461c203da | 5 years ago |
|
|
d25246ef36 | 5 years ago |
|
|
a08865467d | 5 years ago |
|
|
f59dcae7e2 | 5 years ago |
|
|
9128f4a524 | 5 years ago |
|
|
09b133a394 | 6 years ago |
|
|
2c4f9b6436 | 6 years ago |
|
|
8395d680b6 | 6 years ago |
|
|
260e7f6e71 | 6 years ago |
|
|
b75a039d8c | 6 years ago |
|
|
3a86573ed8 | 6 years ago |
|
|
fde22bbaa4 | 6 years ago |
@ -0,0 +1,29 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<plugin id="com.huawei.cordovahmsgmscheckplugin" version="1.0.0" xmlns="http://apache.org/cordova/ns/plugins/1.0" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<name>CordovaHMSGMSCheckPlugin</name>
|
||||
<js-module name="CordovaHMSGMSCheckPlugin" src="www/CordovaHMSGMSCheckPlugin.js">
|
||||
<clobbers target="cordova.plugins.CordovaHMSGMSCheckPlugin" />
|
||||
</js-module>
|
||||
<platform name="android">
|
||||
<!-- hook for add maven repositories and agc plugin-->
|
||||
<hook src="scripts/android/after_plugin_install.js" type="after_plugin_install" />
|
||||
<hook src="scripts/android/before_plugin_uninstall.js" type="before_plugin_uninstall" />
|
||||
|
||||
<framework custom="true" src="src/android/build.gradle" type="gradleReference" />
|
||||
<!-- Account Kit dependency-->
|
||||
<framework src="com.huawei.hms:base:5.0.4.301" />
|
||||
<!-- <framework src="com.google.android.gms:play-services-base:17.2.1" /> -->
|
||||
|
||||
<config-file parent="/*" target="res/xml/config.xml">
|
||||
<feature name="CordovaHMSGMSCheckPlugin">
|
||||
<param name="android-package"
|
||||
value="com.huawei.cordovahmsgmscheckplugin.CordovaHMSGMSCheckPlugin" />
|
||||
</feature>
|
||||
</config-file>
|
||||
<config-file parent="/*" target="AndroidManifest.xml"></config-file>
|
||||
<source-file src="src/android/CordovaHMSGMSCheckPlugin.java"
|
||||
target-dir="src/com/huawei/cordovahmsgmscheckplugin" />
|
||||
</platform>
|
||||
<!-- Script help to copy agconnect-services.json to right places-->
|
||||
<hook src="scripts/after_prepare.js" type="after_prepare" />
|
||||
</plugin>
|
||||
@ -0,0 +1,37 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
"use strict";
|
||||
|
||||
/**
|
||||
* This hook makes sure projects using [cordova-plugin-firebase](https://github.com/arnesson/cordova-plugin-firebase)
|
||||
* will build properly and have the required key files copied to the proper destinations when the app is build on Ionic Cloud using the package command.
|
||||
* Credits: https://github.com/arnesson.
|
||||
*/
|
||||
var fs = require("fs");
|
||||
var path = require("path");
|
||||
var utilities = require("./lib/utilities");
|
||||
|
||||
var config = fs.readFileSync("config.xml").toString();
|
||||
var name = utilities.getValue(config, "name");
|
||||
|
||||
var ANDROID_DIR = "platforms/android";
|
||||
|
||||
var PLATFORM = {
|
||||
ANDROID: {
|
||||
dest: [ANDROID_DIR + "/app/agconnect-services.json"],
|
||||
src: ["agconnect-services.json"],
|
||||
},
|
||||
};
|
||||
|
||||
module.exports = function (context) {
|
||||
//get platform from the context supplied by cordova
|
||||
var platforms = context.opts.platforms;
|
||||
// Copy key files to their platform specific folders
|
||||
if (
|
||||
platforms.indexOf("android") !== -1 &&
|
||||
utilities.directoryExists(ANDROID_DIR)
|
||||
) {
|
||||
console.log("Preparing HMS GMS Check Kit on Android");
|
||||
// utilities.copyKey(PLATFORM.ANDROID);
|
||||
}
|
||||
};
|
||||
@ -0,0 +1,9 @@
|
||||
var helper = require('./helper');
|
||||
|
||||
module.exports = function(context) {
|
||||
|
||||
// Modify the Gradle build file to add a task that will upload the debug symbols
|
||||
// at build time.
|
||||
helper.restoreRootBuildGradle();
|
||||
helper.modifyRootBuildGradle();
|
||||
};
|
||||
@ -0,0 +1,7 @@
|
||||
var helper = require('./helper');
|
||||
|
||||
module.exports = function(context) {
|
||||
|
||||
// Remove the Gradle modifications that were added when the plugin was installed.
|
||||
helper.restoreRootBuildGradle();
|
||||
};
|
||||
@ -0,0 +1,131 @@
|
||||
var fs = require("fs");
|
||||
var path = require("path");
|
||||
|
||||
function rootBuildGradleExists() {
|
||||
var target = path.join("platforms", "android", "build.gradle");
|
||||
return fs.existsSync(target);
|
||||
}
|
||||
|
||||
/*
|
||||
* Helper function to read the build.gradle that sits at the root of the project
|
||||
*/
|
||||
function readRootBuildGradle() {
|
||||
var target = path.join("platforms", "android", "build.gradle");
|
||||
return fs.readFileSync(target, "utf-8");
|
||||
}
|
||||
|
||||
/*
|
||||
* Added a dependency on 'com.google.gms' based on the position of the know 'com.android.tools.build' dependency in the build.gradle
|
||||
*/
|
||||
function addDependencies(buildGradle) {
|
||||
// find the known line to match
|
||||
var match = buildGradle.match(
|
||||
/^(\s*)classpath 'com.android.tools.build(.*)/m
|
||||
);
|
||||
var whitespace = match[1];
|
||||
|
||||
// modify the line to add the necessary dependencies
|
||||
var agcDependency =
|
||||
whitespace + "classpath 'com.huawei.agconnect:agcp:1.2.0.300'";
|
||||
|
||||
var modifiedLine = match[0] + "\n" + agcDependency;
|
||||
|
||||
// modify the actual line
|
||||
return buildGradle.replace(
|
||||
/^(\s*)classpath 'com.android.tools.build(.*)/m,
|
||||
modifiedLine
|
||||
);
|
||||
}
|
||||
|
||||
/*
|
||||
* Add 'google()' and Crashlytics to the repository repo list
|
||||
*/
|
||||
function addRepos(buildGradle) {
|
||||
// find the known line to match
|
||||
var match = buildGradle.match(/^(\s*)jcenter\(\)/m);
|
||||
var whitespace = match[1];
|
||||
|
||||
// modify the line to add the necessary repo
|
||||
var huaweiMavenRepo =
|
||||
whitespace + "maven { url 'http://developer.huawei.com/repo/' }";
|
||||
var modifiedLine = match[0] + "\n" + huaweiMavenRepo;
|
||||
|
||||
// modify the actual line
|
||||
buildGradle = buildGradle.replace(/^(\s*)jcenter\(\)/m, modifiedLine);
|
||||
|
||||
// update the all projects grouping
|
||||
var allProjectsIndex = buildGradle.indexOf("allprojects");
|
||||
if (allProjectsIndex > 0) {
|
||||
// split the string on allprojects because jcenter is in both groups and we need to modify the 2nd instance
|
||||
var firstHalfOfFile = buildGradle.substring(0, allProjectsIndex);
|
||||
var secondHalfOfFile = buildGradle.substring(allProjectsIndex);
|
||||
|
||||
// Add google() to the allprojects section of the string
|
||||
match = secondHalfOfFile.match(/^(\s*)jcenter\(\)/m);
|
||||
var huaweiMavenRepo =
|
||||
whitespace + "maven { url 'http://developer.huawei.com/repo/' }";
|
||||
modifiedLine = match[0] + "\n" + huaweiMavenRepo;
|
||||
// modify the part of the string that is after 'allprojects'
|
||||
secondHalfOfFile = secondHalfOfFile.replace(
|
||||
/^(\s*)jcenter\(\)/m,
|
||||
modifiedLine
|
||||
);
|
||||
|
||||
// recombine the modified line
|
||||
buildGradle = firstHalfOfFile + secondHalfOfFile;
|
||||
} else {
|
||||
// this should not happen, but if it does, we should try to add the dependency to the buildscript
|
||||
match = buildGradle.match(/^(\s*)jcenter\(\)/m);
|
||||
var huaweiMavenRepo =
|
||||
whitespace + "maven { url 'http://developer.huawei.com/repo/' }";
|
||||
modifiedLine = match[0] + "\n" + huaweiMavenRepo;
|
||||
// modify the part of the string that is after 'allprojects'
|
||||
buildGradle = buildGradle.replace(/^(\s*)jcenter\(\)/m, modifiedLine);
|
||||
}
|
||||
|
||||
return buildGradle;
|
||||
}
|
||||
|
||||
/*
|
||||
* Helper function to write to the build.gradle that sits at the root of the project
|
||||
*/
|
||||
function writeRootBuildGradle(contents) {
|
||||
var target = path.join("platforms", "android", "build.gradle");
|
||||
fs.writeFileSync(target, contents);
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
modifyRootBuildGradle: function () {
|
||||
// be defensive and don't crash if the file doesn't exist
|
||||
if (!rootBuildGradleExists) {
|
||||
return;
|
||||
}
|
||||
|
||||
var buildGradle = readRootBuildGradle();
|
||||
|
||||
// Add Google Play Services Dependency
|
||||
buildGradle = addDependencies(buildGradle);
|
||||
|
||||
// Add Google's Maven Repo
|
||||
buildGradle = addRepos(buildGradle);
|
||||
|
||||
writeRootBuildGradle(buildGradle);
|
||||
},
|
||||
|
||||
restoreRootBuildGradle: function () {
|
||||
// be defensive and don't crash if the file doesn't exist
|
||||
if (!rootBuildGradleExists) {
|
||||
return;
|
||||
}
|
||||
|
||||
var buildGradle = readRootBuildGradle();
|
||||
|
||||
// remove any lines we added
|
||||
buildGradle = buildGradle.replace(
|
||||
/(?:^|\r?\n)(.*)com.huawei.cordovahmsgmscheckplugin*?(?=$|\r?\n)/g,
|
||||
""
|
||||
);
|
||||
|
||||
writeRootBuildGradle(buildGradle);
|
||||
},
|
||||
};
|
||||
@ -0,0 +1,93 @@
|
||||
/**
|
||||
* Utilities and shared functionality for the build hooks.
|
||||
*/
|
||||
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;
|
||||
}, "");
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = {
|
||||
/**
|
||||
* Used to get the name of the application as defined in the config.xml.
|
||||
*
|
||||
* @param {object} context - The Cordova context.
|
||||
* @returns {string} The value of the name element in config.xml.
|
||||
*/
|
||||
getAppName: function (context) {
|
||||
var ConfigParser = context.requireCordovaModule("cordova-lib").configparser;
|
||||
var config = new ConfigParser("config.xml");
|
||||
return config.name();
|
||||
},
|
||||
|
||||
/**
|
||||
* The ID of the plugin; this should match the ID in plugin.xml.
|
||||
*/
|
||||
getPluginId: function () {
|
||||
return "com.huawei.cordovahmsgmscheckplugin";
|
||||
},
|
||||
|
||||
copyKey: function (platform) {
|
||||
for (var i = 0; i < platform.src.length; i++) {
|
||||
var file = platform.src[i];
|
||||
if (this.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
|
||||
}
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
getValue: function (config, name) {
|
||||
var value = config.match(
|
||||
new RegExp("<" + name + "(.*?)>(.*?)</" + name + ">", "i")
|
||||
);
|
||||
if (value && value[2]) {
|
||||
return value[2];
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
},
|
||||
|
||||
fileExists: function (path) {
|
||||
try {
|
||||
return fs.statSync(path).isFile();
|
||||
} catch (e) {
|
||||
return false;
|
||||
}
|
||||
},
|
||||
|
||||
directoryExists: function (path) {
|
||||
try {
|
||||
return fs.statSync(path).isDirectory();
|
||||
} catch (e) {
|
||||
return false;
|
||||
}
|
||||
},
|
||||
};
|
||||
@ -0,0 +1,88 @@
|
||||
package com.huawei.cordovahmsgmscheckplugin;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.util.Log;
|
||||
|
||||
import com.huawei.hms.api.HuaweiApiAvailability;
|
||||
// import com.google.android.gms.common.GoogleApiAvailability;
|
||||
|
||||
import org.apache.cordova.CordovaInterface;
|
||||
import org.apache.cordova.CordovaInterfaceImpl;
|
||||
import org.apache.cordova.CordovaPlugin;
|
||||
import org.apache.cordova.CallbackContext;
|
||||
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
|
||||
/**
|
||||
* This class echoes a string called from JavaScript.
|
||||
*/
|
||||
public class CordovaHMSGMSCheckPlugin extends CordovaPlugin {
|
||||
|
||||
private static final String TAG = CordovaHMSGMSCheckPlugin.class.getSimpleName();
|
||||
private CallbackContext mCallbackContext;
|
||||
|
||||
@Override
|
||||
public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
|
||||
switch (action) {
|
||||
case "isHmsAvailable":
|
||||
mCallbackContext = callbackContext;
|
||||
cordova.getThreadPool().execute(this::isHmsAvailable);
|
||||
return true;
|
||||
case "isGmsAvailable":
|
||||
// mCallbackContext = callbackContext;
|
||||
// cordova.getThreadPool().execute(this::isGmsAvailable);
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private void isHmsAvailable() {
|
||||
boolean isAvailable = false;
|
||||
Context context = cordova.getContext();
|
||||
if (null != cordova.getContext()) {
|
||||
int result = HuaweiApiAvailability.getInstance().isHuaweiMobileServicesAvailable(context);
|
||||
isAvailable = (com.huawei.hms.api.ConnectionResult.SUCCESS == result);
|
||||
}
|
||||
Log.i("Cordova", "isHmsAvailable: " + isAvailable);
|
||||
String msg = "false";
|
||||
if(isAvailable){
|
||||
msg = "true";
|
||||
}
|
||||
outputCallbackContext(0, msg);
|
||||
}
|
||||
|
||||
// private void isGmsAvailable() {
|
||||
// boolean isAvailable = false;
|
||||
// Context context = cordova.getContext();
|
||||
// if (null != context) {
|
||||
// int result = GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(context);
|
||||
// isAvailable = (com.google.android.gms.common.ConnectionResult.SUCCESS == result);
|
||||
// }
|
||||
// Log.i("Cordova", "isGmsAvailable: " + isAvailable);
|
||||
// String msg = "false";
|
||||
// if(isAvailable){
|
||||
// msg = "true";
|
||||
// }
|
||||
// outputCallbackContext(0, msg);
|
||||
// }
|
||||
|
||||
/**
|
||||
* @param type 0-success,1-error
|
||||
* @param msg message
|
||||
*/
|
||||
private void outputCallbackContext(int type, String msg) {
|
||||
if (mCallbackContext != null) {
|
||||
switch (type) {
|
||||
case 0:
|
||||
mCallbackContext.success(msg);
|
||||
break;
|
||||
case 1:
|
||||
mCallbackContext.error(msg);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,29 @@
|
||||
// Top-level build file where you can add configuration options common to all sub-projects/modules.
|
||||
|
||||
buildscript {
|
||||
repositories {
|
||||
google()
|
||||
jcenter()
|
||||
// huawei maven
|
||||
maven { url 'http://developer.huawei.com/repo/' }
|
||||
}
|
||||
dependencies {
|
||||
classpath 'com.android.tools.build:gradle:3.2.0'
|
||||
// classpath 'com.huawei.agconnect:agcp:1.2.0.300'
|
||||
// NOTE: Do not place your application dependencies here; they belong
|
||||
// in the individual module build.gradle files
|
||||
}
|
||||
}
|
||||
|
||||
allprojects {
|
||||
repositories {
|
||||
google()
|
||||
jcenter()
|
||||
// huawei maven
|
||||
maven { url 'http://developer.huawei.com/repo/' }
|
||||
}
|
||||
}
|
||||
|
||||
cdvPluginPostBuildExtras.add({
|
||||
apply plugin: 'com.huawei.agconnect'
|
||||
})
|
||||
@ -0,0 +1,29 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<plugin xmlns:android="http://schemas.android.com/apk/res/android" id="com.huawei.cordovahmslocationplugin"
|
||||
version="1.0.0"
|
||||
xmlns="http://apache.org/cordova/ns/plugins/1.0">
|
||||
<name>CordovaHMSLocationPlugin</name>
|
||||
<js-module name="CordovaHMSLocationPlugin" src="www/CordovaHMSLocationPlugin.js">
|
||||
<clobbers target="cordova.plugins.CordovaHMSLocationPlugin" />
|
||||
</js-module>
|
||||
<platform name="android">
|
||||
<!-- hook for add maven repositories and agc plugin-->
|
||||
<hook src="scripts/android/after_plugin_install.js" type="after_plugin_install" />
|
||||
<hook src="scripts/android/before_plugin_uninstall.js" type="before_plugin_uninstall" />
|
||||
|
||||
<framework custom="true" src="src/android/build.gradle" type="gradleReference" />
|
||||
<!-- Location Kit dependency-->
|
||||
<framework src="com.huawei.hms:location:4.0.0.300" />
|
||||
<config-file parent="/*" target="res/xml/config.xml">
|
||||
<feature name="CordovaHMSLocationPlugin">
|
||||
<param name="android-package"
|
||||
value="com.huawei.cordovahmslocationplugin.CordovaHMSLocationPlugin" />
|
||||
</feature>
|
||||
</config-file>
|
||||
<config-file parent="/*" target="AndroidManifest.xml"></config-file>
|
||||
<source-file src="src/android/CordovaHMSLocationPlugin.java"
|
||||
target-dir="src/com/huawei/cordovahmslocationplugin" />
|
||||
</platform>
|
||||
<!-- Script help to copy agconnect-services.json to right places-->
|
||||
<hook src="scripts/after_prepare.js" type="after_prepare" />
|
||||
</plugin>
|
||||
@ -0,0 +1,38 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
'use strict';
|
||||
|
||||
/**
|
||||
* This hook makes sure projects using [cordova-plugin-firebase](https://github.com/arnesson/cordova-plugin-firebase)
|
||||
* will build properly and have the required key files copied to the proper destinations when the app is build on Ionic Cloud using the package command.
|
||||
* Credits: https://github.com/arnesson.
|
||||
*/
|
||||
var fs = require('fs');
|
||||
var path = require('path');
|
||||
var utilities = require("./lib/utilities");
|
||||
|
||||
var config = fs.readFileSync('config.xml').toString();
|
||||
var name = utilities.getValue(config, 'name');
|
||||
|
||||
var ANDROID_DIR = 'platforms/android';
|
||||
|
||||
var PLATFORM = {
|
||||
ANDROID: {
|
||||
dest: [
|
||||
ANDROID_DIR + '/app/agconnect-services.json'
|
||||
],
|
||||
src: [
|
||||
'agconnect-services.json'
|
||||
],
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = function (context) {
|
||||
//get platform from the context supplied by cordova
|
||||
var platforms = context.opts.platforms;
|
||||
// Copy key files to their platform specific folders
|
||||
if (platforms.indexOf('android') !== -1 && utilities.directoryExists(ANDROID_DIR)) {
|
||||
console.log('Preparing HMS Location Kit on Android');
|
||||
utilities.copyKey(PLATFORM.ANDROID);
|
||||
}
|
||||
};
|
||||
@ -0,0 +1,9 @@
|
||||
var helper = require('./helper');
|
||||
|
||||
module.exports = function(context) {
|
||||
|
||||
// Modify the Gradle build file to add a task that will upload the debug symbols
|
||||
// at build time.
|
||||
helper.restoreRootBuildGradle();
|
||||
helper.modifyRootBuildGradle();
|
||||
};
|
||||
@ -0,0 +1,7 @@
|
||||
var helper = require('./helper');
|
||||
|
||||
module.exports = function(context) {
|
||||
|
||||
// Remove the Gradle modifications that were added when the plugin was installed.
|
||||
helper.restoreRootBuildGradle();
|
||||
};
|
||||
@ -0,0 +1,117 @@
|
||||
var fs = require("fs");
|
||||
var path = require("path");
|
||||
|
||||
function rootBuildGradleExists() {
|
||||
var target = path.join("platforms", "android", "build.gradle");
|
||||
return fs.existsSync(target);
|
||||
}
|
||||
|
||||
/*
|
||||
* Helper function to read the build.gradle that sits at the root of the project
|
||||
*/
|
||||
function readRootBuildGradle() {
|
||||
var target = path.join("platforms", "android", "build.gradle");
|
||||
return fs.readFileSync(target, "utf-8");
|
||||
}
|
||||
|
||||
/*
|
||||
* Added a dependency on 'com.google.gms' based on the position of the know 'com.android.tools.build' dependency in the build.gradle
|
||||
*/
|
||||
function addDependencies(buildGradle) {
|
||||
// find the known line to match
|
||||
var match = buildGradle.match(/^(\s*)classpath 'com.android.tools.build(.*)/m);
|
||||
var whitespace = match[1];
|
||||
|
||||
// modify the line to add the necessary dependencies
|
||||
var agcDependency = whitespace + 'classpath \'com.huawei.agconnect:agcp:1.2.0.300\''
|
||||
|
||||
var modifiedLine = match[0] + '\n' + agcDependency;
|
||||
|
||||
// modify the actual line
|
||||
return buildGradle.replace(/^(\s*)classpath 'com.android.tools.build(.*)/m, modifiedLine);
|
||||
}
|
||||
|
||||
/*
|
||||
* Add 'google()' and Crashlytics to the repository repo list
|
||||
*/
|
||||
function addRepos(buildGradle) {
|
||||
// find the known line to match
|
||||
var match = buildGradle.match(/^(\s*)jcenter\(\)/m);
|
||||
var whitespace = match[1];
|
||||
|
||||
// modify the line to add the necessary repo
|
||||
var huaweiMavenRepo = whitespace + 'maven { url \'http://developer.huawei.com/repo/\' }'
|
||||
var modifiedLine = match[0] + '\n' + huaweiMavenRepo;
|
||||
|
||||
// modify the actual line
|
||||
buildGradle = buildGradle.replace(/^(\s*)jcenter\(\)/m, modifiedLine);
|
||||
|
||||
// update the all projects grouping
|
||||
var allProjectsIndex = buildGradle.indexOf('allprojects');
|
||||
if (allProjectsIndex > 0) {
|
||||
// split the string on allprojects because jcenter is in both groups and we need to modify the 2nd instance
|
||||
var firstHalfOfFile = buildGradle.substring(0, allProjectsIndex);
|
||||
var secondHalfOfFile = buildGradle.substring(allProjectsIndex);
|
||||
|
||||
// Add google() to the allprojects section of the string
|
||||
match = secondHalfOfFile.match(/^(\s*)jcenter\(\)/m);
|
||||
var huaweiMavenRepo = whitespace + 'maven { url \'http://developer.huawei.com/repo/\' }'
|
||||
modifiedLine = match[0] + '\n' + huaweiMavenRepo;
|
||||
// modify the part of the string that is after 'allprojects'
|
||||
secondHalfOfFile = secondHalfOfFile.replace(/^(\s*)jcenter\(\)/m, modifiedLine);
|
||||
|
||||
// recombine the modified line
|
||||
buildGradle = firstHalfOfFile + secondHalfOfFile;
|
||||
} else {
|
||||
// this should not happen, but if it does, we should try to add the dependency to the buildscript
|
||||
match = buildGradle.match(/^(\s*)jcenter\(\)/m);
|
||||
var huaweiMavenRepo = whitespace + 'maven { url \'http://developer.huawei.com/repo/\' }'
|
||||
modifiedLine = match[0] + '\n' + huaweiMavenRepo;
|
||||
// modify the part of the string that is after 'allprojects'
|
||||
buildGradle = buildGradle.replace(/^(\s*)jcenter\(\)/m, modifiedLine);
|
||||
}
|
||||
|
||||
return buildGradle;
|
||||
}
|
||||
|
||||
/*
|
||||
* Helper function to write to the build.gradle that sits at the root of the project
|
||||
*/
|
||||
function writeRootBuildGradle(contents) {
|
||||
var target = path.join("platforms", "android", "build.gradle");
|
||||
fs.writeFileSync(target, contents);
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
|
||||
modifyRootBuildGradle: function() {
|
||||
// be defensive and don't crash if the file doesn't exist
|
||||
if (!rootBuildGradleExists) {
|
||||
return;
|
||||
}
|
||||
|
||||
var buildGradle = readRootBuildGradle();
|
||||
|
||||
// Add Google Play Services Dependency
|
||||
buildGradle = addDependencies(buildGradle);
|
||||
|
||||
// Add Google's Maven Repo
|
||||
buildGradle = addRepos(buildGradle);
|
||||
|
||||
writeRootBuildGradle(buildGradle);
|
||||
},
|
||||
|
||||
restoreRootBuildGradle: function() {
|
||||
// be defensive and don't crash if the file doesn't exist
|
||||
if (!rootBuildGradleExists) {
|
||||
return;
|
||||
}
|
||||
|
||||
var buildGradle = readRootBuildGradle();
|
||||
|
||||
// remove any lines we added
|
||||
buildGradle = buildGradle.replace(/(?:^|\r?\n)(.*)com.huawei.cordovahmspushplugin*?(?=$|\r?\n)/g, '');
|
||||
|
||||
writeRootBuildGradle(buildGradle);
|
||||
}
|
||||
};
|
||||
@ -0,0 +1,88 @@
|
||||
/**
|
||||
* Utilities and shared functionality for the build hooks.
|
||||
*/
|
||||
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;
|
||||
}, '');
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = {
|
||||
/**
|
||||
* Used to get the name of the application as defined in the config.xml.
|
||||
*
|
||||
* @param {object} context - The Cordova context.
|
||||
* @returns {string} The value of the name element in config.xml.
|
||||
*/
|
||||
getAppName: function (context) {
|
||||
var ConfigParser = context.requireCordovaModule("cordova-lib").configparser;
|
||||
var config = new ConfigParser("config.xml");
|
||||
return config.name();
|
||||
},
|
||||
|
||||
/**
|
||||
* The ID of the plugin; this should match the ID in plugin.xml.
|
||||
*/
|
||||
getPluginId: function () {
|
||||
return "com.huawei.cordovahmspushplugin";
|
||||
},
|
||||
|
||||
copyKey: function (platform) {
|
||||
for (var i = 0; i < platform.src.length; i++) {
|
||||
var file = platform.src[i];
|
||||
if (this.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
|
||||
}
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
getValue: function (config, name) {
|
||||
var value = config.match(new RegExp('<' + name + '(.*?)>(.*?)</' + name + '>', 'i'));
|
||||
if (value && value[2]) {
|
||||
return value[2]
|
||||
} else {
|
||||
return null
|
||||
}
|
||||
},
|
||||
|
||||
fileExists: function (path) {
|
||||
try {
|
||||
return fs.statSync(path).isFile();
|
||||
} catch (e) {
|
||||
return false;
|
||||
}
|
||||
},
|
||||
|
||||
directoryExists: function (path) {
|
||||
try {
|
||||
return fs.statSync(path).isDirectory();
|
||||
} catch (e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
};
|
||||
@ -0,0 +1,29 @@
|
||||
// Top-level build file where you can add configuration options common to all sub-projects/modules.
|
||||
|
||||
buildscript {
|
||||
repositories {
|
||||
google()
|
||||
jcenter()
|
||||
// huawei maven
|
||||
maven { url 'http://developer.huawei.com/repo/' }
|
||||
}
|
||||
dependencies {
|
||||
classpath 'com.android.tools.build:gradle:3.2.0'
|
||||
classpath 'com.huawei.agconnect:agcp:1.2.0.300'
|
||||
// NOTE: Do not place your application dependencies here; they belong
|
||||
// in the individual module build.gradle files
|
||||
}
|
||||
}
|
||||
|
||||
allprojects {
|
||||
repositories {
|
||||
google()
|
||||
jcenter()
|
||||
// huawei maven
|
||||
maven { url 'http://developer.huawei.com/repo/' }
|
||||
}
|
||||
}
|
||||
|
||||
cdvPluginPostBuildExtras.add({
|
||||
apply plugin: 'com.huawei.agconnect'
|
||||
})
|
||||
@ -0,0 +1,38 @@
|
||||
<?xml version='1.0' encoding='utf-8'?><!-- Plugin Id and Version-->
|
||||
<plugin xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
id="com.huawei.cordovahmspushplugin" version="1.0.0"
|
||||
xmlns="http://apache.org/cordova/ns/plugins/1.0">
|
||||
<js-module name="CordovaHMSPushPlugin" src="www/CordovaHMSPushPlugin.js">
|
||||
<clobbers target="cordova.plugins.CordovaHMSPushPlugin" />
|
||||
</js-module>
|
||||
<!-- Plugin Name -->
|
||||
<name>CordovaHMSPushPlugin</name>
|
||||
<platform name="android">
|
||||
<!-- hook for add maven repositories and agc plugin-->
|
||||
<hook src="scripts/android/after_plugin_install.js" type="after_plugin_install" />
|
||||
<hook src="scripts/android/before_plugin_uninstall.js" type="before_plugin_uninstall" />
|
||||
|
||||
<framework custom="true" src="src/android/build.gradle" type="gradleReference" />
|
||||
<!-- Push Kit dependency-->
|
||||
<framework src="com.huawei.hms:push:4.0.0.300" />
|
||||
<config-file parent="/*" target="res/xml/config.xml">
|
||||
<feature name="CordovaHMSPushPlugin">
|
||||
<param name="android-package"
|
||||
value="com.huawei.cordovahmspushplugin.CordovaHMSPushPlugin" />
|
||||
</feature>
|
||||
</config-file>
|
||||
<config-file parent="/manifest/application" target="AndroidManifest.xml">
|
||||
<service android:exported="false" android:name="com.huawei.cordovahmspushplugin.MessageService">
|
||||
<intent-filter>
|
||||
<action android:name="com.huawei.push.action.MESSAGING_EVENT" />
|
||||
</intent-filter>
|
||||
</service>
|
||||
</config-file>
|
||||
<source-file src="src/android/CordovaHMSPushPlugin.java"
|
||||
target-dir="src/com/huawei/cordovahmspushplugin" />
|
||||
<source-file src="src/android/MessageService.java"
|
||||
target-dir="src/com/huawei/cordovahmspushplugin" />
|
||||
</platform>
|
||||
<!-- Script help to copy agconnect-services.json to right places-->
|
||||
<hook src="scripts/after_prepare.js" type="after_prepare" />
|
||||
</plugin>
|
||||
@ -0,0 +1,38 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
'use strict';
|
||||
|
||||
/**
|
||||
* This hook makes sure projects using [cordova-plugin-firebase](https://github.com/arnesson/cordova-plugin-firebase)
|
||||
* will build properly and have the required key files copied to the proper destinations when the app is build on Ionic Cloud using the package command.
|
||||
* Credits: https://github.com/arnesson.
|
||||
*/
|
||||
var fs = require('fs');
|
||||
var path = require('path');
|
||||
var utilities = require("./lib/utilities");
|
||||
|
||||
var config = fs.readFileSync('config.xml').toString();
|
||||
var name = utilities.getValue(config, 'name');
|
||||
|
||||
var ANDROID_DIR = 'platforms/android';
|
||||
|
||||
var PLATFORM = {
|
||||
ANDROID: {
|
||||
dest: [
|
||||
ANDROID_DIR + '/app/agconnect-services.json'
|
||||
],
|
||||
src: [
|
||||
'agconnect-services.json'
|
||||
],
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = function (context) {
|
||||
//get platform from the context supplied by cordova
|
||||
var platforms = context.opts.platforms;
|
||||
// Copy key files to their platform specific folders
|
||||
if (platforms.indexOf('android') !== -1 && utilities.directoryExists(ANDROID_DIR)) {
|
||||
console.log('Preparing HMS Push Kit on Android');
|
||||
utilities.copyKey(PLATFORM.ANDROID);
|
||||
}
|
||||
};
|
||||
@ -0,0 +1,9 @@
|
||||
var helper = require('./helper');
|
||||
|
||||
module.exports = function(context) {
|
||||
|
||||
// Modify the Gradle build file to add a task that will upload the debug symbols
|
||||
// at build time.
|
||||
helper.restoreRootBuildGradle();
|
||||
helper.modifyRootBuildGradle();
|
||||
};
|
||||
@ -0,0 +1,7 @@
|
||||
var helper = require('./helper');
|
||||
|
||||
module.exports = function(context) {
|
||||
|
||||
// Remove the Gradle modifications that were added when the plugin was installed.
|
||||
helper.restoreRootBuildGradle();
|
||||
};
|
||||
@ -0,0 +1,117 @@
|
||||
var fs = require("fs");
|
||||
var path = require("path");
|
||||
|
||||
function rootBuildGradleExists() {
|
||||
var target = path.join("platforms", "android", "build.gradle");
|
||||
return fs.existsSync(target);
|
||||
}
|
||||
|
||||
/*
|
||||
* Helper function to read the build.gradle that sits at the root of the project
|
||||
*/
|
||||
function readRootBuildGradle() {
|
||||
var target = path.join("platforms", "android", "build.gradle");
|
||||
return fs.readFileSync(target, "utf-8");
|
||||
}
|
||||
|
||||
/*
|
||||
* Added a dependency on 'com.google.gms' based on the position of the know 'com.android.tools.build' dependency in the build.gradle
|
||||
*/
|
||||
function addDependencies(buildGradle) {
|
||||
// find the known line to match
|
||||
var match = buildGradle.match(/^(\s*)classpath 'com.android.tools.build(.*)/m);
|
||||
var whitespace = match[1];
|
||||
|
||||
// modify the line to add the necessary dependencies
|
||||
var agcDependency = whitespace + 'classpath \'com.huawei.agconnect:agcp:1.2.0.300\''
|
||||
|
||||
var modifiedLine = match[0] + '\n' + agcDependency;
|
||||
|
||||
// modify the actual line
|
||||
return buildGradle.replace(/^(\s*)classpath 'com.android.tools.build(.*)/m, modifiedLine);
|
||||
}
|
||||
|
||||
/*
|
||||
* Add 'google()' and Crashlytics to the repository repo list
|
||||
*/
|
||||
function addRepos(buildGradle) {
|
||||
// find the known line to match
|
||||
var match = buildGradle.match(/^(\s*)jcenter\(\)/m);
|
||||
var whitespace = match[1];
|
||||
|
||||
// modify the line to add the necessary repo
|
||||
var huaweiMavenRepo = whitespace + 'maven { url \'http://developer.huawei.com/repo/\' }'
|
||||
var modifiedLine = match[0] + '\n' + huaweiMavenRepo;
|
||||
|
||||
// modify the actual line
|
||||
buildGradle = buildGradle.replace(/^(\s*)jcenter\(\)/m, modifiedLine);
|
||||
|
||||
// update the all projects grouping
|
||||
var allProjectsIndex = buildGradle.indexOf('allprojects');
|
||||
if (allProjectsIndex > 0) {
|
||||
// split the string on allprojects because jcenter is in both groups and we need to modify the 2nd instance
|
||||
var firstHalfOfFile = buildGradle.substring(0, allProjectsIndex);
|
||||
var secondHalfOfFile = buildGradle.substring(allProjectsIndex);
|
||||
|
||||
// Add google() to the allprojects section of the string
|
||||
match = secondHalfOfFile.match(/^(\s*)jcenter\(\)/m);
|
||||
var huaweiMavenRepo = whitespace + 'maven { url \'http://developer.huawei.com/repo/\' }'
|
||||
modifiedLine = match[0] + '\n' + huaweiMavenRepo;
|
||||
// modify the part of the string that is after 'allprojects'
|
||||
secondHalfOfFile = secondHalfOfFile.replace(/^(\s*)jcenter\(\)/m, modifiedLine);
|
||||
|
||||
// recombine the modified line
|
||||
buildGradle = firstHalfOfFile + secondHalfOfFile;
|
||||
} else {
|
||||
// this should not happen, but if it does, we should try to add the dependency to the buildscript
|
||||
match = buildGradle.match(/^(\s*)jcenter\(\)/m);
|
||||
var huaweiMavenRepo = whitespace + 'maven { url \'http://developer.huawei.com/repo/\' }'
|
||||
modifiedLine = match[0] + '\n' + huaweiMavenRepo;
|
||||
// modify the part of the string that is after 'allprojects'
|
||||
buildGradle = buildGradle.replace(/^(\s*)jcenter\(\)/m, modifiedLine);
|
||||
}
|
||||
|
||||
return buildGradle;
|
||||
}
|
||||
|
||||
/*
|
||||
* Helper function to write to the build.gradle that sits at the root of the project
|
||||
*/
|
||||
function writeRootBuildGradle(contents) {
|
||||
var target = path.join("platforms", "android", "build.gradle");
|
||||
fs.writeFileSync(target, contents);
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
|
||||
modifyRootBuildGradle: function() {
|
||||
// be defensive and don't crash if the file doesn't exist
|
||||
if (!rootBuildGradleExists) {
|
||||
return;
|
||||
}
|
||||
|
||||
var buildGradle = readRootBuildGradle();
|
||||
|
||||
// Add Google Play Services Dependency
|
||||
buildGradle = addDependencies(buildGradle);
|
||||
|
||||
// Add Google's Maven Repo
|
||||
buildGradle = addRepos(buildGradle);
|
||||
|
||||
writeRootBuildGradle(buildGradle);
|
||||
},
|
||||
|
||||
restoreRootBuildGradle: function() {
|
||||
// be defensive and don't crash if the file doesn't exist
|
||||
if (!rootBuildGradleExists) {
|
||||
return;
|
||||
}
|
||||
|
||||
var buildGradle = readRootBuildGradle();
|
||||
|
||||
// remove any lines we added
|
||||
buildGradle = buildGradle.replace(/(?:^|\r?\n)(.*)com.huawei.cordovahmspushplugin*?(?=$|\r?\n)/g, '');
|
||||
|
||||
writeRootBuildGradle(buildGradle);
|
||||
}
|
||||
};
|
||||
@ -0,0 +1,88 @@
|
||||
/**
|
||||
* Utilities and shared functionality for the build hooks.
|
||||
*/
|
||||
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;
|
||||
}, '');
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = {
|
||||
/**
|
||||
* Used to get the name of the application as defined in the config.xml.
|
||||
*
|
||||
* @param {object} context - The Cordova context.
|
||||
* @returns {string} The value of the name element in config.xml.
|
||||
*/
|
||||
getAppName: function (context) {
|
||||
var ConfigParser = context.requireCordovaModule("cordova-lib").configparser;
|
||||
var config = new ConfigParser("config.xml");
|
||||
return config.name();
|
||||
},
|
||||
|
||||
/**
|
||||
* The ID of the plugin; this should match the ID in plugin.xml.
|
||||
*/
|
||||
getPluginId: function () {
|
||||
return "com.huawei.cordovahmspushplugin";
|
||||
},
|
||||
|
||||
copyKey: function (platform) {
|
||||
for (var i = 0; i < platform.src.length; i++) {
|
||||
var file = platform.src[i];
|
||||
if (this.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
|
||||
}
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
getValue: function (config, name) {
|
||||
var value = config.match(new RegExp('<' + name + '(.*?)>(.*?)</' + name + '>', 'i'));
|
||||
if (value && value[2]) {
|
||||
return value[2]
|
||||
} else {
|
||||
return null
|
||||
}
|
||||
},
|
||||
|
||||
fileExists: function (path) {
|
||||
try {
|
||||
return fs.statSync(path).isFile();
|
||||
} catch (e) {
|
||||
return false;
|
||||
}
|
||||
},
|
||||
|
||||
directoryExists: function (path) {
|
||||
try {
|
||||
return fs.statSync(path).isDirectory();
|
||||
} catch (e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
};
|
||||
@ -0,0 +1,112 @@
|
||||
package com.huawei.cordovahmspushplugin;
|
||||
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
|
||||
import com.huawei.agconnect.config.AGConnectServicesConfig;
|
||||
import com.huawei.hms.aaid.HmsInstanceId;
|
||||
import com.huawei.hms.push.HmsMessaging;
|
||||
import com.huawei.hmf.tasks.OnCompleteListener;
|
||||
import com.huawei.hmf.tasks.Task;
|
||||
|
||||
import org.apache.cordova.CallbackContext;
|
||||
import org.apache.cordova.CordovaPlugin;
|
||||
import org.apache.cordova.PluginResult;
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONException;
|
||||
|
||||
/**
|
||||
* This class echoes a string called from JavaScript.
|
||||
*/
|
||||
public class CordovaHMSPushPlugin extends CordovaPlugin {
|
||||
|
||||
private static final String TAG = CordovaHMSPushPlugin.class.getSimpleName();
|
||||
|
||||
private static CallbackContext mCallbackContext;
|
||||
private static CallbackContext mTokenCallback;
|
||||
|
||||
@Override
|
||||
public boolean execute(String action, JSONArray args, CallbackContext callbackContext) {
|
||||
switch (action) {
|
||||
case "getToken":
|
||||
this.getToken(callbackContext);
|
||||
return true;
|
||||
case "getMessageCallback":
|
||||
Log.d(TAG, "getMessageCallback");
|
||||
mCallbackContext = callbackContext;
|
||||
return true;
|
||||
case "subscribeTopic":
|
||||
Log.d(TAG, "subscribeTopic");
|
||||
try {
|
||||
String topic = args.getString(0);
|
||||
this.subscribeTopic(topic, callbackContext);
|
||||
} catch (JSONException e) {
|
||||
return true;
|
||||
}
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public static void returnMessage(String message) {
|
||||
if (mCallbackContext != null) {
|
||||
Log.d(TAG, "returnMessage");
|
||||
PluginResult result = new PluginResult(PluginResult.Status.OK, message);
|
||||
result.setKeepCallback(true);
|
||||
mCallbackContext.sendPluginResult(result);
|
||||
}
|
||||
}
|
||||
|
||||
public static void returnToken(String token) {
|
||||
if (mTokenCallback != null) {
|
||||
mTokenCallback.success(token);
|
||||
mTokenCallback = null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* get push token
|
||||
*/
|
||||
private void getToken(CallbackContext callbackContext) {
|
||||
Log.i(TAG, "get token: begin");
|
||||
|
||||
try {
|
||||
String appId = AGConnectServicesConfig.fromContext(cordova.getContext()).getString("client/app_id");
|
||||
String pushToken = HmsInstanceId.getInstance(cordova.getContext()).getToken(appId, "HCM");
|
||||
if (!TextUtils.isEmpty(pushToken)) {
|
||||
Log.i(TAG, "get token:" + pushToken);
|
||||
callbackContext.success(pushToken);
|
||||
}else {
|
||||
mTokenCallback = callbackContext;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
Log.e(TAG, "getToken Failed, " + e);
|
||||
callbackContext.error("getToken Failed, error : " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
public void subscribeTopic(String topic, final CallbackContext callBack) {
|
||||
// callBack.success("user subscribe to topic named as: "+ topic);
|
||||
if (topic == null || topic.toString().equals("")) {
|
||||
callBack.error("topic is empty!");
|
||||
return;
|
||||
}
|
||||
try {
|
||||
HmsMessaging.getInstance(cordova.getContext()).subscribe(topic).
|
||||
addOnCompleteListener(new OnCompleteListener<Void>() {
|
||||
@Override
|
||||
public void onComplete(Task<Void> task) {
|
||||
if (task.isSuccessful()) {
|
||||
callBack.success("user subscribe to topic: "+ topic);
|
||||
} else {
|
||||
callBack.error("getToken Failed, error : " + task.getException().getMessage());
|
||||
}
|
||||
}
|
||||
});
|
||||
} catch (Exception e) {
|
||||
callBack.error("getToken Failed, error : " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,32 @@
|
||||
package com.huawei.cordovahmspushplugin;
|
||||
|
||||
import com.huawei.cordovahmspushplugin.CordovaHMSPushPlugin;
|
||||
import com.huawei.hms.push.HmsMessageService;
|
||||
import com.huawei.hms.push.RemoteMessage;
|
||||
|
||||
import android.util.Log;
|
||||
|
||||
public class MessageService extends HmsMessageService {
|
||||
|
||||
private static final String TAG = MessageService.class.getSimpleName();
|
||||
|
||||
@Override
|
||||
public void onMessageReceived(RemoteMessage remoteMessage) {
|
||||
super.onMessageReceived(remoteMessage);
|
||||
Log.d(TAG, "onMessageReceived");
|
||||
if (remoteMessage != null) {
|
||||
String message = remoteMessage.getData();
|
||||
Log.d(TAG, message);
|
||||
CordovaHMSPushPlugin.returnMessage(message);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNewToken(String s) {
|
||||
super.onNewToken(s);
|
||||
if (s != null) {
|
||||
Log.d(TAG, "token:" + s);
|
||||
CordovaHMSPushPlugin.returnToken(s);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,29 @@
|
||||
// Top-level build file where you can add configuration options common to all sub-projects/modules.
|
||||
|
||||
buildscript {
|
||||
repositories {
|
||||
google()
|
||||
jcenter()
|
||||
// huawei maven
|
||||
maven { url 'http://developer.huawei.com/repo/' }
|
||||
}
|
||||
dependencies {
|
||||
classpath 'com.android.tools.build:gradle:3.2.0'
|
||||
classpath 'com.huawei.agconnect:agcp:1.2.0.300'
|
||||
// NOTE: Do not place your application dependencies here; they belong
|
||||
// in the individual module build.gradle files
|
||||
}
|
||||
}
|
||||
|
||||
allprojects {
|
||||
repositories {
|
||||
google()
|
||||
jcenter()
|
||||
// huawei maven
|
||||
maven { url 'http://developer.huawei.com/repo/' }
|
||||
}
|
||||
}
|
||||
|
||||
cdvPluginPostBuildExtras.add({
|
||||
apply plugin: 'com.huawei.agconnect'
|
||||
})
|
||||
@ -0,0 +1,36 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CLIENT_ID</key>
|
||||
<string>448880075189-tcgggmh2ua9tsmdr97c1ttcgrmf5kg5m.apps.googleusercontent.com</string>
|
||||
<key>REVERSED_CLIENT_ID</key>
|
||||
<string>com.googleusercontent.apps.448880075189-tcgggmh2ua9tsmdr97c1ttcgrmf5kg5m</string>
|
||||
<key>API_KEY</key>
|
||||
<string>AIzaSyB--KUTUYVpcdxpETCEsdhKs5cV3QawW7Q</string>
|
||||
<key>GCM_SENDER_ID</key>
|
||||
<string>448880075189</string>
|
||||
<key>PLIST_VERSION</key>
|
||||
<string>1</string>
|
||||
<key>BUNDLE_ID</key>
|
||||
<string>com.cloudsolutions.alhabibmohemm</string>
|
||||
<key>PROJECT_ID</key>
|
||||
<string>al-habib-mohemm</string>
|
||||
<key>STORAGE_BUCKET</key>
|
||||
<string>al-habib-mohemm.appspot.com</string>
|
||||
<key>IS_ADS_ENABLED</key>
|
||||
<false></false>
|
||||
<key>IS_ANALYTICS_ENABLED</key>
|
||||
<false></false>
|
||||
<key>IS_APPINVITE_ENABLED</key>
|
||||
<true></true>
|
||||
<key>IS_GCM_ENABLED</key>
|
||||
<true></true>
|
||||
<key>IS_SIGNIN_ENABLED</key>
|
||||
<true></true>
|
||||
<key>GOOGLE_APP_ID</key>
|
||||
<string>1:448880075189:ios:c6fd2b86fe7b388088b9fc</string>
|
||||
<key>DATABASE_URL</key>
|
||||
<string>https://al-habib-mohemm.firebaseio.com</string>
|
||||
</dict>
|
||||
</plist>
|
||||
@ -1,115 +0,0 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<widget id="hmg.cloudSolutions.mohem" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
|
||||
<name>MyApp</name>
|
||||
<description>An awesome Ionic/Cordova app.</description>
|
||||
<author email="hi@ionicframework.com" href="http://ionicframework.com/">Ionic Framework Team</author>
|
||||
<content src="index.html" />
|
||||
<access origin="*" />
|
||||
<allow-intent href="http://*/*" />
|
||||
<allow-intent href="https://*/*" />
|
||||
<allow-intent href="tel:*" />
|
||||
<allow-intent href="sms:*" />
|
||||
<allow-intent href="mailto:*" />
|
||||
<allow-intent href="geo:*" />
|
||||
<preference name="ScrollEnabled" value="false" />
|
||||
<preference name="android-minSdkVersion" value="19" />
|
||||
<preference name="BackupWebStorage" value="none" />
|
||||
<preference name="SplashMaintainAspectRatio" value="true" />
|
||||
<preference name="FadeSplashScreenDuration" value="300" />
|
||||
<preference name="SplashShowOnlyFirstTime" value="false" />
|
||||
<preference name="SplashScreen" value="screen" />
|
||||
<preference name="SplashScreenDelay" value="3000" />
|
||||
<platform name="android">
|
||||
<edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<application android:networkSecurityConfig="@xml/network_security_config" />
|
||||
</edit-config>
|
||||
<resource-file src="resources/android/xml/network_security_config.xml" target="app/src/main/res/xml/network_security_config.xml" />
|
||||
<allow-intent href="market:*" />
|
||||
<icon density="ldpi" src="resources/android/icon/drawable-ldpi-icon.png" />
|
||||
<icon density="mdpi" src="resources/android/icon/drawable-mdpi-icon.png" />
|
||||
<icon density="hdpi" src="resources/android/icon/drawable-hdpi-icon.png" />
|
||||
<icon density="xhdpi" src="resources/android/icon/drawable-xhdpi-icon.png" />
|
||||
<icon density="xxhdpi" src="resources/android/icon/drawable-xxhdpi-icon.png" />
|
||||
<icon density="xxxhdpi" src="resources/android/icon/drawable-xxxhdpi-icon.png" />
|
||||
<splash density="land-ldpi" src="resources/android/splash/drawable-land-ldpi-screen.png" />
|
||||
<splash density="land-mdpi" src="resources/android/splash/drawable-land-mdpi-screen.png" />
|
||||
<splash density="land-hdpi" src="resources/android/splash/drawable-land-hdpi-screen.png" />
|
||||
<splash density="land-xhdpi" src="resources/android/splash/drawable-land-xhdpi-screen.png" />
|
||||
<splash density="land-xxhdpi" src="resources/android/splash/drawable-land-xxhdpi-screen.png" />
|
||||
<splash density="land-xxxhdpi" src="resources/android/splash/drawable-land-xxxhdpi-screen.png" />
|
||||
<splash density="port-ldpi" src="resources/android/splash/drawable-port-ldpi-screen.png" />
|
||||
<splash density="port-mdpi" src="resources/android/splash/drawable-port-mdpi-screen.png" />
|
||||
<splash density="port-hdpi" src="resources/android/splash/drawable-port-hdpi-screen.png" />
|
||||
<splash density="port-xhdpi" src="resources/android/splash/drawable-port-xhdpi-screen.png" />
|
||||
<splash density="port-xxhdpi" src="resources/android/splash/drawable-port-xxhdpi-screen.png" />
|
||||
<splash density="port-xxxhdpi" src="resources/android/splash/drawable-port-xxxhdpi-screen.png" />
|
||||
</platform>
|
||||
<platform name="ios">
|
||||
<allow-intent href="itms:*" />
|
||||
<allow-intent href="itms-apps:*" />
|
||||
<icon height="57" src="resources/ios/icon/icon.png" width="57" />
|
||||
<icon height="114" src="resources/ios/icon/icon@2x.png" width="114" />
|
||||
<icon height="40" src="resources/ios/icon/icon-40.png" width="40" />
|
||||
<icon height="80" src="resources/ios/icon/icon-40@2x.png" width="80" />
|
||||
<icon height="120" src="resources/ios/icon/icon-40@3x.png" width="120" />
|
||||
<icon height="50" src="resources/ios/icon/icon-50.png" width="50" />
|
||||
<icon height="100" src="resources/ios/icon/icon-50@2x.png" width="100" />
|
||||
<icon height="60" src="resources/ios/icon/icon-60.png" width="60" />
|
||||
<icon height="120" src="resources/ios/icon/icon-60@2x.png" width="120" />
|
||||
<icon height="180" src="resources/ios/icon/icon-60@3x.png" width="180" />
|
||||
<icon height="72" src="resources/ios/icon/icon-72.png" width="72" />
|
||||
<icon height="144" src="resources/ios/icon/icon-72@2x.png" width="144" />
|
||||
<icon height="76" src="resources/ios/icon/icon-76.png" width="76" />
|
||||
<icon height="152" src="resources/ios/icon/icon-76@2x.png" width="152" />
|
||||
<icon height="167" src="resources/ios/icon/icon-83.5@2x.png" width="167" />
|
||||
<icon height="29" src="resources/ios/icon/icon-small.png" width="29" />
|
||||
<icon height="58" src="resources/ios/icon/icon-small@2x.png" width="58" />
|
||||
<icon height="87" src="resources/ios/icon/icon-small@3x.png" width="87" />
|
||||
<icon height="1024" src="resources/ios/icon/icon-1024.png" width="1024" />
|
||||
<splash height="1136" src="resources/ios/splash/Default-568h@2x~iphone.png" width="640" />
|
||||
<splash height="1334" src="resources/ios/splash/Default-667h.png" width="750" />
|
||||
<splash height="2208" src="resources/ios/splash/Default-736h.png" width="1242" />
|
||||
<splash height="1242" src="resources/ios/splash/Default-Landscape-736h.png" width="2208" />
|
||||
<splash height="1536" src="resources/ios/splash/Default-Landscape@2x~ipad.png" width="2048" />
|
||||
<splash height="2048" src="resources/ios/splash/Default-Landscape@~ipadpro.png" width="2732" />
|
||||
<splash height="768" src="resources/ios/splash/Default-Landscape~ipad.png" width="1024" />
|
||||
<splash height="2048" src="resources/ios/splash/Default-Portrait@2x~ipad.png" width="1536" />
|
||||
<splash height="2732" src="resources/ios/splash/Default-Portrait@~ipadpro.png" width="2048" />
|
||||
<splash height="1024" src="resources/ios/splash/Default-Portrait~ipad.png" width="768" />
|
||||
<splash height="960" src="resources/ios/splash/Default@2x~iphone.png" width="640" />
|
||||
<splash height="480" src="resources/ios/splash/Default~iphone.png" width="320" />
|
||||
<splash height="2732" src="resources/ios/splash/Default@2x~universal~anyany.png" width="2732" />
|
||||
</platform>
|
||||
<plugin name="cordova-plugin-whitelist" spec="1.3.3" />
|
||||
<plugin name="cordova-plugin-statusbar" spec="2.4.2" />
|
||||
<plugin name="cordova-plugin-splashscreen" spec="5.0.2" />
|
||||
<plugin name="cordova-plugin-ionic-webview" spec="^4.0.0" />
|
||||
<plugin name="call-number" spec="^1.0.1" />
|
||||
<plugin name="cordova-android-support-gradle-release" spec="^2.1.0" />
|
||||
<plugin name="cordova-sqlite-storage" spec="^3.2.0" />
|
||||
<plugin name="cordova-plugin-nativestorage" spec="^2.3.2" />
|
||||
<plugin name="cordova-plugin-ble-central" spec="^1.2.2" />
|
||||
<plugin name="uk.co.workingedge.phonegap.plugin.launchnavigator" spec="^3.2.2" />
|
||||
<plugin name="cordova-plugin-themeablebrowser" spec="^0.2.18" />
|
||||
<plugin name="cordova-plugin-inappbrowser" spec="^3.0.0" />
|
||||
<plugin name="cordova-plugin-globalization" spec="^1.11.0" />
|
||||
<plugin name="cordova-plugin-android-permissions" spec="^1.0.0" />
|
||||
<plugin name="cordova-plugin-sms-receive" spec="^1.0.2" />
|
||||
<plugin name="cordova-plugin-device" spec="^2.0.2" />
|
||||
<plugin name="cordova-plugin-local-notification" spec="^0.9.0-beta.2" />
|
||||
<plugin name="mx.ferreyra.callnumber" spec="0.0.2" />
|
||||
<plugin name="cordova-plugin-badge" spec="^0.8.8" />
|
||||
<plugin name="cordova-plugin-fingerprint-aio" spec="^1.7.0">
|
||||
<variable name="FACEID_USAGE_DESCRIPTION" value="User Authentication" />
|
||||
</plugin>
|
||||
<plugin name="cordova.plugins.diagnostic" spec="^4.0.12" />
|
||||
<plugin name="phonegap-plugin-barcodescanner" spec="^8.1.0" />
|
||||
<plugin name="cordova-plugin-camera" spec="^4.0.3" />
|
||||
<plugin name="cordova-plugin-ionic-keyboard" spec="^2.1.3" />
|
||||
<plugin name="cordova-opentok-android-permissions" spec="^1.0.1" />
|
||||
<plugin name="cordova-plugin-appavailability" spec="^0.4.2" />
|
||||
<plugin name="cordova-plugin-apprate" spec="^1.4.0" />
|
||||
<engine name="browser" spec="5.0.4" />
|
||||
<engine name="ios" spec="4.5.5" />
|
||||
<engine name="android" spec="7.1.4" />
|
||||
</widget>
|
||||
@ -1,190 +0,0 @@
|
||||
{
|
||||
"name": "MOHEM",
|
||||
"version": "0.0.1",
|
||||
"author": "Cloud Solutions",
|
||||
"homepage": "http://www.cloudsolution-sa.com/",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"ng": "ng",
|
||||
"start": "ng serve",
|
||||
"build": "ng build",
|
||||
"test": "ng test",
|
||||
"lint": "ng lint",
|
||||
"e2e": "ng e2e"
|
||||
},
|
||||
"dependencies": {
|
||||
"@angular/animations": "^7.2.15",
|
||||
"@angular/common": "^7.2.2",
|
||||
"@angular/core": "^7.2.2",
|
||||
"@angular/forms": "^7.2.2",
|
||||
"@angular/http": "^7.2.2",
|
||||
"@angular/platform-browser": "^7.2.2",
|
||||
"@angular/platform-browser-dynamic": "^7.2.2",
|
||||
"@angular/router": "^7.2.2",
|
||||
"@ionic-native/android-permissions": "^5.8.0",
|
||||
"@ionic-native/app-availability": "^5.8.0",
|
||||
"@ionic-native/app-rate": "^5.8.0",
|
||||
"@ionic-native/background-geolocation": "^5.4.0",
|
||||
"@ionic-native/badge": "^5.8.0",
|
||||
"@ionic-native/barcode-scanner": "^5.8.0",
|
||||
"@ionic-native/ble": "^5.8.0",
|
||||
"@ionic-native/call-number": "^5.8.0",
|
||||
"@ionic-native/camera": "^5.8.0",
|
||||
"@ionic-native/core": "^5.8.0",
|
||||
"@ionic-native/device": "^5.8.0",
|
||||
"@ionic-native/diagnostic": "^5.8.0",
|
||||
"@ionic-native/fingerprint-aio": "^5.8.0",
|
||||
"@ionic-native/globalization": "^5.8.0",
|
||||
"@ionic-native/health": "^5.4.0",
|
||||
"@ionic-native/in-app-browser": "^5.8.0",
|
||||
"@ionic-native/keyboard": "^5.8.0",
|
||||
"@ionic-native/launch-navigator": "^5.8.0",
|
||||
"@ionic-native/local-notifications": "^5.8.0",
|
||||
"@ionic-native/native-storage": "^5.8.0",
|
||||
"@ionic-native/push": "^5.8.0",
|
||||
"@ionic-native/sms": "^5.8.0",
|
||||
"@ionic-native/splash-screen": "^5.0.0",
|
||||
"@ionic-native/sqlite": "^5.8.0",
|
||||
"@ionic-native/status-bar": "^5.0.0",
|
||||
"@ionic-native/themeable-browser": "^5.8.0",
|
||||
"@ionic/angular": "^4.1.0",
|
||||
"@ng-bootstrap/ng-bootstrap": "^4.2.1",
|
||||
"@swimlane/ngx-charts": "^10.1.0",
|
||||
"angular-calendar": "^0.26.11",
|
||||
"call-number": "^1.0.1",
|
||||
"chart.js": "^2.8.0",
|
||||
"cordova-android": "7.1.4",
|
||||
"cordova-android-support-gradle-release": "^2.1.0",
|
||||
"cordova-browser": "5.0.4",
|
||||
"cordova-ios": "4.5.5",
|
||||
"cordova-opentok-android-permissions": "^1.0.1",
|
||||
"cordova-plugin-actionsheet": "^2.3.3",
|
||||
"cordova-plugin-add-swift-support": "^2.0.2",
|
||||
"cordova-plugin-android-permissions": "^1.0.0",
|
||||
"cordova-plugin-appavailability": "^0.4.2",
|
||||
"cordova-plugin-apprate": "^1.4.0",
|
||||
"cordova-plugin-badge": "^0.8.8",
|
||||
"cordova-plugin-ble-central": "^1.2.2",
|
||||
"cordova-plugin-camera": "^4.0.3",
|
||||
"cordova-plugin-compat": "^1.2.0",
|
||||
"cordova-plugin-device": "^2.0.2",
|
||||
"cordova-plugin-dialogs": "^2.0.1",
|
||||
"cordova-plugin-fingerprint-aio": "^1.7.0",
|
||||
"cordova-plugin-globalization": "^1.11.0",
|
||||
"cordova-plugin-inappbrowser": "^3.0.0",
|
||||
"cordova-plugin-ionic-keyboard": "^2.1.3",
|
||||
"cordova-plugin-ionic-webview": "^3.1.2",
|
||||
"cordova-plugin-local-notification": "^0.9.0-beta.2",
|
||||
"cordova-plugin-nativestorage": "^2.3.2",
|
||||
"cordova-plugin-sms-receive": "^1.0.2",
|
||||
"cordova-plugin-splashscreen": "^5.0.2",
|
||||
"cordova-plugin-statusbar": "^2.4.2",
|
||||
"cordova-plugin-themeablebrowser": "^0.2.18",
|
||||
"cordova-plugin-whitelist": "^1.3.3",
|
||||
"cordova-sms-plugin": "^1.0.0",
|
||||
"cordova-sqlite-storage": "^3.2.0",
|
||||
"cordova.plugins.diagnostic": "^4.0.12",
|
||||
"core-js": "^2.5.4",
|
||||
"date-fns": "^1.30.1",
|
||||
"mx.ferreyra.callnumber": "0.0.2",
|
||||
"phonegap-plugin-barcodescanner": "^8.1.0",
|
||||
"phonegap-plugin-multidex": "^1.0.0",
|
||||
"phonegap-plugin-push": "2.2.3",
|
||||
"primeicons": "^1.0.0",
|
||||
"primeng": "^7.1.3",
|
||||
"run": "1.4.0",
|
||||
"rxjs": "~6.3.3",
|
||||
"uk.co.workingedge.phonegap.plugin.launchnavigator": "^3.2.2",
|
||||
"zone.js": "~0.8.29"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@angular-devkit/architect": "~0.12.3",
|
||||
"@angular-devkit/build-angular": "~0.13.0",
|
||||
"@angular-devkit/core": "~7.2.3",
|
||||
"@angular-devkit/schematics": "~7.2.3",
|
||||
"@angular/cli": "7.3.6",
|
||||
"@angular/compiler": "~7.2.2",
|
||||
"@angular/compiler-cli": "~7.2.2",
|
||||
"@angular/language-service": "~7.2.2",
|
||||
"@ionic/angular-toolkit": "~1.4.0",
|
||||
"@types/jasmine": "~2.8.8",
|
||||
"@types/jasminewd2": "~2.0.3",
|
||||
"@types/node": "~10.12.0",
|
||||
"codelyzer": "~4.5.0",
|
||||
"jasmine-core": "~2.99.1",
|
||||
"jasmine-spec-reporter": "~4.2.1",
|
||||
"karma": "^4.0.1",
|
||||
"karma-chrome-launcher": "~2.2.0",
|
||||
"karma-coverage-istanbul-reporter": "~2.0.1",
|
||||
"karma-jasmine": "~1.1.2",
|
||||
"karma-jasmine-html-reporter": "^0.2.2",
|
||||
"protractor": "~5.4.0",
|
||||
"ts-node": "~8.0.0",
|
||||
"tslint": "~5.12.0",
|
||||
"typescript": "~3.1.6"
|
||||
},
|
||||
"description": "An Ionic project",
|
||||
"cordova": {
|
||||
"plugins": {
|
||||
"cordova-plugin-whitelist": {},
|
||||
"cordova-plugin-statusbar": {},
|
||||
"cordova-plugin-device": {},
|
||||
"cordova-plugin-splashscreen": {},
|
||||
"cordova-plugin-ionic-webview": {
|
||||
"ANDROID_SUPPORT_ANNOTATIONS_VERSION": "27.+"
|
||||
},
|
||||
"cordova-plugin-mauron85-background-geolocation": {
|
||||
"GOOGLE_PLAY_SERVICES_VERSION": "16.0.0",
|
||||
"ANDROID_SUPPORT_LIBRARY_VERSION": "26+",
|
||||
"ICON": "@mipmap/icon",
|
||||
"SMALL_ICON": "@mipmap/icon",
|
||||
"ACCOUNT_NAME": "@string/app_name",
|
||||
"ACCOUNT_LABEL": "@string/app_name",
|
||||
"ACCOUNT_TYPE": "$PACKAGE_NAME.account",
|
||||
"CONTENT_AUTHORITY": "$PACKAGE_NAME",
|
||||
"ALWAYS_USAGE_DESCRIPTION": "This app always requires location tracking",
|
||||
"MOTION_USAGE_DESCRIPTION": "This app requires motion detection"
|
||||
},
|
||||
"cordova-sqlite-storage": {},
|
||||
"cordova-plugin-nativestorage": {},
|
||||
"cordova-plugin-ble-central": {},
|
||||
"uk.co.workingedge.phonegap.plugin.launchnavigator": {},
|
||||
"cordova-plugin-themeablebrowser": {},
|
||||
"cordova-plugin-globalization": {},
|
||||
"cordova-plugin-android-permissions": {},
|
||||
"cordova-plugin-sms-receive": {},
|
||||
"cordova-plugin-local-notification": {},
|
||||
"mx.ferreyra.callnumber": {},
|
||||
"cordova-plugin-badge": {},
|
||||
"cordova-plugin-fingerprint-aio": {
|
||||
"FACEID_USAGE_DESCRIPTION": "User Authentication"
|
||||
},
|
||||
"cordova.plugins.diagnostic": {},
|
||||
"phonegap-plugin-barcodescanner": {},
|
||||
"cordova-plugin-camera": {},
|
||||
"cordova-plugin-ionic-keyboard": {},
|
||||
"cordova-android-support-gradle-release": {},
|
||||
"cordova-opentok-android-permissions": {},
|
||||
"cordova-plugin-health": {
|
||||
"HEALTH_READ_PERMISSION": "App needs read access to read heart rate",
|
||||
"HEALTH_WRITE_PERMISSION": "App needs write access for heart rate",
|
||||
"GMS_VERSION": "16.0.1"
|
||||
},
|
||||
"cordova-plugin-appavailability": {},
|
||||
"call-number": {},
|
||||
"cordova-support-google-services": {},
|
||||
"phonegap-plugin-push": {
|
||||
"GOOGLE_PLAY_SERVICES_VERSION": "16.0.0",
|
||||
"FCM_VERSION": "15.0.0"
|
||||
},
|
||||
"cordova-plugin-apprate": {},
|
||||
"cordova-plugin-inappbrowser": {},
|
||||
"cordova-sms-plugin": {}
|
||||
},
|
||||
"platforms": [
|
||||
"browser",
|
||||
"ios",
|
||||
"android"
|
||||
]
|
||||
}
|
||||
}
|
||||
@ -1 +0,0 @@
|
||||
to add ios - ionic cordova platform add ios
|
||||
@ -1 +0,0 @@
|
||||
to add ios - ionic cordova platform add ios
|
||||
@ -1,47 +0,0 @@
|
||||
{
|
||||
"project_info": {
|
||||
"project_number": "679409052782",
|
||||
"firebase_url": "https://mohemm-dce93.firebaseio.com",
|
||||
"project_id": "mohemm-dce93",
|
||||
"storage_bucket": "mohemm-dce93.appspot.com"
|
||||
},
|
||||
"client": [
|
||||
{
|
||||
"client_info": {
|
||||
"mobilesdk_app_id": "1:679409052782:android:dba155ac0859d7fea78a7f",
|
||||
"android_client_info": {
|
||||
"package_name": "hmg.cloudSolutions.mohem"
|
||||
}
|
||||
},
|
||||
"oauth_client": [
|
||||
{
|
||||
"client_id": "679409052782-mtd6d8rjltucnm9uatn6g7et08sm6lbv.apps.googleusercontent.com",
|
||||
"client_type": 3
|
||||
}
|
||||
],
|
||||
"api_key": [
|
||||
{
|
||||
"current_key": "AIzaSyDgWjuSBIKGghWxYg_KGBRIZTi-O_UA8mU"
|
||||
}
|
||||
],
|
||||
"services": {
|
||||
"appinvite_service": {
|
||||
"other_platform_oauth_client": [
|
||||
{
|
||||
"client_id": "679409052782-mtd6d8rjltucnm9uatn6g7et08sm6lbv.apps.googleusercontent.com",
|
||||
"client_type": 3
|
||||
},
|
||||
{
|
||||
"client_id": "679409052782-3teqf8vdh9e1suvnhddj3pgmna7vg5rt.apps.googleusercontent.com",
|
||||
"client_type": 2,
|
||||
"ios_info": {
|
||||
"bundle_id": "com.cloudsolutions.mohemm"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"configuration_version": "1"
|
||||
}
|
||||
@ -1,159 +0,0 @@
|
||||
@echo start installing required native and 3rd party plugins
|
||||
|
||||
@echo to update angular -> npm install -g @angular/cli
|
||||
@echo to update ionic -> npm install -g ionic
|
||||
|
||||
@echo add browser, android , ios platforms commit non required
|
||||
@echo to add browser -> call ionic cordova platform add browser
|
||||
@echo to add ios -> call ionic cordova platform add ios
|
||||
|
||||
call ionic cordova platform add android
|
||||
|
||||
|
||||
@echo copying android FCM google servcie file
|
||||
call cp ./google-services.json ./platforms/android/
|
||||
|
||||
call npm i @angular/animations
|
||||
call npm i @swimlane/ngx-charts --save
|
||||
|
||||
@echo primeng framework [angular]
|
||||
|
||||
call npm install primeng --save
|
||||
call npm install primeicons --save
|
||||
|
||||
@echo add css links for primeng in global.scss
|
||||
@echo @import "../node_modules/primeng/resources/themes/nova-light/theme.css";
|
||||
@echo @import "../node_modules/primeng/resources/primeng.min.css";
|
||||
@echo @import "../node_modules/primeicons/primeicons.css";
|
||||
|
||||
@echo install chartjs as dependency for primeng chartjs
|
||||
call npm install chart.js --save
|
||||
@echo add reference in [angular.json] in [scripts] array add (node_modules/chart.js/dist/Chart.js)
|
||||
|
||||
|
||||
@echo calendar https://mattlewis92.github.io/angular-calendar/#/kitchen-sink
|
||||
call npm install --save @ng-bootstrap/ng-bootstrap
|
||||
call npm install --save angular-calendar date-fns
|
||||
|
||||
@echo install android support gradle release because of barcode scanner to install missing android attributes
|
||||
call ionic cordova plugin add cordova-android-support-gradle-release --fetch
|
||||
|
||||
@echo sqlite storage
|
||||
call ionic cordova plugin add cordova-sqlite-storage
|
||||
call npm install @ionic-native/sqlite
|
||||
|
||||
|
||||
@echo native storage
|
||||
call ionic cordova plugin add cordova-plugin-nativestorage
|
||||
call npm install @ionic-native/native-storage
|
||||
|
||||
|
||||
@echo bluetooth ble centeral //check interface assets/js/bletooth.js
|
||||
call ionic cordova plugin add cordova-plugin-ble-central
|
||||
call npm install @ionic-native/ble
|
||||
|
||||
|
||||
@echo launch navigator
|
||||
@echo warning : for now we stick with launch navigator 3 since 5 has issue
|
||||
REM call ionic cordova plugin add uk.co.workingedge.phonegap.plugin.launchnavigator --variable GOOGLE_API_KEY_FOR_ANDROID="AIzaSyC-XbzwGMyAVCnspof0cqiO4iLfKmeEYVA"
|
||||
call ionic cordova plugin add uk.co.workingedge.phonegap.plugin.launchnavigator@3
|
||||
call npm install @ionic-native/launch-navigator
|
||||
|
||||
@echo themeablebrowser
|
||||
|
||||
call ionic cordova plugin add cordova-plugin-themeablebrowser
|
||||
call npm install @ionic-native/themeable-browser
|
||||
|
||||
@echo in app browser
|
||||
call ionic cordova plugin add cordova-plugin-inappbrowser
|
||||
call npm install @ionic-native/in-app-browser
|
||||
|
||||
@echo globalization
|
||||
|
||||
call ionic cordova plugin add cordova-plugin-globalization
|
||||
call npm install @ionic-native/globalization
|
||||
|
||||
|
||||
@echo android permissions plugin
|
||||
call ionic cordova plugin add cordova-plugin-android-permissions
|
||||
call npm install @ionic-native/android-permissions
|
||||
|
||||
@echo sms reader https://www.npmjs.com/package/cordova-plugin-sms-receive
|
||||
call npm i cordova-plugin-sms-receive
|
||||
call cordova plugin add cordova-plugin-sms-receive
|
||||
|
||||
@echo device information
|
||||
call ionic cordova plugin add cordova-plugin-device
|
||||
call npm install @ionic-native/device
|
||||
|
||||
@echo local notifications
|
||||
call ionic cordova plugin add cordova-plugin-local-notification
|
||||
call npm install @ionic-native/local-notifications
|
||||
|
||||
@echo call phone number
|
||||
call ionic cordova plugin add call-number
|
||||
call npm install @ionic-native/call-number
|
||||
|
||||
@echo badge
|
||||
call ionic cordova plugin add cordova-plugin-badge
|
||||
call npm install @ionic-native/badge
|
||||
|
||||
|
||||
|
||||
@echo biometric features
|
||||
call ionic cordova plugin add cordova-plugin-fingerprint-aio --variable FACEID_USAGE_DESCRIPTION="User Authentication"
|
||||
call npm install @ionic-native/fingerprint-aio
|
||||
|
||||
@echo install diagnostic
|
||||
call ionic cordova plugin add cordova.plugins.diagnostic
|
||||
call npm install @ionic-native/diagnostic
|
||||
|
||||
@echo install background-geolocation
|
||||
call ionic cordova plugin add cordova-plugin-mauron85-background-geolocation@alpha --variable GOOGLE_PLAY_SERVICES_VERSION="16.0.0"
|
||||
call npm install @ionic-native/background-geolocation
|
||||
|
||||
|
||||
@echo install barcode plugin
|
||||
call ionic cordova plugin add phonegap-plugin-barcodescanner
|
||||
call npm install @ionic-native/barcode-scanner
|
||||
|
||||
@echo install camera plugin
|
||||
call ionic cordova plugin add cordova-plugin-camera
|
||||
call npm install @ionic-native/camera
|
||||
|
||||
@echo install keyboard plugin
|
||||
call ionic cordova plugin add cordova-plugin-ionic-keyboard
|
||||
call npm install @ionic-native/keyboard
|
||||
|
||||
@echo install opentok required permissions
|
||||
call ionic cordova plugin add cordova-opentok-android-permissions
|
||||
|
||||
@echo install health plugin
|
||||
call ionic cordova plugin add cordova-plugin-health --variable HEALTH_READ_PERMISSION="App needs read access to read heart rate" --variable HEALTH_WRITE_PERMISSION="App needs write access for heart rate" --variable GMS_VERSION="16.0.1"
|
||||
call npm install @ionic-native/health
|
||||
|
||||
@echo install App Availability Plugin
|
||||
call ionic cordova plugin add cordova-plugin-appavailability
|
||||
call npm install @ionic-native/app-availability
|
||||
|
||||
@echo install rate plugin
|
||||
call ionic cordova plugin add cordova-plugin-apprate
|
||||
call npm install @ionic-native/app-rate
|
||||
|
||||
@echo reinitializing git repository
|
||||
@echo git init
|
||||
@echo git remote add origin https://enas_yaghi@hmg.git.cloudforge.com/patientappionic.git
|
||||
@echo git push -f origin master
|
||||
|
||||
|
||||
@echo update project from package.js change if necessary
|
||||
@echo to install all dependencies in package.json
|
||||
|
||||
@echo npm cache clean --force
|
||||
@echo exact version -> npm install --save --save-exact react
|
||||
@echo latest versions based on package.json rules -> npm install
|
||||
|
||||
@echo to build or serve for (( production ))
|
||||
@echo export NODE_OPTIONS=--max-old-space-size=4096
|
||||
@echo ionic cordova build android --release --aot --minifyjs --optimizejs --minifycss
|
||||
@echo ionic cordova build ios --release --aot --minifyjs --optimizejs --minifycss
|
||||
@ -1,161 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
echo start installing required native and 3rd party plugins
|
||||
|
||||
echo to update angular -> npm install -g @angular/cli
|
||||
echo to update ionic -> npm install -g ionic
|
||||
|
||||
echo add browser, android , ios platforms commit non required
|
||||
echo to add browser -> call ionic cordova platform add browser
|
||||
echo to add ios -> call ionic cordova platform add ios
|
||||
|
||||
ionic cordova platform add android
|
||||
|
||||
echo copying android FCM google servcie file
|
||||
cp ./google-services.json ./platforms/android/
|
||||
|
||||
npm i @angular/animations
|
||||
npm i @swimlane/ngx-charts --save
|
||||
|
||||
echo primeng framework [angular]
|
||||
|
||||
npm install primeng --save
|
||||
npm install primeicons --save
|
||||
|
||||
echo add css links for primeng in global.scss
|
||||
echo @import "../node_modules/primeng/resources/themes/nova-light/theme.css";
|
||||
echo @import "../node_modules/primeng/resources/primeng.min.css";
|
||||
echo @import "../node_modules/primeicons/primeicons.css";
|
||||
|
||||
echo install chartjs as dependency for primeng chartjs
|
||||
npm install chart.js --save
|
||||
# echo add reference in [angular.json] in [scripts] array add (node_modules/chart.js/dist/Chart.js)
|
||||
|
||||
|
||||
echo calendar https://mattlewis92.github.io/angular-calendar/#/kitchen-sink
|
||||
npm install --save @ng-bootstrap/ng-bootstrap
|
||||
npm install --save angular-calendar date-fns
|
||||
|
||||
echo install android support gradle release because of barcode scanner to install missing android attributes
|
||||
ionic cordova plugin add cordova-android-support-gradle-release --fetch
|
||||
|
||||
echo sqlite storage
|
||||
ionic cordova plugin add cordova-sqlite-storage
|
||||
npm install @ionic-native/sqlite
|
||||
|
||||
|
||||
echo native storage
|
||||
ionic cordova plugin add cordova-plugin-nativestorage
|
||||
npm install @ionic-native/native-storage
|
||||
|
||||
|
||||
echo bluetooth ble centeral //check interface assets/js/bletooth.js
|
||||
ionic cordova plugin add cordova-plugin-ble-central
|
||||
npm install @ionic-native/ble
|
||||
|
||||
|
||||
echo launch navigator
|
||||
echo warning : for now we stick with launch navigator 3 since 5 has issue
|
||||
# call ionic cordova plugin add uk.co.workingedge.phonegap.plugin.launchnavigator --variable GOOGLE_API_KEY_FOR_ANDROID="AIzaSyC-XbzwGMyAVCnspof0cqiO4iLfKmeEYVA"
|
||||
ionic cordova plugin add uk.co.workingedge.phonegap.plugin.launchnavigator@3
|
||||
npm install @ionic-native/launch-navigator
|
||||
|
||||
echo themeablebrowser
|
||||
|
||||
ionic cordova plugin add cordova-plugin-themeablebrowser
|
||||
npm install @ionic-native/themeable-browser
|
||||
|
||||
echo in app browser
|
||||
ionic cordova plugin add cordova-plugin-inappbrowser
|
||||
npm install @ionic-native/in-app-browser
|
||||
|
||||
|
||||
echo globalization
|
||||
|
||||
ionic cordova plugin add cordova-plugin-globalization
|
||||
npm install @ionic-native/globalization
|
||||
|
||||
|
||||
echo android permissions plugin
|
||||
ionic cordova plugin add cordova-plugin-android-permissions
|
||||
npm install @ionic-native/android-permissions
|
||||
|
||||
echo sms reader https://www.npmjs.com/package/cordova-plugin-sms-receive
|
||||
npm i cordova-plugin-sms-receive
|
||||
cordova plugin add cordova-plugin-sms-receive
|
||||
|
||||
echo device information§
|
||||
ionic cordova plugin add cordova-plugin-device
|
||||
npm install @ionic-native/device
|
||||
|
||||
echo local notifications
|
||||
ionic cordova plugin add cordova-plugin-local-notification
|
||||
npm install @ionic-native/local-notifications
|
||||
|
||||
echo call phone number
|
||||
ionic cordova plugin add call-number
|
||||
npm install @ionic-native/call-number
|
||||
|
||||
echo badge
|
||||
ionic cordova plugin add cordova-plugin-badge
|
||||
npm install @ionic-native/badge
|
||||
|
||||
|
||||
echo biometric features
|
||||
ionic cordova plugin add cordova-plugin-fingerprint-aio --variable FACEID_USAGE_DESCRIPTION="User Authentication"
|
||||
npm install @ionic-native/fingerprint-aio
|
||||
|
||||
echo install diagnostic
|
||||
ionic cordova plugin add cordova.plugins.diagnostic
|
||||
npm install @ionic-native/diagnostic
|
||||
|
||||
echo install background-geolocation
|
||||
ionic cordova plugin add cordova-plugin-mauron85-background-geolocation@alpha --variable GOOGLE_PLAY_SERVICES_VERSION="16.0.0"
|
||||
npm install @ionic-native/background-geolocation
|
||||
|
||||
echo install barcode plugin
|
||||
ionic cordova plugin add phonegap-plugin-barcodescanner
|
||||
npm install @ionic-native/barcode-scanner
|
||||
|
||||
echo install camera plugin
|
||||
ionic cordova plugin add cordova-plugin-camera
|
||||
npm install @ionic-native/camera
|
||||
|
||||
echo install keyboard plugin
|
||||
ionic cordova plugin add cordova-plugin-ionic-keyboard
|
||||
npm install @ionic-native/keyboard
|
||||
|
||||
echo install opentok required permissions
|
||||
ionic cordova plugin add cordova-opentok-android-permissions
|
||||
|
||||
echo install health plugin
|
||||
ionic cordova plugin add cordova-plugin-health --variable HEALTH_READ_PERMISSION="App needs read access to read heart rate" --variable HEALTH_WRITE_PERMISSION="App needs write access for heart rate" --variable GMS_VERSION="16.0.1"
|
||||
npm install @ionic-native/health
|
||||
|
||||
echo install App Availability Plugin
|
||||
ionic cordova plugin add cordova-plugin-appavailability
|
||||
npm install @ionic-native/app-availability
|
||||
|
||||
echo install rate plugin
|
||||
ionic cordova plugin add cordova-plugin-apprate
|
||||
npm install @ionic-native/app-rate
|
||||
|
||||
|
||||
echo reinitializing git repository
|
||||
echo git init
|
||||
echo git remote add origin https://enas_yaghi@hmg.git.cloudforge.com/patientappionic.git
|
||||
echo git push -f origin master
|
||||
|
||||
|
||||
echo update project from package.js change if necessary
|
||||
echo to install all dependencies in package.json
|
||||
|
||||
echo npm cache clean --force
|
||||
echo exact version -> npm install --save --save-exact react
|
||||
echo latest versions based on package.json rules -> npm install
|
||||
|
||||
echo to build or serve for (( production ))
|
||||
echo export NODE_OPTIONS=--max-old-space-size=4096
|
||||
echo ionic serve --prod -> for serving in production
|
||||
echo ionic cordova build android --release --aot --minifyjs --optimizejs --minifycss
|
||||
echo ionic cordova build ios --release --aot --minifyjs --optimizejs --minifycss
|
||||
@ -1 +0,0 @@
|
||||
latest versions based on package.json rules - install
|
||||
|
Before Width: | Height: | Size: 8.1 KiB |
|
Before Width: | Height: | Size: 3.0 KiB |
|
Before Width: | Height: | Size: 4.6 KiB |
|
Before Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 36 KiB |
|
Before Width: | Height: | Size: 45 KiB |
|
Before Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 93 KiB |
|
Before Width: | Height: | Size: 128 KiB |
|
Before Width: | Height: | Size: 161 KiB |
|
Before Width: | Height: | Size: 44 KiB |
|
Before Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 91 KiB |
|
Before Width: | Height: | Size: 122 KiB |
|
Before Width: | Height: | Size: 154 KiB |
@ -1,6 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<network-security-config>
|
||||
<domain-config cleartextTrafficPermitted="true">
|
||||
<domain>localhost</domain>
|
||||
</domain-config>
|
||||
</network-security-config>
|
||||
|
Before Width: | Height: | Size: 8.1 KiB After Width: | Height: | Size: 2.4 KiB |
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 4.6 KiB After Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 3.2 KiB |
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 5.0 KiB |
|
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 7.0 KiB |
|
Before Width: | Height: | Size: 37 KiB After Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 5.4 KiB |
|
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 9.7 KiB |
|
Before Width: | Height: | Size: 72 KiB After Width: | Height: | Size: 43 KiB |
|
Before Width: | Height: | Size: 105 KiB After Width: | Height: | Size: 64 KiB |
|
Before Width: | Height: | Size: 142 KiB After Width: | Height: | Size: 85 KiB |
|
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 5.4 KiB |
|
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 9.7 KiB |
|
Before Width: | Height: | Size: 68 KiB After Width: | Height: | Size: 44 KiB |
|
Before Width: | Height: | Size: 96 KiB After Width: | Height: | Size: 61 KiB |
|
Before Width: | Height: | Size: 137 KiB After Width: | Height: | Size: 82 KiB |
@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<network-security-config>
|
||||
<domain-config cleartextTrafficPermitted="true">
|
||||
<domain>localhost</domain>
|
||||
</domain-config>
|
||||
</network-security-config>
|
||||
<domain-config cleartextTrafficPermitted="true">
|
||||
<domain includeSubdomains="true">localhost</domain>
|
||||
</domain-config>
|
||||
</network-security-config>
|
||||
|
Before Width: | Height: | Size: 200 KiB After Width: | Height: | Size: 60 KiB |
@ -1 +0,0 @@
|
||||
1f488bbf4678f14e62f8bb82d7e4b0be
|
||||
|
Before Width: | Height: | Size: 200 KiB |
|
Before Width: | Height: | Size: 204 KiB After Width: | Height: | Size: 32 KiB |
|
After Width: | Height: | Size: 8.0 KiB |
|
After Width: | Height: | Size: 625 B |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 1.9 KiB |
|
After Width: | Height: | Size: 947 B |
|
After Width: | Height: | Size: 1.9 KiB |
|
After Width: | Height: | Size: 3.0 KiB |
|
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 5.9 KiB After Width: | Height: | Size: 4.1 KiB |
|
After Width: | Height: | Size: 2.9 KiB |
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 4.8 KiB After Width: | Height: | Size: 3.3 KiB |
|
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 2.0 KiB |
|
Before Width: | Height: | Size: 5.9 KiB After Width: | Height: | Size: 4.1 KiB |