diff options
| author | Jules Laplace <julescarbon@gmail.com> | 2017-11-05 20:24:49 +0100 |
|---|---|---|
| committer | Jules Laplace <julescarbon@gmail.com> | 2017-11-05 20:24:49 +0100 |
| commit | f828ce6d0c308c2c5d67c71ee3141b015807fd62 (patch) | |
| tree | 4f5a819afe988158902b907f4f7582448819a594 /StoneIsland/platforms | |
| parent | 1f38892c1729572fa98801692dc20c60931d7377 (diff) | |
cordova-plugin-sim
Diffstat (limited to 'StoneIsland/platforms')
23 files changed, 636 insertions, 10 deletions
diff --git a/StoneIsland/platforms/android/AndroidManifest.xml b/StoneIsland/platforms/android/AndroidManifest.xml index 75322df7..59ddcea4 100755 --- a/StoneIsland/platforms/android/AndroidManifest.xml +++ b/StoneIsland/platforms/android/AndroidManifest.xml @@ -55,4 +55,5 @@ <uses-permission android:name="${applicationId}.permission.PushHandlerActivity" /> <permission android:name="${applicationId}.permission.C2D_MESSAGE" android:protectionLevel="signature" /> <permission android:name="${applicationId}.permission.PushHandlerActivity" android:protectionLevel="signature" /> + <uses-permission android:name="android.permission.READ_PHONE_STATE" /> </manifest> diff --git a/StoneIsland/platforms/android/android.json b/StoneIsland/platforms/android/android.json index 3e69085c..5dc54401 100755 --- a/StoneIsland/platforms/android/android.json +++ b/StoneIsland/platforms/android/android.json @@ -55,6 +55,10 @@ { "xml": "<feature name=\"PushNotification\"><param name=\"android-package\" value=\"com.adobe.phonegap.push.PushPlugin\" /></feature>", "count": 1 + }, + { + "xml": "<feature name=\"Sim\"><param name=\"android-package\" value=\"com.pbakondy.Sim\" /></feature>", + "count": 1 } ] } @@ -146,6 +150,10 @@ { "xml": "<uses-feature android:name=\"android.hardware.location.gps\" />", "count": 1 + }, + { + "xml": "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\" />", + "count": 1 } ], "/manifest/application/activity": [ @@ -235,6 +243,9 @@ "phonegap-plugin-push": { "SENDER_ID": "85075801930", "PACKAGE_NAME": "us.okfoc.stoneisland" + }, + "cordova-plugin-sim": { + "PACKAGE_NAME": "us.okfoc.stoneisland" } }, "dependent_plugins": {}, @@ -351,6 +362,22 @@ "clobbers": [ "PushNotification" ] + }, + { + "id": "cordova-plugin-sim.Sim", + "file": "plugins/cordova-plugin-sim/www/sim.js", + "pluginId": "cordova-plugin-sim", + "merges": [ + "window.plugins.sim" + ] + }, + { + "id": "cordova-plugin-sim.SimAndroid", + "file": "plugins/cordova-plugin-sim/www/android/sim.js", + "pluginId": "cordova-plugin-sim", + "merges": [ + "window.plugins.sim" + ] } ], "plugin_metadata": { @@ -367,6 +394,7 @@ "cordova-plugin-statusbar": "2.2.3", "cordova-plugin-app-name": "1.0.4", "cordova-plugin-splashscreen": "4.0.3", - "phonegap-plugin-push": "1.9.2" + "phonegap-plugin-push": "1.9.2", + "cordova-plugin-sim": "1.3.3" } }
\ No newline at end of file diff --git a/StoneIsland/platforms/android/assets/www/cordova_plugins.js b/StoneIsland/platforms/android/assets/www/cordova_plugins.js new file mode 100644 index 00000000..770bd946 --- /dev/null +++ b/StoneIsland/platforms/android/assets/www/cordova_plugins.js @@ -0,0 +1,153 @@ +cordova.define('cordova/plugin_list', function(require, exports, module) { +module.exports = [ + { + "file": "plugins/cordova-plugin-inappbrowser/www/inappbrowser.js", + "id": "cordova-plugin-inappbrowser.inappbrowser", + "pluginId": "cordova-plugin-inappbrowser", + "clobbers": [ + "cordova.InAppBrowser.open", + "window.open" + ] + }, + { + "file": "plugins/cordova-plugin-x-socialsharing/www/SocialSharing.js", + "id": "cordova-plugin-x-socialsharing.SocialSharing", + "pluginId": "cordova-plugin-x-socialsharing", + "clobbers": [ + "window.plugins.socialsharing" + ] + }, + { + "file": "plugins/cordova-plugin-customurlscheme/www/android/LaunchMyApp.js", + "id": "cordova-plugin-customurlscheme.LaunchMyApp", + "pluginId": "cordova-plugin-customurlscheme", + "clobbers": [ + "window.plugins.launchmyapp" + ] + }, + { + "file": "plugins/cordova-plugin-device/www/device.js", + "id": "cordova-plugin-device.device", + "pluginId": "cordova-plugin-device", + "clobbers": [ + "device" + ] + }, + { + "file": "plugins/cordova-plugin-network-information/www/network.js", + "id": "cordova-plugin-network-information.network", + "pluginId": "cordova-plugin-network-information", + "clobbers": [ + "navigator.connection", + "navigator.network.connection" + ] + }, + { + "file": "plugins/cordova-plugin-network-information/www/Connection.js", + "id": "cordova-plugin-network-information.Connection", + "pluginId": "cordova-plugin-network-information", + "clobbers": [ + "Connection" + ] + }, + { + "file": "plugins/cordova-plugin-dialogs/www/notification.js", + "id": "cordova-plugin-dialogs.notification", + "pluginId": "cordova-plugin-dialogs", + "merges": [ + "navigator.notification" + ] + }, + { + "file": "plugins/cordova-plugin-dialogs/www/android/notification.js", + "id": "cordova-plugin-dialogs.notification_android", + "pluginId": "cordova-plugin-dialogs", + "merges": [ + "navigator.notification" + ] + }, + { + "file": "plugins/cordova-plugin-geolocation/www/android/geolocation.js", + "id": "cordova-plugin-geolocation.geolocation", + "pluginId": "cordova-plugin-geolocation", + "clobbers": [ + "navigator.geolocation" + ] + }, + { + "file": "plugins/cordova-plugin-geolocation/www/PositionError.js", + "id": "cordova-plugin-geolocation.PositionError", + "pluginId": "cordova-plugin-geolocation", + "runs": true + }, + { + "file": "plugins/ionic-plugin-keyboard/www/android/keyboard.js", + "id": "ionic-plugin-keyboard.keyboard", + "pluginId": "ionic-plugin-keyboard", + "clobbers": [ + "cordova.plugins.Keyboard" + ], + "runs": true + }, + { + "id": "cordova-plugin-statusbar.statusbar", + "file": "plugins/cordova-plugin-statusbar/www/statusbar.js", + "pluginId": "cordova-plugin-statusbar", + "clobbers": [ + "window.StatusBar" + ] + }, + { + "id": "cordova-plugin-splashscreen.SplashScreen", + "file": "plugins/cordova-plugin-splashscreen/www/splashscreen.js", + "pluginId": "cordova-plugin-splashscreen", + "clobbers": [ + "navigator.splashscreen" + ] + }, + { + "id": "phonegap-plugin-push.PushNotification", + "file": "plugins/phonegap-plugin-push/www/push.js", + "pluginId": "phonegap-plugin-push", + "clobbers": [ + "PushNotification" + ] + }, + { + "id": "cordova-plugin-sim.Sim", + "file": "plugins/cordova-plugin-sim/www/sim.js", + "pluginId": "cordova-plugin-sim", + "merges": [ + "window.plugins.sim" + ] + }, + { + "id": "cordova-plugin-sim.SimAndroid", + "file": "plugins/cordova-plugin-sim/www/android/sim.js", + "pluginId": "cordova-plugin-sim", + "merges": [ + "window.plugins.sim" + ] + } +]; +module.exports.metadata = +// TOP OF METADATA +{ + "cordova-plugin-inappbrowser": "1.5.0", + "cordova-plugin-x-socialsharing": "5.1.3", + "cordova-plugin-customurlscheme": "4.2.0", + "cordova-plugin-whitelist": "1.3.0", + "cordova-plugin-device": "1.1.3", + "cordova-plugin-network-information": "1.3.0", + "cordova-plugin-dialogs": "1.3.0", + "cordova-plugin-compat": "1.1.0", + "cordova-plugin-geolocation": "2.4.0", + "ionic-plugin-keyboard": "2.2.1", + "cordova-plugin-statusbar": "2.2.3", + "cordova-plugin-app-name": "1.0.4", + "cordova-plugin-splashscreen": "4.0.3", + "phonegap-plugin-push": "1.9.2", + "cordova-plugin-sim": "1.3.3" +}; +// BOTTOM OF METADATA +});
\ No newline at end of file diff --git a/StoneIsland/platforms/android/assets/www/plugins/cordova-plugin-sim/www/android/sim.js b/StoneIsland/platforms/android/assets/www/plugins/cordova-plugin-sim/www/android/sim.js new file mode 100644 index 00000000..5813054f --- /dev/null +++ b/StoneIsland/platforms/android/assets/www/plugins/cordova-plugin-sim/www/android/sim.js @@ -0,0 +1,11 @@ +cordova.define("cordova-plugin-sim.SimAndroid", function(require, exports, module) { +module.exports = { + hasReadPermission: function(successCallback, errorCallback) { + cordova.exec(successCallback, errorCallback, 'Sim', 'hasReadPermission', []); + }, + requestReadPermission: function(successCallback, errorCallback) { + cordova.exec(successCallback, errorCallback, 'Sim', 'requestReadPermission', []); + } +}; + +}); diff --git a/StoneIsland/platforms/android/assets/www/plugins/cordova-plugin-sim/www/sim.js b/StoneIsland/platforms/android/assets/www/plugins/cordova-plugin-sim/www/sim.js new file mode 100644 index 00000000..ccc52e54 --- /dev/null +++ b/StoneIsland/platforms/android/assets/www/plugins/cordova-plugin-sim/www/sim.js @@ -0,0 +1,8 @@ +cordova.define("cordova-plugin-sim.Sim", function(require, exports, module) { +module.exports = { + getSimInfo: function(successCallback, errorCallback) { + cordova.exec(successCallback, errorCallback, 'Sim', 'getSimInfo', []); + } +}; + +}); diff --git a/StoneIsland/platforms/android/platform_www/cordova_plugins.js b/StoneIsland/platforms/android/platform_www/cordova_plugins.js index 8f70abd6..770bd946 100755 --- a/StoneIsland/platforms/android/platform_www/cordova_plugins.js +++ b/StoneIsland/platforms/android/platform_www/cordova_plugins.js @@ -112,6 +112,22 @@ module.exports = [ "clobbers": [ "PushNotification" ] + }, + { + "id": "cordova-plugin-sim.Sim", + "file": "plugins/cordova-plugin-sim/www/sim.js", + "pluginId": "cordova-plugin-sim", + "merges": [ + "window.plugins.sim" + ] + }, + { + "id": "cordova-plugin-sim.SimAndroid", + "file": "plugins/cordova-plugin-sim/www/android/sim.js", + "pluginId": "cordova-plugin-sim", + "merges": [ + "window.plugins.sim" + ] } ]; module.exports.metadata = @@ -130,7 +146,8 @@ module.exports.metadata = "cordova-plugin-statusbar": "2.2.3", "cordova-plugin-app-name": "1.0.4", "cordova-plugin-splashscreen": "4.0.3", - "phonegap-plugin-push": "1.9.2" + "phonegap-plugin-push": "1.9.2", + "cordova-plugin-sim": "1.3.3" }; // BOTTOM OF METADATA });
\ No newline at end of file diff --git a/StoneIsland/platforms/android/platform_www/plugins/cordova-plugin-sim/www/android/sim.js b/StoneIsland/platforms/android/platform_www/plugins/cordova-plugin-sim/www/android/sim.js new file mode 100644 index 00000000..5813054f --- /dev/null +++ b/StoneIsland/platforms/android/platform_www/plugins/cordova-plugin-sim/www/android/sim.js @@ -0,0 +1,11 @@ +cordova.define("cordova-plugin-sim.SimAndroid", function(require, exports, module) { +module.exports = { + hasReadPermission: function(successCallback, errorCallback) { + cordova.exec(successCallback, errorCallback, 'Sim', 'hasReadPermission', []); + }, + requestReadPermission: function(successCallback, errorCallback) { + cordova.exec(successCallback, errorCallback, 'Sim', 'requestReadPermission', []); + } +}; + +}); diff --git a/StoneIsland/platforms/android/platform_www/plugins/cordova-plugin-sim/www/sim.js b/StoneIsland/platforms/android/platform_www/plugins/cordova-plugin-sim/www/sim.js new file mode 100644 index 00000000..ccc52e54 --- /dev/null +++ b/StoneIsland/platforms/android/platform_www/plugins/cordova-plugin-sim/www/sim.js @@ -0,0 +1,8 @@ +cordova.define("cordova-plugin-sim.Sim", function(require, exports, module) { +module.exports = { + getSimInfo: function(successCallback, errorCallback) { + cordova.exec(successCallback, errorCallback, 'Sim', 'getSimInfo', []); + } +}; + +}); diff --git a/StoneIsland/platforms/android/res/xml/config.xml b/StoneIsland/platforms/android/res/xml/config.xml index 9f4cb684..43132082 100644 --- a/StoneIsland/platforms/android/res/xml/config.xml +++ b/StoneIsland/platforms/android/res/xml/config.xml @@ -74,4 +74,7 @@ <feature name="PushNotification"> <param name="android-package" value="com.adobe.phonegap.push.PushPlugin" /> </feature> + <feature name="Sim"> + <param name="android-package" value="com.pbakondy.Sim" /> + </feature> </widget> diff --git a/StoneIsland/platforms/android/src/com/pbakondy/Sim.java b/StoneIsland/platforms/android/src/com/pbakondy/Sim.java new file mode 100644 index 00000000..df3542f7 --- /dev/null +++ b/StoneIsland/platforms/android/src/com/pbakondy/Sim.java @@ -0,0 +1,264 @@ +// MCC and MNC codes on Wikipedia +// http://en.wikipedia.org/wiki/Mobile_country_code + +// Mobile Network Codes (MNC) for the international identification plan for public networks and subscriptions +// http://www.itu.int/pub/T-SP-E.212B-2014 + +// class TelephonyManager +// http://developer.android.com/reference/android/telephony/TelephonyManager.html +// https://github.com/android/platform_frameworks_base/blob/master/telephony/java/android/telephony/TelephonyManager.java + +// permissions +// http://developer.android.com/training/permissions/requesting.html + +// Multiple SIM Card Support +// https://developer.android.com/about/versions/android-5.1.html + +// class SubscriptionManager +// https://developer.android.com/reference/android/telephony/SubscriptionManager.html +// https://github.com/android/platform_frameworks_base/blob/master/telephony/java/android/telephony/SubscriptionManager.java + +// class SubscriptionInfo +// https://developer.android.com/reference/android/telephony/SubscriptionInfo.html +// https://github.com/android/platform_frameworks_base/blob/master/telephony/java/android/telephony/SubscriptionInfo.java + +// Cordova Permissions API +// https://cordova.apache.org/docs/en/latest/guide/platforms/android/plugin.html#android-permissions + +package com.pbakondy; + +import org.apache.cordova.CallbackContext; +import org.apache.cordova.CordovaPlugin; +import org.apache.cordova.PluginResult; +import org.apache.cordova.LOG; + +import org.json.JSONObject; +import org.json.JSONArray; +import org.json.JSONException; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.content.pm.PackageManager; +import android.os.Build; +import android.Manifest; + +import android.telephony.SubscriptionInfo; +import android.telephony.SubscriptionManager; +import android.telephony.TelephonyManager; + +import java.util.List; + +public class Sim extends CordovaPlugin { + private static final String LOG_TAG = "CordovaPluginSim"; + + + private static final String GET_SIM_INFO = "getSimInfo"; + private static final String HAS_READ_PERMISSION = "hasReadPermission"; + private static final String REQUEST_READ_PERMISSION = "requestReadPermission"; + + private CallbackContext callback; + + @SuppressLint("HardwareIds") + @Override + public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException { + callback = callbackContext; + + if (GET_SIM_INFO.equals(action)) { + Context context = this.cordova.getActivity().getApplicationContext(); + + TelephonyManager manager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); + + // dual SIM detection with SubscriptionManager API + // requires API 22 + // requires permission READ_PHONE_STATE + JSONArray sims = null; + Integer phoneCount = null; + Integer activeSubscriptionInfoCount = null; + Integer activeSubscriptionInfoCountMax = null; + + try { + // TelephonyManager.getPhoneCount() requires API 23 + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) { + phoneCount = manager.getPhoneCount(); + } + + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP_MR1) { + + if (simPermissionGranted(Manifest.permission.READ_PHONE_STATE)) { + + SubscriptionManager subscriptionManager = (SubscriptionManager) context.getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE); + activeSubscriptionInfoCount = subscriptionManager.getActiveSubscriptionInfoCount(); + activeSubscriptionInfoCountMax = subscriptionManager.getActiveSubscriptionInfoCountMax(); + + sims = new JSONArray(); + + List<SubscriptionInfo> subscriptionInfos = subscriptionManager.getActiveSubscriptionInfoList(); + for (SubscriptionInfo subscriptionInfo : subscriptionInfos) { + + CharSequence carrierName = subscriptionInfo.getCarrierName(); + String countryIso = subscriptionInfo.getCountryIso(); + int dataRoaming = subscriptionInfo.getDataRoaming(); // 1 is enabled ; 0 is disabled + CharSequence displayName = subscriptionInfo.getDisplayName(); + String iccId = subscriptionInfo.getIccId(); + int mcc = subscriptionInfo.getMcc(); + int mnc = subscriptionInfo.getMnc(); + String number = subscriptionInfo.getNumber(); + int simSlotIndex = subscriptionInfo.getSimSlotIndex(); + int subscriptionId = subscriptionInfo.getSubscriptionId(); + + boolean networkRoaming = subscriptionManager.isNetworkRoaming(simSlotIndex); + + String deviceId = null; + // TelephonyManager.getDeviceId(slotId) requires API 23 + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) { + deviceId = manager.getDeviceId(simSlotIndex); + } + + JSONObject simData = new JSONObject(); + + simData.put("carrierName", carrierName.toString()); + simData.put("displayName", displayName.toString()); + simData.put("countryCode", countryIso); + simData.put("mcc", mcc); + simData.put("mnc", mnc); + simData.put("isNetworkRoaming", networkRoaming); + simData.put("isDataRoaming", (dataRoaming == 1)); + simData.put("simSlotIndex", simSlotIndex); + simData.put("phoneNumber", number); + if (deviceId != null) { + simData.put("deviceId", deviceId); + } + simData.put("simSerialNumber", iccId); + simData.put("subscriptionId", subscriptionId); + + sims.put(simData); + + } + } + } + } catch (JSONException e) { + e.printStackTrace(); + } catch (Exception e) { + e.printStackTrace(); + } + + String phoneNumber = null; + String countryCode = manager.getSimCountryIso(); + String simOperator = manager.getSimOperator(); + String carrierName = manager.getSimOperatorName(); + + String deviceId = null; + String deviceSoftwareVersion = null; + String simSerialNumber = null; + String subscriberId = null; + + int callState = manager.getCallState(); + int dataActivity = manager.getDataActivity(); + int networkType = manager.getNetworkType(); + int phoneType = manager.getPhoneType(); + int simState = manager.getSimState(); + + boolean isNetworkRoaming = manager.isNetworkRoaming(); + + if (simPermissionGranted(Manifest.permission.READ_PHONE_STATE)) { + phoneNumber = manager.getLine1Number(); + deviceId = manager.getDeviceId(); + deviceSoftwareVersion = manager.getDeviceSoftwareVersion(); + simSerialNumber = manager.getSimSerialNumber(); + subscriberId = manager.getSubscriberId(); + } + + String mcc = ""; + String mnc = ""; + + if (simOperator.length() >= 3) { + mcc = simOperator.substring(0, 3); + mnc = simOperator.substring(3); + } + + JSONObject result = new JSONObject(); + + result.put("carrierName", carrierName); + result.put("countryCode", countryCode); + result.put("mcc", mcc); + result.put("mnc", mnc); + + result.put("callState", callState); + result.put("dataActivity", dataActivity); + result.put("networkType", networkType); + result.put("phoneType", phoneType); + result.put("simState", simState); + + result.put("isNetworkRoaming", isNetworkRoaming); + + if (phoneCount != null) { + result.put("phoneCount", (int)phoneCount); + } + if (activeSubscriptionInfoCount != null) { + result.put("activeSubscriptionInfoCount", (int)activeSubscriptionInfoCount); + } + if (activeSubscriptionInfoCountMax != null) { + result.put("activeSubscriptionInfoCountMax", (int)activeSubscriptionInfoCountMax); + } + + if (simPermissionGranted(Manifest.permission.READ_PHONE_STATE)) { + result.put("phoneNumber", phoneNumber); + result.put("deviceId", deviceId); + result.put("deviceSoftwareVersion", deviceSoftwareVersion); + result.put("simSerialNumber", simSerialNumber); + result.put("subscriberId", subscriberId); + } + + if (sims != null && sims.length() != 0) { + result.put("cards", sims); + } + + callbackContext.success(result); + + return true; + } else if (HAS_READ_PERMISSION.equals(action)) { + hasReadPermission(); + return true; + } else if (REQUEST_READ_PERMISSION.equals(action)) { + requestReadPermission(); + return true; + } else { + return false; + } + } + + private void hasReadPermission() { + this.callback.sendPluginResult(new PluginResult(PluginResult.Status.OK, + simPermissionGranted(Manifest.permission.READ_PHONE_STATE))); + } + + private void requestReadPermission() { + requestPermission(Manifest.permission.READ_PHONE_STATE); + } + + private boolean simPermissionGranted(String type) { + if (Build.VERSION.SDK_INT < 23) { + return true; + } + return cordova.hasPermission(type); + } + + private void requestPermission(String type) { + LOG.i(LOG_TAG, "requestPermission"); + if (!simPermissionGranted(type)) { + cordova.requestPermission(this, 12345, type); + } else { + this.callback.success(); + } + } + + @Override + public void onRequestPermissionResult(int requestCode, String[] permissions, int[] grantResults) throws JSONException + { + if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { + this.callback.success(); + } else { + this.callback.error("Permission denied"); + } + } +} diff --git a/StoneIsland/platforms/ios/CordovaLib/CordovaLib.xcodeproj/xcuserdata/user.xcuserdatad/xcschemes/xcschememanagement.plist b/StoneIsland/platforms/ios/CordovaLib/CordovaLib.xcodeproj/xcuserdata/user.xcuserdatad/xcschemes/xcschememanagement.plist index 4bc8d36e..54b0db05 100644 --- a/StoneIsland/platforms/ios/CordovaLib/CordovaLib.xcodeproj/xcuserdata/user.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/StoneIsland/platforms/ios/CordovaLib/CordovaLib.xcodeproj/xcuserdata/user.xcuserdatad/xcschemes/xcschememanagement.plist @@ -7,12 +7,12 @@ <key>Cordova.xcscheme</key> <dict> <key>orderHint</key> - <integer>3</integer> + <integer>4</integer> </dict> <key>CordovaLib.xcscheme</key> <dict> <key>orderHint</key> - <integer>2</integer> + <integer>3</integer> </dict> </dict> </dict> diff --git a/StoneIsland/platforms/ios/Stone Island.xcodeproj/project.pbxproj b/StoneIsland/platforms/ios/Stone Island.xcodeproj/project.pbxproj index d3f7acd2..a637a063 100755 --- a/StoneIsland/platforms/ios/Stone Island.xcodeproj/project.pbxproj +++ b/StoneIsland/platforms/ios/Stone Island.xcodeproj/project.pbxproj @@ -5,7 +5,6 @@ }; objectVersion = 46; objects = { - /* Begin PBXBuildFile section */ 0207DA581B56EA530066E2B4 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0207DA571B56EA530066E2B4 /* Images.xcassets */; }; 0A9D8E7D77FD4C27B4DD2393 /* CDVNotification.m in Sources */ = {isa = PBXBuildFile; fileRef = 2923E526CC8E4009B2DA8D64 /* CDVNotification.m */; }; @@ -39,6 +38,7 @@ CE8687FA42EA49F2936AA5E4 /* CDVConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = 669C0562CA3E4A2E9E6898D6 /* CDVConnection.m */; }; EE95056671E844C9921729AE /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 65AAB41973FB4238B7AD4D85 /* AudioToolbox.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; EFF00C22294FE756DED28A81 /* libPods-Stone Island.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 78CB957A0B40BA339C669D53 /* libPods-Stone Island.a */; }; + 52A4EAACA1F34D6EBEED78A3 /* Sim.m in Sources */ = {isa = PBXBuildFile; fileRef = DCFA1E58FE794CA6BE2A4834 /* Sim.m */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -125,6 +125,8 @@ EDA99B42F1E147FCA8824E6E /* CoreLocation.framework */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = wrapper.framework; name = CoreLocation.framework; path = System/Library/Frameworks/CoreLocation.framework; sourceTree = SDKROOT; }; F840E1F0165FE0F500CFE078 /* config.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; name = config.xml; path = "Stone Island/config.xml"; sourceTree = "<group>"; }; F9D019AC51834C309501EAF5 /* CDVReachability.h */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = sourcecode.c.h; name = CDVReachability.h; path = "cordova-plugin-network-information/CDVReachability.h"; sourceTree = "<group>"; }; + DCFA1E58FE794CA6BE2A4834 /* Sim.m */ = {isa = PBXFileReference; name = "Sim.m"; path = "cordova-plugin-sim/Sim.m"; sourceTree = "<group>"; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; explicitFileType = undefined; includeInIndex = 0; }; + 3782AD713ACA4C098142F2DA /* Sim.h */ = {isa = PBXFileReference; name = "Sim.h"; path = "cordova-plugin-sim/Sim.h"; sourceTree = "<group>"; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; explicitFileType = undefined; includeInIndex = 0; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -286,6 +288,8 @@ C85567A8F35F40C99D7AE117 /* PushPlugin.m */, CEF393D5749347098BED6D82 /* AppDelegate+notification.h */, 4B1911CDF0454542977ECE35 /* PushPlugin.h */, + DCFA1E58FE794CA6BE2A4834 /* Sim.m */, + 3782AD713ACA4C098142F2DA /* Sim.h */, ); name = Plugins; path = "Stone Island/Plugins"; @@ -478,6 +482,7 @@ 54D2276159A643C0842544DC /* IonicKeyboard.m in Sources */, A842514FAE364263A91C9664 /* AppDelegate+notification.m in Sources */, 17B84E5E1F2E4D699B41A450 /* PushPlugin.m in Sources */, + 52A4EAACA1F34D6EBEED78A3 /* Sim.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/StoneIsland/platforms/ios/Stone Island.xcodeproj/xcuserdata/user.xcuserdatad/xcschemes/xcschememanagement.plist b/StoneIsland/platforms/ios/Stone Island.xcodeproj/xcuserdata/user.xcuserdatad/xcschemes/xcschememanagement.plist index d744b66e..371cb20d 100644 --- a/StoneIsland/platforms/ios/Stone Island.xcodeproj/xcuserdata/user.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/StoneIsland/platforms/ios/Stone Island.xcodeproj/xcuserdata/user.xcuserdatad/xcschemes/xcschememanagement.plist @@ -7,7 +7,7 @@ <key>Stone Island.xcscheme</key> <dict> <key>orderHint</key> - <integer>3</integer> + <integer>2</integer> </dict> </dict> </dict> diff --git a/StoneIsland/platforms/ios/Stone Island.xcworkspace/xcuserdata/user.xcuserdatad/UserInterfaceState.xcuserstate b/StoneIsland/platforms/ios/Stone Island.xcworkspace/xcuserdata/user.xcuserdatad/UserInterfaceState.xcuserstate Binary files differindex 55bb151c..f43c8bf2 100644 --- a/StoneIsland/platforms/ios/Stone Island.xcworkspace/xcuserdata/user.xcuserdatad/UserInterfaceState.xcuserstate +++ b/StoneIsland/platforms/ios/Stone Island.xcworkspace/xcuserdata/user.xcuserdatad/UserInterfaceState.xcuserstate diff --git a/StoneIsland/platforms/ios/Stone Island/Plugins/cordova-plugin-sim/Sim.h b/StoneIsland/platforms/ios/Stone Island/Plugins/cordova-plugin-sim/Sim.h new file mode 100644 index 00000000..d14ff264 --- /dev/null +++ b/StoneIsland/platforms/ios/Stone Island/Plugins/cordova-plugin-sim/Sim.h @@ -0,0 +1,9 @@ +#import <Cordova/CDV.h> +#import <CoreTelephony/CTCarrier.h> +#import <CoreTelephony/CTTelephonyNetworkInfo.h> + +@interface Sim : CDVPlugin + +- (void)getSimInfo:(CDVInvokedUrlCommand*)command; + +@end diff --git a/StoneIsland/platforms/ios/Stone Island/Plugins/cordova-plugin-sim/Sim.m b/StoneIsland/platforms/ios/Stone Island/Plugins/cordova-plugin-sim/Sim.m new file mode 100644 index 00000000..49d70eac --- /dev/null +++ b/StoneIsland/platforms/ios/Stone Island/Plugins/cordova-plugin-sim/Sim.m @@ -0,0 +1,55 @@ +// MCC and MNC codes on Wikipedia +// http://en.wikipedia.org/wiki/Mobile_country_code + +// Mobile Network Codes (MNC) for the international identification plan for public networks and subscriptions +// http://www.itu.int/pub/T-SP-E.212B-2014 + +// class CTCarrier +// https://developer.apple.com/reference/coretelephony/ctcarrier?language=objc + +#import "Sim.h" +#import <Cordova/CDV.h> +#import <Foundation/Foundation.h> +#import <CoreTelephony/CTCarrier.h> +#import <CoreTelephony/CTTelephonyNetworkInfo.h> + +@implementation Sim + +- (void)getSimInfo:(CDVInvokedUrlCommand*)command +{ + CTTelephonyNetworkInfo *netinfo = [[CTTelephonyNetworkInfo alloc] init]; + CTCarrier *carrier = [netinfo subscriberCellularProvider]; + + BOOL allowsVOIPResult = [carrier allowsVOIP]; + NSString *carrierNameResult = [carrier carrierName]; + NSString *carrierCountryResult = [carrier isoCountryCode]; + NSString *carrierCodeResult = [carrier mobileCountryCode]; + NSString *carrierNetworkResult = [carrier mobileNetworkCode]; + + if (!carrierNameResult) { + carrierNameResult = @""; + } + if (!carrierCountryResult) { + carrierCountryResult = @""; + } + if (!carrierCodeResult) { + carrierCodeResult = @""; + } + if (!carrierNetworkResult) { + carrierNetworkResult = @""; + } + + NSDictionary *simData = [NSDictionary dictionaryWithObjectsAndKeys: + @(allowsVOIPResult), @"allowsVOIP", + carrierNameResult, @"carrierName", + carrierCountryResult, @"countryCode", + carrierCodeResult, @"mcc", + carrierNetworkResult, @"mnc", + nil]; + + CDVPluginResult *pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsDictionary:simData]; + + [self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId]; +} + +@end diff --git a/StoneIsland/platforms/ios/Stone Island/config.xml b/StoneIsland/platforms/ios/Stone Island/config.xml index 81ddacaf..c7a3a817 100755 --- a/StoneIsland/platforms/ios/Stone Island/config.xml +++ b/StoneIsland/platforms/ios/Stone Island/config.xml @@ -109,4 +109,7 @@ <preference name="SplashMaintainAspectRatio" value="true" /> <preference name="ShowSplashScreenSpinner" value="false" /> <preference name="AutoHideSplashScreen" value="true" /> + <feature name="Sim"> + <param name="ios-package" value="Sim" /> + </feature> </widget> diff --git a/StoneIsland/platforms/ios/frameworks.json b/StoneIsland/platforms/ios/frameworks.json index 8c96a67b..0a971c69 100644 --- a/StoneIsland/platforms/ios/frameworks.json +++ b/StoneIsland/platforms/ios/frameworks.json @@ -2,7 +2,7 @@ "AudioToolbox.framework": 1, "CoreLocation.framework": 1, "SystemConfiguration.framework": 1, - "CoreTelephony.framework": 1, + "CoreTelephony.framework": 2, "Social.framework": 1, "MessageUI.framework": 1, "AddressBook.framework": 1, diff --git a/StoneIsland/platforms/ios/ios.json b/StoneIsland/platforms/ios/ios.json index a801018b..e7fc56d1 100644 --- a/StoneIsland/platforms/ios/ios.json +++ b/StoneIsland/platforms/ios/ios.json @@ -101,6 +101,10 @@ { "xml": "<feature name=\"PushNotification\"><param name=\"ios-package\" value=\"PushPlugin\" /></feature>", "count": 1 + }, + { + "xml": "<feature name=\"Sim\"><param name=\"ios-package\" value=\"Sim\" /></feature>", + "count": 1 } ] } @@ -172,6 +176,9 @@ "phonegap-plugin-push": { "SENDER_ID": "85075801930", "PACKAGE_NAME": "us.okfoc.stoneisland" + }, + "cordova-plugin-sim": { + "PACKAGE_NAME": "us.okfoc.stoneisland" } }, "dependent_plugins": {}, @@ -298,6 +305,14 @@ "clobbers": [ "PushNotification" ] + }, + { + "id": "cordova-plugin-sim.Sim", + "file": "plugins/cordova-plugin-sim/www/sim.js", + "pluginId": "cordova-plugin-sim", + "merges": [ + "window.plugins.sim" + ] } ], "plugin_metadata": { @@ -314,6 +329,7 @@ "cordova-plugin-whitelist": "1.3.0", "cordova-plugin-x-socialsharing": "5.1.3", "ionic-plugin-keyboard": "2.2.1", - "phonegap-plugin-push": "1.9.2" + "phonegap-plugin-push": "1.9.2", + "cordova-plugin-sim": "1.3.3" } }
\ No newline at end of file diff --git a/StoneIsland/platforms/ios/platform_www/cordova_plugins.js b/StoneIsland/platforms/ios/platform_www/cordova_plugins.js index e6ad8b23..32af05ac 100644 --- a/StoneIsland/platforms/ios/platform_www/cordova_plugins.js +++ b/StoneIsland/platforms/ios/platform_www/cordova_plugins.js @@ -122,6 +122,14 @@ module.exports = [ "clobbers": [ "PushNotification" ] + }, + { + "id": "cordova-plugin-sim.Sim", + "file": "plugins/cordova-plugin-sim/www/sim.js", + "pluginId": "cordova-plugin-sim", + "merges": [ + "window.plugins.sim" + ] } ]; module.exports.metadata = @@ -140,7 +148,8 @@ module.exports.metadata = "cordova-plugin-whitelist": "1.3.0", "cordova-plugin-x-socialsharing": "5.1.3", "ionic-plugin-keyboard": "2.2.1", - "phonegap-plugin-push": "1.9.2" + "phonegap-plugin-push": "1.9.2", + "cordova-plugin-sim": "1.3.3" }; // BOTTOM OF METADATA });
\ No newline at end of file diff --git a/StoneIsland/platforms/ios/platform_www/plugins/cordova-plugin-sim/www/sim.js b/StoneIsland/platforms/ios/platform_www/plugins/cordova-plugin-sim/www/sim.js new file mode 100644 index 00000000..ccc52e54 --- /dev/null +++ b/StoneIsland/platforms/ios/platform_www/plugins/cordova-plugin-sim/www/sim.js @@ -0,0 +1,8 @@ +cordova.define("cordova-plugin-sim.Sim", function(require, exports, module) { +module.exports = { + getSimInfo: function(successCallback, errorCallback) { + cordova.exec(successCallback, errorCallback, 'Sim', 'getSimInfo', []); + } +}; + +}); diff --git a/StoneIsland/platforms/ios/www/cordova_plugins.js b/StoneIsland/platforms/ios/www/cordova_plugins.js index e6ad8b23..32af05ac 100644 --- a/StoneIsland/platforms/ios/www/cordova_plugins.js +++ b/StoneIsland/platforms/ios/www/cordova_plugins.js @@ -122,6 +122,14 @@ module.exports = [ "clobbers": [ "PushNotification" ] + }, + { + "id": "cordova-plugin-sim.Sim", + "file": "plugins/cordova-plugin-sim/www/sim.js", + "pluginId": "cordova-plugin-sim", + "merges": [ + "window.plugins.sim" + ] } ]; module.exports.metadata = @@ -140,7 +148,8 @@ module.exports.metadata = "cordova-plugin-whitelist": "1.3.0", "cordova-plugin-x-socialsharing": "5.1.3", "ionic-plugin-keyboard": "2.2.1", - "phonegap-plugin-push": "1.9.2" + "phonegap-plugin-push": "1.9.2", + "cordova-plugin-sim": "1.3.3" }; // BOTTOM OF METADATA });
\ No newline at end of file diff --git a/StoneIsland/platforms/ios/www/plugins/cordova-plugin-sim/www/sim.js b/StoneIsland/platforms/ios/www/plugins/cordova-plugin-sim/www/sim.js new file mode 100644 index 00000000..ccc52e54 --- /dev/null +++ b/StoneIsland/platforms/ios/www/plugins/cordova-plugin-sim/www/sim.js @@ -0,0 +1,8 @@ +cordova.define("cordova-plugin-sim.Sim", function(require, exports, module) { +module.exports = { + getSimInfo: function(successCallback, errorCallback) { + cordova.exec(successCallback, errorCallback, 'Sim', 'getSimInfo', []); + } +}; + +}); |
