Initial commit

This commit is contained in:
2018-09-22 10:44:38 +08:00
commit eacb95c18a
723 changed files with 100993 additions and 0 deletions
@@ -0,0 +1,42 @@
### 0.1.9
* Renamed Windows8 platform to Windows
### 0.1.7
* Add getPackageName feature (thanks to @gprasanth)
* Add getAppName feature (thanks to @mirko77)
* Fix for windows 8 (thanks to @deliriousrhino)
* Fix version number in plugin.xml file
### 0.1.6
* Split into two functions getAppVersion.getVersionNumber() and getAppVersion.getVersionCode() to return build number
* Fix a deprecation warning in iOS version
### 0.1.5
* iOS: Return version number but log and fall back to build number if it is nil (thanks to [Eddy Verbruggen](https://github.com/EddyVerbruggen))
### 0.1.4
* Return version number, not build number on iOS (thanks to http://www.humancopy.net)
* Support for Windows phone 8 (thanks to Cristi Badila / Gediminas Šaltenis)
* Support for AngularJS as well as jQuery (thanks to Matias Singers, [Red Ape Solutions](http://www.redapesolutions.com/))
### 0.1.3
* Fixes to Android for Corova 3 and above (thanks to AxoInsanit)
### 0.1.2
* Updated for Cordova 3 and above (thanks to Russell Keith-Magee [freakboy3742](https://github.com/freakboy3742)
### 0.1.1
* Improved README
* Bug fix for non-jQuery use
* Tidy plugin.xml
### 0.1.0
* First release
@@ -0,0 +1,20 @@
Copyright (c) 2013 White October
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,71 @@
# Cordova AppVersion plugin
Reads the version of your app from the target build settings.
## Installation
### With cordova-cli
If you are using [cordova-cli](https://github.com/apache/cordova-cli), install
with:
cordova plugin add cordova-plugin-app-version
### With plugman
With a plain [plugman](https://github.com/apache/cordova-plugman), you should be
able to install with something like:
plugman --platform <ios|android> --project <directory> --plugin https://github.com/whiteoctober/cordova-plugin-app-version.git
### Manually in iOS
TODO: Write these instructions
### Manually in Android
TODO: Write these instructions
## Use from Javascript
If you are using jQuery, AngularJS, WinJS or any Promise/A library (Bluebird), promise style is supported. Use something like:
cordova.getAppVersion.getVersionNumber().then(function (version) {
$('.version').text(version);
});
If not, pass a callback function:
cordova.getAppVersion.getVersionNumber(function (version) {
alert(version);
});
In addition to the version number you can also retrieve other details about your application:
### getAppName
Returns the name of the app. E.g. "My Awesome App"
### getPackageName
Returns the package name of the app - the reversed domain name app identifier like com.example.myawesomeapp
### getVersionCode
Returns the build identifier of the app
### getVersionNumber
Returns the version number of the app
## Credits
Written by [Robert (Jamie) Munro](http://twitter.com/rjmunro) at
[White October](http://whiteoctober.co.uk/)
Various others have contributed fixes and new features. See the CHANGELOG.md for details.
Original code based on the following Stack Overflow posts:
* [iOS](http://stackoverflow.com/a/14713364/3408)
* [Android](http://stackoverflow.com/a/3637686/3408)
@@ -0,0 +1 @@
0.1.9
@@ -0,0 +1,94 @@
{
"_args": [
[
{
"raw": "cordova-plugin-app-version",
"scope": null,
"escapedName": "cordova-plugin-app-version",
"name": "cordova-plugin-app-version",
"rawSpec": "",
"spec": "latest",
"type": "tag"
},
"D:\\pWork\\yunkong2.vis.cordova\\node_modules"
]
],
"_from": "cordova-plugin-app-version@latest",
"_id": "cordova-plugin-app-version@0.1.9",
"_inCache": true,
"_location": "/cordova-plugin-app-version",
"_nodeVersion": "5.8.0",
"_npmOperationalInternal": {
"host": "packages-16-east.internal.npmjs.com",
"tmp": "tmp/cordova-plugin-app-version-0.1.9.tgz_1472026299040_0.8699118127115071"
},
"_npmUser": {
"name": "whiteoctober",
"email": "info@whiteoctober.co.uk"
},
"_npmVersion": "3.7.3",
"_phantomChildren": {},
"_requested": {
"raw": "cordova-plugin-app-version",
"scope": null,
"escapedName": "cordova-plugin-app-version",
"name": "cordova-plugin-app-version",
"rawSpec": "",
"spec": "latest",
"type": "tag"
},
"_requiredBy": [
"#USER"
],
"_resolved": "https://registry.npmjs.org/cordova-plugin-app-version/-/cordova-plugin-app-version-0.1.9.tgz",
"_shasum": "9db0607863337a710489302e5f50a904f1449bdb",
"_shrinkwrap": null,
"_spec": "cordova-plugin-app-version",
"_where": "D:\\pWork\\yunkong2.vis.cordova\\node_modules",
"author": {
"name": "whiteoctober"
},
"bugs": {
"url": "https://github.com/whiteoctober/cordova-plugin-app-version/issues"
},
"dependencies": {},
"description": "Cordova plugin to return the version number of the current app",
"devDependencies": {},
"directories": {},
"dist": {
"shasum": "9db0607863337a710489302e5f50a904f1449bdb",
"tarball": "https://registry.npmjs.org/cordova-plugin-app-version/-/cordova-plugin-app-version-0.1.9.tgz"
},
"gitHead": "bcfecaf9e4d20135a487de5502f7d1e3b251e062",
"homepage": "https://github.com/whiteoctober/cordova-plugin-app-version#readme",
"keywords": [
"cordova",
"ecosystem:cordova",
"app",
"version",
"appversion",
"plugin"
],
"license": "MIT",
"maintainers": [
{
"name": "maistho",
"email": "maistho@gmail.com"
},
{
"name": "whiteoctober",
"email": "info@whiteoctober.co.uk"
}
],
"name": "cordova-plugin-app-version",
"optionalDependencies": {},
"readme": "ERROR: No README data found!",
"repository": {
"type": "git",
"url": "git+https://github.com/whiteoctober/cordova-plugin-app-version.git"
},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"version": "0.1.9"
}
@@ -0,0 +1,79 @@
<?xml version="1.0" encoding="UTF-8"?>
<plugin xmlns="http://www.phonegap.com/ns/plugins/1.0"
xmlns:android="http://schemas.android.com/apk/res/android"
id="cordova-plugin-app-version"
version="0.1.9">
<name>AppVersion</name>
<description>
This plugin will return the version of your App that you have set in
packaging it. I.e. it will always match the version in the app store.
</description>
<license>MIT</license>
<engines>
<!--
Cordova 2.8.0 is all I have tested on - it should work fine with earlier versions.
Please modify the below line, test, and submit a PR if it works for you.
-->
<engine name="cordova" version=">=3.0.0" />
</engines>
<js-module src="www/AppVersionPlugin.js">
<clobbers target="cordova.getAppVersion" />
</js-module>
<!-- android -->
<platform name="android">
<config-file target="res/xml/config.xml" parent="/*">
<feature name="AppVersion">
<param name="android-package" value="uk.co.whiteoctober.cordova.AppVersion"/>
</feature>
</config-file>
<source-file src="src/android/AppVersion.java" target-dir="src/uk/co/whiteoctober/cordova" />
</platform>
<!-- blackberry10 -->
<platform name="blackberry10">
<dependency id="cordova-plugin-bb-app" />
<config-file target="www/config.xml" parent="/widget">
<feature name="AppVersion" value="AppVersion" />
</config-file>
<js-module src="www/blackberry10/AppVersionProxy.js" name="AppVersionProxy.js" >
<runs />
</js-module>
</platform>
<!-- ios -->
<platform name="ios">
<plugins-plist key="AppVersion" string="AppVersion" />
<config-file target="config.xml" parent="/*">
<feature name="AppVersion">
<param name="ios-package" value="AppVersion" />
</feature>
</config-file>
<header-file src="src/ios/AppVersion.h" />
<source-file src="src/ios/AppVersion.m" />
</platform>
<!-- windows8 -->
<platform name="windows">
<js-module src="src/windows/AppVersionProxy.js" name="AppVersionProxy">
<merges target=""/>
</js-module>
</platform>
<!-- wp8 -->
<platform name="wp8">
<config-file target="config.xml" parent="/*">
<feature name="AppVersion">
<param name="wp-package" value="AppVersion"/>
</feature>
</config-file>
<source-file src="src/wp8/AppVersion.cs" />
</platform>
</plugin>
@@ -0,0 +1,45 @@
package uk.co.whiteoctober.cordova;
import org.apache.cordova.CordovaPlugin;
import org.apache.cordova.CallbackContext;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.pm.PackageManager;
public class AppVersion extends CordovaPlugin {
@Override
public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
try {
if (action.equals("getAppName")) {
PackageManager packageManager = this.cordova.getActivity().getPackageManager();
ApplicationInfo app = packageManager.getApplicationInfo(this.cordova.getActivity().getPackageName(), 0);
callbackContext.success((String)packageManager.getApplicationLabel(app));
return true;
}
if (action.equals("getPackageName")) {
callbackContext.success(this.cordova.getActivity().getPackageName());
return true;
}
if (action.equals("getVersionNumber")) {
PackageManager packageManager = this.cordova.getActivity().getPackageManager();
callbackContext.success(packageManager.getPackageInfo(this.cordova.getActivity().getPackageName(), 0).versionName);
return true;
}
if (action.equals("getVersionCode")) {
PackageManager packageManager = this.cordova.getActivity().getPackageManager();
callbackContext.success(packageManager.getPackageInfo(this.cordova.getActivity().getPackageName(), 0).versionCode);
return true;
}
return false;
} catch (NameNotFoundException e) {
callbackContext.success("N/A");
return true;
}
}
}
@@ -0,0 +1,13 @@
#import <Cordova/CDVPlugin.h>
@interface AppVersion : CDVPlugin
- (void)getAppName:(CDVInvokedUrlCommand*)command;
- (void)getPackageName:(CDVInvokedUrlCommand*)command;
- (void)getVersionNumber:(CDVInvokedUrlCommand*)command;
- (void)getVersionCode:(CDVInvokedUrlCommand*)command;
@end
@@ -0,0 +1,47 @@
#import "AppVersion.h"
#import <Cordova/CDVPluginResult.h>
@implementation AppVersion
- (void)getAppName : (CDVInvokedUrlCommand *)command
{
NSString * callbackId = command.callbackId;
NSString * version =[[[NSBundle mainBundle]infoDictionary]objectForKey :@"CFBundleDisplayName"];
CDVPluginResult * pluginResult =[CDVPluginResult resultWithStatus : CDVCommandStatus_OK messageAsString : version];
[self.commandDelegate sendPluginResult : pluginResult callbackId : callbackId];
}
- (void)getPackageName:(CDVInvokedUrlCommand*)command
{
NSString* callbackId = command.callbackId;
NSString* packageName = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleIdentifier"];
CDVPluginResult* pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString:packageName];
[self.commandDelegate sendPluginResult:pluginResult callbackId:callbackId];
}
- (void)getVersionNumber:(CDVInvokedUrlCommand*)command
{
NSString* callbackId = command.callbackId;
NSString* version = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];
if (version == nil) {
NSLog(@"CFBundleShortVersionString was nil, attempting CFBundleVersion");
version = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];
if (version == nil) {
NSLog(@"CFBundleVersion was also nil, giving up");
// not calling error callback here to maintain backward compatibility
}
}
CDVPluginResult* pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString:version];
[self.commandDelegate sendPluginResult:pluginResult callbackId:callbackId];
}
- (void)getVersionCode:(CDVInvokedUrlCommand*)command
{
NSString* callbackId = command.callbackId;
NSString* version = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];
CDVPluginResult* pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString:version];
[self.commandDelegate sendPluginResult:pluginResult callbackId:callbackId];
}
@end
@@ -0,0 +1,33 @@
AppVersionProxy = {
getVersionNumber: function (successCallback, failCallback, args) {
var version = Windows.ApplicationModel.Package.current.id.version;
successCallback([version.major, version.minor, version.build, version.revision].join('.'));
},
getAppName: function (successCallback, failCallback, args) {
if(Windows.ApplicationModel.Package.current && Windows.ApplicationModel.Package.current.displayName){
var name = Windows.ApplicationModel.Package.current.displayName;
successCallback(name);
} else {
Windows.ApplicationModel.Package.current.installedLocation.getFileAsync("AppxManifest.xml").then(function (file) {
Windows.Data.Xml.Dom.XmlDocument.loadFromFileAsync(file).then(function (xdoc) {
var displayName = xdoc.getElementsByTagName("DisplayName");
if (displayName && displayName.length === 1) {
var name = displayName[0].innerText;
successCallback(name);
} else {
(failCallback || function(){})({ code: -1, message: "ERR_DISPLAY_NAME_NOT_FOUND" });
}
}, (failCallback || function(){}));
}, (failCallback || function(){}));
}
},
getPackageName: function (successCallback, failCallback, args) {
var name = Windows.ApplicationModel.Package.current.id.name;
successCallback(name);
},
getVersionCode: function (successCallback, failCallback, args) {
var build = Windows.ApplicationModel.Package.current.id.version.build;
successCallback(build);
}
};
cordova.commandProxy.add("AppVersion", AppVersionProxy);
@@ -0,0 +1,53 @@
using System;
using System.Reflection;
using System.Xml.Linq;
using Windows.ApplicationModel;
using WPCordovaClassLib.Cordova;
using WPCordovaClassLib.Cordova.Commands;
namespace Cordova.Extension.Commands
{
public class AppVersion : BaseCommand
{
public void getVersionNumber(string empty)
{
string version;
if (Environment.OSVersion.Version.Major <= 8)
{
// Package.Current.Id is NOT working in Windows Phone 8
// Workaround based on http://stackoverflow.com/questions/14371275/how-can-i-get-my-windows-store-apps-title-and-version-info
version = XDocument.Load("WMAppManifest.xml").Root.Element("App").Attribute("Version").Value;
}
else
{
version = Package.Current.Id.Version.ToString();
}
this.DispatchCommandResult(new PluginResult(PluginResult.Status.OK, version));
}
public void getAppName(string empty)
{
string name;
if (Environment.OSVersion.Version.Major <= 8)
{
//Windows.ApplicationModel.Package.Current.Id is NOT working in Windows Phone 8
//Workaround based on http://stackoverflow.com/questions/14371275/how-can-i-get-my-windows-store-apps-title-and-version-info
name = XDocument.Load("WMAppManifest.xml").Root.Element("App").Attribute("Title").Value;
}
else
{
name = Package.Current.Id.Name;
}
this.DispatchCommandResult(new PluginResult(PluginResult.Status.OK, name));
}
public void getPackageName(string empty)
{
string package = Assembly.GetExecutingAssembly().GetName().Name;
this.DispatchCommandResult(new PluginResult(PluginResult.Status.OK, package));
}
}
}
@@ -0,0 +1,65 @@
/*jslint indent: 2 */
/*global window, jQuery, angular, cordova */
"use strict";
// Returns a jQuery or AngularJS deferred object, or pass a success and fail callbacks if you don't want to use jQuery or AngularJS
var getPromisedCordovaExec = function (command, success, fail) {
var toReturn, deferred, injector, $q;
if (success === undefined) {
if (window.jQuery) {
deferred = jQuery.Deferred();
success = deferred.resolve;
fail = deferred.reject;
toReturn = deferred;
} else if (window.angular) {
injector = angular.injector(["ng"]);
$q = injector.get("$q");
deferred = $q.defer();
success = deferred.resolve;
fail = deferred.reject;
toReturn = deferred.promise;
} else if (window.when && window.when.promise) {
deferred = when.defer();
success = deferred.resolve;
fail = deferred.reject;
toReturn = deferred.promise;
} else if (window.Promise) {
toReturn = new Promise(function(c, e) {
success = c;
fail = e;
});
} else if (window.WinJS && window.WinJS.Promise) {
toReturn = new WinJS.Promise(function(c, e) {
success = c;
fail = e;
});
} else {
return console.error('AppVersion either needs a success callback, or jQuery/AngularJS/Promise/WinJS.Promise defined for using promises');
}
}
// 5th param is NOT optional. must be at least empty array
cordova.exec(success, fail, "AppVersion", command, []);
return toReturn;
};
var getAppVersion = function (success, fail) {
return getPromisedCordovaExec('getVersionNumber', success, fail);
};
getAppVersion.getAppName = function (success, fail) {
return getPromisedCordovaExec('getAppName', success, fail);
};
getAppVersion.getPackageName = function (success, fail) {
return getPromisedCordovaExec('getPackageName', success, fail);
};
getAppVersion.getVersionNumber = function (success, fail) {
return getPromisedCordovaExec('getVersionNumber', success, fail);
};
getAppVersion.getVersionCode = function (success, fail) {
return getPromisedCordovaExec('getVersionCode', success, fail);
};
module.exports = getAppVersion;
@@ -0,0 +1,18 @@
module.exports = {
getVersionNumber: function( success, fail ) {
if( !blackberry || !blackberry.app || !blackberry.app.version ) {
if( fail ) {
return fail();
} else {
return "";
}
}
if( success ) {
return success( blackberry.app.version );
}
return blackberry.app.version;
}
};
require("cordova/exec/proxy").add("AppVersion", module.exports);