DELETED all unwanted files

MOE_DEV_NEW_TEMPORARY_DESIGN
umasoodch 3 years ago
parent cef0d886c7
commit adf9a1cf04

@ -1,224 +0,0 @@
SSUUMMMMAARRYY OOFF LLEESSSS CCOOMMMMAANNDDSS
Commands marked with * may be preceded by a number, _N.
Notes in parentheses indicate the behavior if _N is given.
A key preceded by a caret indicates the Ctrl key; thus ^K is ctrl-K.
h H Display this help.
q :q Q :Q ZZ Exit.
---------------------------------------------------------------------------
MMOOVVIINNGG
e ^E j ^N CR * Forward one line (or _N lines).
y ^Y k ^K ^P * Backward one line (or _N lines).
f ^F ^V SPACE * Forward one window (or _N lines).
b ^B ESC-v * Backward one window (or _N lines).
z * Forward one window (and set window to _N).
w * Backward one window (and set window to _N).
ESC-SPACE * Forward one window, but don't stop at end-of-file.
d ^D * Forward one half-window (and set half-window to _N).
u ^U * Backward one half-window (and set half-window to _N).
ESC-) RightArrow * Right one half screen width (or _N positions).
ESC-( LeftArrow * Left one half screen width (or _N positions).
ESC-} ^RightArrow Right to last column displayed.
ESC-{ ^LeftArrow Left to first column.
F Forward forever; like "tail -f".
ESC-F Like F but stop when search pattern is found.
r ^R ^L Repaint screen.
R Repaint screen, discarding buffered input.
---------------------------------------------------
Default "window" is the screen height.
Default "half-window" is half of the screen height.
---------------------------------------------------------------------------
SSEEAARRCCHHIINNGG
/_p_a_t_t_e_r_n * Search forward for (_N-th) matching line.
?_p_a_t_t_e_r_n * Search backward for (_N-th) matching line.
n * Repeat previous search (for _N-th occurrence).
N * Repeat previous search in reverse direction.
ESC-n * Repeat previous search, spanning files.
ESC-N * Repeat previous search, reverse dir. & spanning files.
ESC-u Undo (toggle) search highlighting.
&_p_a_t_t_e_r_n * Display only matching lines
---------------------------------------------------
A search pattern may begin with one or more of:
^N or ! Search for NON-matching lines.
^E or * Search multiple files (pass thru END OF FILE).
^F or @ Start search at FIRST file (for /) or last file (for ?).
^K Highlight matches, but don't move (KEEP position).
^R Don't use REGULAR EXPRESSIONS.
---------------------------------------------------------------------------
JJUUMMPPIINNGG
g < ESC-< * Go to first line in file (or line _N).
G > ESC-> * Go to last line in file (or line _N).
p % * Go to beginning of file (or _N percent into file).
t * Go to the (_N-th) next tag.
T * Go to the (_N-th) previous tag.
{ ( [ * Find close bracket } ) ].
} ) ] * Find open bracket { ( [.
ESC-^F _<_c_1_> _<_c_2_> * Find close bracket _<_c_2_>.
ESC-^B _<_c_1_> _<_c_2_> * Find open bracket _<_c_1_>
---------------------------------------------------
Each "find close bracket" command goes forward to the close bracket
matching the (_N-th) open bracket in the top line.
Each "find open bracket" command goes backward to the open bracket
matching the (_N-th) close bracket in the bottom line.
m_<_l_e_t_t_e_r_> Mark the current top line with <letter>.
M_<_l_e_t_t_e_r_> Mark the current bottom line with <letter>.
'_<_l_e_t_t_e_r_> Go to a previously marked position.
'' Go to the previous position.
^X^X Same as '.
ESC-M_<_l_e_t_t_e_r_> Clear a mark.
---------------------------------------------------
A mark is any upper-case or lower-case letter.
Certain marks are predefined:
^ means beginning of the file
$ means end of the file
---------------------------------------------------------------------------
CCHHAANNGGIINNGG FFIILLEESS
:e [_f_i_l_e] Examine a new file.
^X^V Same as :e.
:n * Examine the (_N-th) next file from the command line.
:p * Examine the (_N-th) previous file from the command line.
:x * Examine the first (or _N-th) file from the command line.
:d Delete the current file from the command line list.
= ^G :f Print current file name.
---------------------------------------------------------------------------
MMIISSCCEELLLLAANNEEOOUUSS CCOOMMMMAANNDDSS
-_<_f_l_a_g_> Toggle a command line option [see OPTIONS below].
--_<_n_a_m_e_> Toggle a command line option, by name.
__<_f_l_a_g_> Display the setting of a command line option.
___<_n_a_m_e_> Display the setting of an option, by name.
+_c_m_d Execute the less cmd each time a new file is examined.
!_c_o_m_m_a_n_d Execute the shell command with $SHELL.
|XX_c_o_m_m_a_n_d Pipe file between current pos & mark XX to shell command.
s _f_i_l_e Save input to a file.
v Edit the current file with $VISUAL or $EDITOR.
V Print version number of "less".
---------------------------------------------------------------------------
OOPPTTIIOONNSS
Most options may be changed either on the command line,
or from within less by using the - or -- command.
Options may be given in one of two forms: either a single
character preceded by a -, or a name preceded by --.
-? ........ --help
Display help (from command line).
-a ........ --search-skip-screen
Search skips current screen.
-A ........ --SEARCH-SKIP-SCREEN
Search starts just after target line.
-b [_N] .... --buffers=[_N]
Number of buffers.
-B ........ --auto-buffers
Don't automatically allocate buffers for pipes.
-c ........ --clear-screen
Repaint by clearing rather than scrolling.
-d ........ --dumb
Dumb terminal.
-D [_x_n_._n] . --color=_x_n_._n
Set screen colors. (MS-DOS only)
-e -E .... --quit-at-eof --QUIT-AT-EOF
Quit at end of file.
-f ........ --force
Force open non-regular files.
-F ........ --quit-if-one-screen
Quit if entire file fits on first screen.
-g ........ --hilite-search
Highlight only last match for searches.
-G ........ --HILITE-SEARCH
Don't highlight any matches for searches.
-h [_N] .... --max-back-scroll=[_N]
Backward scroll limit.
-i ........ --ignore-case
Ignore case in searches that do not contain uppercase.
-I ........ --IGNORE-CASE
Ignore case in all searches.
-j [_N] .... --jump-target=[_N]
Screen position of target lines.
-J ........ --status-column
Display a status column at left edge of screen.
-k [_f_i_l_e] . --lesskey-file=[_f_i_l_e]
Use a lesskey file.
-K ........ --quit-on-intr
Exit less in response to ctrl-C.
-L ........ --no-lessopen
Ignore the LESSOPEN environment variable.
-m -M .... --long-prompt --LONG-PROMPT
Set prompt style.
-n -N .... --line-numbers --LINE-NUMBERS
Don't use line numbers.
-o [_f_i_l_e] . --log-file=[_f_i_l_e]
Copy to log file (standard input only).
-O [_f_i_l_e] . --LOG-FILE=[_f_i_l_e]
Copy to log file (unconditionally overwrite).
-p [_p_a_t_t_e_r_n] --pattern=[_p_a_t_t_e_r_n]
Start at pattern (from command line).
-P [_p_r_o_m_p_t] --prompt=[_p_r_o_m_p_t]
Define new prompt.
-q -Q .... --quiet --QUIET --silent --SILENT
Quiet the terminal bell.
-r -R .... --raw-control-chars --RAW-CONTROL-CHARS
Output "raw" control characters.
-s ........ --squeeze-blank-lines
Squeeze multiple blank lines.
-S ........ --chop-long-lines
Chop (truncate) long lines rather than wrapping.
-t [_t_a_g] .. --tag=[_t_a_g]
Find a tag.
-T [_t_a_g_s_f_i_l_e] --tag-file=[_t_a_g_s_f_i_l_e]
Use an alternate tags file.
-u -U .... --underline-special --UNDERLINE-SPECIAL
Change handling of backspaces.
-V ........ --version
Display the version number of "less".
-w ........ --hilite-unread
Highlight first new line after forward-screen.
-W ........ --HILITE-UNREAD
Highlight first new line after any forward movement.
-x [_N[,...]] --tabs=[_N[,...]]
Set tab stops.
-X ........ --no-init
Don't use termcap init/deinit strings.
-y [_N] .... --max-forw-scroll=[_N]
Forward scroll limit.
-z [_N] .... --window=[_N]
Set size of window.
-" [_c[_c]] . --quotes=[_c[_c]]
Set shell quote characters.
-~ ........ --tilde
Don't display tildes after end of file.
-# [_N] .... --shift=[_N]
Horizontal scroll amount (0 = one half screen width)
--follow-name
The F command changes files if the input file is renamed.
--mouse
Enable mouse input.
--no-keypad
Don't send termcap keypad init/deinit strings.
--no-histdups
Remove duplicates from command history.
--rscroll=C
Set the character used to mark truncated lines.
--save-marks
Retain marks across invocations of less.
--use-backslash
Subsequent options use backslash as escape char.
--wheel-lines=N
Each click of the mouse wheel moves N lines.
---------------------------------------------------------------------------

@ -1,17 +0,0 @@
{
"name": "com.huawei.cordovahmsgmscheckplugin",
"version": "1.0.0",
"description": "Account Check Kit 4.0",
"cordova": {
"id": "com.huawei.cordovahmsgmscheckplugin",
"platforms": [
"android"
]
},
"keywords": [
"ecosystem:cordova",
"cordova-android"
],
"author": "",
"license": "ISC"
}

@ -1,29 +0,0 @@
<?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>

@ -1,37 +0,0 @@
#!/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);
}
};

@ -1,9 +0,0 @@
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();
};

@ -1,7 +0,0 @@
var helper = require('./helper');
module.exports = function(context) {
// Remove the Gradle modifications that were added when the plugin was installed.
helper.restoreRootBuildGradle();
};

@ -1,131 +0,0 @@
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);
},
};

@ -1,93 +0,0 @@
/**
* 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;
}
},
};

@ -1,88 +0,0 @@
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;
}
}
}
}

@ -1,29 +0,0 @@
// 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'
})

@ -1,17 +0,0 @@
{
"name": "com.huawei.cordovahmslocationplugin",
"version": "1.0.0",
"description": "Location Service",
"cordova": {
"id": "com.huawei.cordovahmslocationplugin",
"platforms": [
"android"
]
},
"keywords": [
"ecosystem:cordova",
"cordova-android"
],
"author": "",
"license": "ISC"
}

@ -1,29 +0,0 @@
<?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>

@ -1,38 +0,0 @@
#!/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);
}
};

@ -1,9 +0,0 @@
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();
};

@ -1,7 +0,0 @@
var helper = require('./helper');
module.exports = function(context) {
// Remove the Gradle modifications that were added when the plugin was installed.
helper.restoreRootBuildGradle();
};

@ -1,117 +0,0 @@
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);
}
};

@ -1,88 +0,0 @@
/**
* 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;
}
}
};

@ -1,186 +0,0 @@
package com.huawei.cordovahmslocationplugin;
import android.Manifest;
import android.content.IntentSender;
import android.location.Location;
import android.os.Build;
import android.os.Looper;
import android.util.Log;
import com.huawei.hms.common.ApiException;
import com.huawei.hms.common.ResolvableApiException;
import com.huawei.hms.location.FusedLocationProviderClient;
import com.huawei.hms.location.LocationCallback;
import com.huawei.hms.location.LocationRequest;
import com.huawei.hms.location.LocationResult;
import com.huawei.hms.location.LocationServices;
import com.huawei.hms.location.LocationSettingsRequest;
import com.huawei.hms.location.LocationSettingsStatusCodes;
import com.huawei.hms.location.SettingsClient;
import org.apache.cordova.CallbackContext;
import org.apache.cordova.CordovaPlugin;
import org.apache.cordova.PluginResult;
import org.json.JSONArray;
import org.json.JSONException;
/**
*
*/
// https://developer.huawei.com/consumer/en/doc/development/HMS-Plugin-References-V1/data-types-0000001056511617-V1#section2512153819346
public class CordovaHMSLocationPlugin extends CordovaPlugin {
private static final String TAG = CordovaHMSLocationPlugin.class.getSimpleName();
private FusedLocationProviderClient fusedLocationProviderClient;
private LocationRequest mLocationRequest;
private LocationCallback mLocationCallback;
private CallbackContext mCallbackContext;
@Override
public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
requestPermission();
if (fusedLocationProviderClient == null) {
fusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(cordova.getContext());
}
switch (action) {
case "requestLocation":
this.setLocationRequest();
this.setLocationCallback();
this.checkLocationSetting(callbackContext);
return true;
case "removeLocation":
this.stopLocation();
return true;
case "getLastlocation":
this.getLastlocation(callbackContext);
return true;
default:
return false;
}
}
private void returnLocation(Location location) {
if (mCallbackContext != null) {
Log.d(TAG, "returnLocation");
String message = location.getLatitude() + "," + location.getLongitude() + "," + location.isFromMockProvider();
PluginResult result = new PluginResult(PluginResult.Status.OK, message);
result.setKeepCallback(true);
mCallbackContext.sendPluginResult(result);
}
}
private void getLastlocation(CallbackContext callbackContext) {
fusedLocationProviderClient.getLastLocation().addOnSuccessListener(location -> {
Log.d(TAG, "getLastlocation success");
if (location == null) {
return;
}
// Location对象的处理逻辑
String message = location.getLatitude() + "," + location.getLongitude();
callbackContext.success(message);
}).addOnFailureListener(e -> {
// 异常处理逻辑
callbackContext.error("getLastlocation fail");
});
}
private void stopLocation() {
if (fusedLocationProviderClient == null) {
Log.d(TAG, "fusedLocationProviderClient is null");
return;
}
// 注意停止位置更新时mLocationCallback必须与requestLocationUpdates方法中的LocationCallback参数为同一对象。
fusedLocationProviderClient.removeLocationUpdates(mLocationCallback)
.addOnSuccessListener(aVoid -> {
// 停止位置更新成功
Log.d(TAG, "stop success");
mCallbackContext = null;
})
.addOnFailureListener(e -> {
// 停止位置更新失败
Log.d(TAG, "stop fail");
});
}
private void setLocationCallback() {
mLocationCallback = new LocationCallback() {
@Override
public void onLocationResult(LocationResult locationResult) {
if (locationResult != null) {
//处理位置回调结果
if (mLocationCallback != null) {
Log.d(TAG, "onLocationResult");
Location location = locationResult.getLocations().get(0);
returnLocation(location);
}
}
}
};
}
private void setLocationRequest() {
mLocationRequest = new LocationRequest();
// 设置位置更新的间隔(毫秒为单位)
mLocationRequest.setInterval(10000);
// mLocationRequest.setNumUpdates(1);
// 设置权重
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
}
private void checkLocationSetting(CallbackContext callbackContext) {
SettingsClient settingsClient = LocationServices.getSettingsClient(cordova.getContext());
LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder();
builder.addLocationRequest(mLocationRequest);
LocationSettingsRequest locationSettingsRequest = builder.build();
// 检查设备定位设置
settingsClient.checkLocationSettings(locationSettingsRequest)
.addOnSuccessListener(locationSettingsResponse -> {
// 设置满足定位条件,再发起位置请求
fusedLocationProviderClient
.requestLocationUpdates(mLocationRequest, mLocationCallback, Looper.getMainLooper())
.addOnSuccessListener(aVoid -> {
// 接口调用成功的处理
Log.d(TAG, "request success");
mCallbackContext = callbackContext;
});
})
.addOnFailureListener(e -> {
// 设置不满足定位条件
int statusCode = ((ApiException) e).getStatusCode();
switch (statusCode) {
case LocationSettingsStatusCodes.RESOLUTION_REQUIRED:
try {
ResolvableApiException rae = (ResolvableApiException) e;
// 调用startResolutionForResult可以弹窗提示用户打开相应权限
rae.startResolutionForResult(cordova.getActivity(), 0);
} catch (IntentSender.SendIntentException sie) {
Log.d(TAG, sie.getMessage());
}
break;
}
});
}
private void requestPermission() {
if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.P) {
Log.i(TAG, "sdk < 29 Q");
if (!cordova.hasPermission(Manifest.permission.ACCESS_FINE_LOCATION)
|| !cordova.hasPermission(Manifest.permission.ACCESS_COARSE_LOCATION)) {
String[] strings =
{Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION};
cordova.requestPermissions(this, 1, strings);
}
} else {
if (!cordova.hasPermission(Manifest.permission.ACCESS_FINE_LOCATION)
|| !cordova.hasPermission(Manifest.permission.ACCESS_COARSE_LOCATION)
|| !cordova.hasPermission("android.permission.ACCESS_BACKGROUND_LOCATION")) {
String[] strings = {android.Manifest.permission.ACCESS_FINE_LOCATION,
android.Manifest.permission.ACCESS_COARSE_LOCATION,
"android.permission.ACCESS_BACKGROUND_LOCATION"};
cordova.requestPermissions(this, 2, strings);
}
}
}
}

@ -1,29 +0,0 @@
// 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'
})

@ -1,21 +0,0 @@
{
"name": "cordovahmspushplugin",
"version": "1.0.0",
"description": "For Hms Push",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "test",
"license": "ISC",
"cordova": {
"id": "com.huawei.cordovahmspushplugin",
"platforms": [
"android"
]
},
"keywords": [
"ecosystem:cordova",
"cordova-android"
]
}

@ -1,38 +0,0 @@
<?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>

@ -1,38 +0,0 @@
#!/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);
}
};

@ -1,9 +0,0 @@
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();
};

@ -1,7 +0,0 @@
var helper = require('./helper');
module.exports = function(context) {
// Remove the Gradle modifications that were added when the plugin was installed.
helper.restoreRootBuildGradle();
};

@ -1,117 +0,0 @@
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);
}
};

@ -1,88 +0,0 @@
/**
* 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;
}
}
};

@ -1,112 +0,0 @@
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());
}
}
}

@ -1,32 +0,0 @@
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);
}
}
}

@ -1,29 +0,0 @@
// 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'
})

@ -144,8 +144,6 @@
"@types/jasminewd2": "~2.0.3", "@types/jasminewd2": "~2.0.3",
"@types/node": "~10.12.0", "@types/node": "~10.12.0",
"codelyzer": "~4.5.0", "codelyzer": "~4.5.0",
"com.huawei.cordovahmsgmscheckplugin": "file:CordovaHMSPlugin/CordovaHMSGMSCheckPlugin",
"com.huawei.cordovahmslocationplugin": "file:CordovaHMSPlugin/CordovaHMSLocationPlugin",
"cordova-ios": "^6.2.0", "cordova-ios": "^6.2.0",
"cordova-plugin-wifiwizard2": "^3.1.1", "cordova-plugin-wifiwizard2": "^3.1.1",
"es6-promise-plugin": "^4.1.0", "es6-promise-plugin": "^4.1.0",
@ -211,8 +209,6 @@
}, },
"phonegap-nfc": {}, "phonegap-nfc": {},
"wifiwizard2": {}, "wifiwizard2": {},
"com.huawei.cordovahmsgmscheckplugin": {},
"com.huawei.cordovahmslocationplugin": {},
"cordova-plugin-x-socialsharing": {}, "cordova-plugin-x-socialsharing": {},
"cordova-plugin-firebasex": { "cordova-plugin-firebasex": {
"FIREBASE_ANALYTICS_COLLECTION_ENABLED": "true", "FIREBASE_ANALYTICS_COLLECTION_ENABLED": "true",

File diff suppressed because it is too large Load Diff

@ -1,40 +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
}
]
}
}
}
],
"configuration_version": "1"
}

@ -1,40 +0,0 @@
{
"project_info": {
"project_number": "608631731238",
"firebase_url": "https://mohemm-cs.firebaseio.com",
"project_id": "mohemm-cs",
"storage_bucket": "mohemm-cs.appspot.com"
},
"client": [
{
"client_info": {
"mobilesdk_app_id": "1:608631731238:android:3a8384007f8700ec",
"android_client_info": {
"package_name": "com.cloudsolutions.mohemm"
}
},
"oauth_client": [
{
"client_id": "608631731238-83a5qndedia496ssa6ekkd3db5jo8khr.apps.googleusercontent.com",
"client_type": 3
}
],
"api_key": [
{
"current_key": "AIzaSyB5zpz9vC2NOxsU1dPr0TK0dVaMY5D4Mjg"
}
],
"services": {
"appinvite_service": {
"other_platform_oauth_client": [
{
"client_id": "608631731238-83a5qndedia496ssa6ekkd3db5jo8khr.apps.googleusercontent.com",
"client_type": 3
}
]
}
}
}
],
"configuration_version": "1"
}

@ -1,40 +0,0 @@
{
"project_info": {
"project_number": "448880075189",
"firebase_url": "https://al-habib-mohemm.firebaseio.com",
"project_id": "al-habib-mohemm",
"storage_bucket": "al-habib-mohemm.appspot.com"
},
"client": [
{
"client_info": {
"mobilesdk_app_id": "1:448880075189:android:5bb4821d515a826d88b9fc",
"android_client_info": {
"package_name": "com.cloudsolutions.alhabibmohemm"
}
},
"oauth_client": [
{
"client_id": "448880075189-49hc2l78pr9hsmr9p3k7j411r40diej8.apps.googleusercontent.com",
"client_type": 3
}
],
"api_key": [
{
"current_key": "AIzaSyC8nrli7eyuRNow8nF-QHvDMOxqUkj6fEw"
}
],
"services": {
"appinvite_service": {
"other_platform_oauth_client": [
{
"client_id": "448880075189-49hc2l78pr9hsmr9p3k7j411r40diej8.apps.googleusercontent.com",
"client_type": 3
}
]
}
}
}
],
"configuration_version": "1"
}

@ -1,6 +0,0 @@
-----BEGIN PRIVATE KEY-----
MIGTAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBHkwdwIBAQQgpFHLFUMeYsa60Ljq
iLNjrd5vW54LWW29shqYplVrbJGgCgYIKoZIzj0DAQehRANCAATtOB42ERmP9URQ
ERKOSOsNs84YYhYOYgJWzEl8vawi4mUI2MaliCdXkTxzqChTWuPw2YN4n1ebAclM
GEIcObMj
-----END PRIVATE KEY-----

@ -1,36 +0,0 @@
<?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,47 +0,0 @@
{
"project_info": {
"project_number": "448880075189",
"firebase_url": "https://al-habib-mohemm.firebaseio.com",
"project_id": "al-habib-mohemm",
"storage_bucket": "al-habib-mohemm.appspot.com"
},
"client": [
{
"client_info": {
"mobilesdk_app_id": "1:448880075189:android:5bb4821d515a826d88b9fc",
"android_client_info": {
"package_name": "com.cloudsolutions.alhabibmohemm"
}
},
"oauth_client": [
{
"client_id": "448880075189-49hc2l78pr9hsmr9p3k7j411r40diej8.apps.googleusercontent.com",
"client_type": 3
}
],
"api_key": [
{
"current_key": "AIzaSyC8nrli7eyuRNow8nF-QHvDMOxqUkj6fEw"
}
],
"services": {
"appinvite_service": {
"other_platform_oauth_client": [
{
"client_id": "448880075189-49hc2l78pr9hsmr9p3k7j411r40diej8.apps.googleusercontent.com",
"client_type": 3
},
{
"client_id": "448880075189-tcgggmh2ua9tsmdr97c1ttcgrmf5kg5m.apps.googleusercontent.com",
"client_type": 2,
"ios_info": {
"bundle_id": "com.cloudsolutions.alhabibmohemm"
}
}
]
}
}
}
],
"configuration_version": "1"
}

@ -1,6 +0,0 @@
-----BEGIN PRIVATE KEY-----
MIGTAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBHkwdwIBAQQg+oBl9YdOiMRXfQZe
nIe6tR1tojoOvvcohNJmJtH+SsagCgYIKoZIzj0DAQehRANCAATDY9E82MAgMI/g
bKF1t4zLHJ1Yt9uoOnedNYsfyZLhh3l3ZyXRj02uDXz04AsNbNFjkLJXPc4xY9ad
+A4rY70x
-----END PRIVATE KEY-----

@ -1,36 +0,0 @@
<?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>679409052782-3teqf8vdh9e1suvnhddj3pgmna7vg5rt.apps.googleusercontent.com</string>
<key>REVERSED_CLIENT_ID</key>
<string>com.googleusercontent.apps.679409052782-3teqf8vdh9e1suvnhddj3pgmna7vg5rt</string>
<key>API_KEY</key>
<string>AIzaSyCjMjhbeS7qilBoP4SH0t3SgkkHryf34JA</string>
<key>GCM_SENDER_ID</key>
<string>679409052782</string>
<key>PLIST_VERSION</key>
<string>1</string>
<key>BUNDLE_ID</key>
<string>com.cloudsolutions.mohemm</string>
<key>PROJECT_ID</key>
<string>mohemm-dce93</string>
<key>STORAGE_BUCKET</key>
<string>mohemm-dce93.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:679409052782:ios:ace07cf8ba043b48a78a7f</string>
<key>DATABASE_URL</key>
<string>https://mohemm-dce93.firebaseio.com</string>
</dict>
</plist>

@ -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,17 +0,0 @@
-----BEGIN CERTIFICATE REQUEST-----
MIICoTCCAYkCAQAwXDEzMDEGCSqGSIb3DQEJARYkQ2hvdWRocnkuTWFzb29kQGNs
b3Vkc29sdXRpb24tc2EuY29tMRgwFgYDVQQDDA9DaG91ZGhyeSBNYXNvb2QxCzAJ
BgNVBAYTAlNBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApkQA87EF
GiHTVqx7SWD+3qaVSHTFrTCro9DJZ5na/WGsF06xfoZJT/S5jFW5DlWHWsJak/vx
BqsuH3VGTEneoEiWc+Zyh6Lb6SvgDmfee2MB+k8E6dHE4Z5Z7aiBXSTjIjKcWEjj
41++FVihddY+p9723WFhcEWcA2Nq2p9KSZlKZNqui5xU/16z6RW7YSu0ylBUE8+g
E5GLzRgALzoSNT5OedXqdIoR9k1Jds2ep+DKqjl35hKOX215b3tzfyamPK2i1UHB
eaYBXnObkyJe4EIcqlTM8Eeo23yxsHYyRrJmJDDm4GaXRXrQ2193XpLHNlq88no5
wgI+yYsb7zvwowIDAQABoAAwDQYJKoZIhvcNAQELBQADggEBAIQsZ1fP8XImSQ+L
TvR4mT98DI5Ld/xLnw/LXRNJrZVtxMjdUwwcMhvxbfGX4Ji4wpttkzbkr86Jyh+U
dbfVqHKLIGo8xjYl4uCcjYIqnY2hBduv+/aWWoFAJ9w5tv8Oo/3hasF97zQi+vZh
Uzqdp/8IWb8/QGE2HRqKbSUMKBeUzDmyQTnM7QeS5kuT5MQZjDnFLV2v3Sxa383L
9jFqNQjS7b1mcVJ4/HsW7yUYoDZ8C90fUp2zs5k4SFad8MG4J1IsoshXuBgBvcFg
haDt0P+hh6QVk9yf4zGgcbU7501ya5T5MgZ8moxnlklf3mqGUCK2IU8PBc2IquyG
2PrSkpI=
-----END CERTIFICATE REQUEST-----

@ -1,6 +0,0 @@
CS :
android:hmg.cloudSolutions.mohem
IOS :com.cloudsolutions.mohemm
HMG :
com.cloudsolutions.alhabibmohemm

Binary file not shown.

@ -1,48 +0,0 @@
GET_SHIFT_TYPES
GET_TIME_CARD_SUMMARY
GET_DAY_HOURS_TYPE_DETAILS
GET_SCHEDULE_SHIFTS_DETAILS
GET_SWIPES
GET_PAYSLIP
GET_SUMMARY_OF_PAYMENT
GET_EARNINGS
GET_DEDUCTIONS
GET_PAYMENT_INFORMATION
GET_MO_NOTIFICATION_BODY
GET_PR_NOTIFICATION_BODY
GET_PO_NOTIFICATION_BODY
GET_PO_ITEM_HISTORY
GET_QUOTATION_ANALYSIS
GET_PENDING_REQ_FUNCTIONS
GET_PENDING_REQ_DETAILS
UPDATE_EMPLOYEE_IMAGE
GET_OBJECT_VALUES
GET_EMPLOYEE_PHONES
SUBMIT_PHONES_TRANSACTION
START_PHONES_APPROVAL_PROCESS
GET_PHONES_NOTIFICATION_BODY
GET_EMPLOYEE_BASIC_DETAILS
GET_BASIC_DET_COLS_STRUCTURE
GET_BASIC_DET_DFF_STRUCTURE
SUBMIT_BASIC_DET_TRANSACTION
START_BASIC_DET_APPR_PROCESS
GET_BASIC_DET_NTF_BODY
GET_MO_ITEM_HISTORY
GET_COUNTRIES
GET_EMPLOYEE_ADDRESS
GET_ADDRESS_DFF_STRUCTURE
SUBMIT_ADDRESS_TRANSACTION
START_ADDRESS_APPROVAL_PROCESS
GET_ADDRESS_NOTIFICATION_BODY
GET_EMPLOYEE_CONTACTS
GET_CONTACT_DETAILS
GET_CONTACT_COLS_STRUCTURE
GET_CONTACT_DFF_STRUCTURE
SUBMIT_CONTACT_TRANSACTION
START_CONTACT_APPROVAL_PROCESS
GET_TERM_COLS_STRUCTURE
GET_TERM_DFF_STRUCTURE
SUBMIT_TERM_TRANSACTION
START_TERM_APPROVAL_PROCESS
GET_TERM_NOTIFICATION_BODY
GET_CONTACT_NOTIFICATION_BODY
Loading…
Cancel
Save