summaryrefslogtreecommitdiff
path: root/StoneIsland/platforms/ios/Stone Island
diff options
context:
space:
mode:
Diffstat (limited to 'StoneIsland/platforms/ios/Stone Island')
-rw-r--r--StoneIsland/platforms/ios/Stone Island/Entitlements-Debug.plist28
-rw-r--r--StoneIsland/platforms/ios/Stone Island/Entitlements-Release.plist28
-rw-r--r--StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon-40.pngbin3590 -> 4082 bytes
-rw-r--r--StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon-40@2x.pngbin8896 -> 7411 bytes
-rw-r--r--StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon-50.pngbin4646 -> 4874 bytes
-rw-r--r--StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon-50@2x.pngbin11969 -> 9611 bytes
-rw-r--r--StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon-60.pngbin6097 -> 0 bytes
-rw-r--r--StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon-60@2x.pngbin15559 -> 11924 bytes
-rw-r--r--StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon-60@3x.pngbin29194 -> 30083 bytes
-rw-r--r--StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon-72.pngbin7763 -> 4944 bytes
-rw-r--r--StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon-72@2x.pngbin20517 -> 11706 bytes
-rw-r--r--StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon-76.pngbin8279 -> 7025 bytes
-rw-r--r--StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon-76@2x.pngbin22387 -> 15262 bytes
-rw-r--r--StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon-83.5@2x.pngbin26132 -> 20563 bytes
-rw-r--r--StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon-small.pngbin2191 -> 3294 bytes
-rw-r--r--StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon-small@2x.pngbin5799 -> 5608 bytes
-rw-r--r--StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon-small@3x.pngbin10067 -> 7040 bytes
-rw-r--r--StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon.pngbin5679 -> 3902 bytes
-rw-r--r--StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon@2x.pngbin14395 -> 7869 bytes
-rw-r--r--StoneIsland/platforms/ios/Stone Island/Images.xcassets/LaunchImage.launchimage/Default-568h@2x~iphone.pngbin108884 -> 34225 bytes
-rw-r--r--StoneIsland/platforms/ios/Stone Island/Images.xcassets/LaunchImage.launchimage/Default-667h.pngbin136116 -> 57532 bytes
-rw-r--r--StoneIsland/platforms/ios/Stone Island/Images.xcassets/LaunchImage.launchimage/Default-736h.pngbin259566 -> 80929 bytes
-rw-r--r--StoneIsland/platforms/ios/Stone Island/Images.xcassets/LaunchImage.launchimage/Default-Landscape-736h.pngbin264012 -> 79491 bytes
-rw-r--r--StoneIsland/platforms/ios/Stone Island/Images.xcassets/LaunchImage.launchimage/Default-Landscape@2x~ipad.pngbin259502 -> 212234 bytes
-rw-r--r--StoneIsland/platforms/ios/Stone Island/Images.xcassets/LaunchImage.launchimage/Default-Landscape~ipad.pngbin100012 -> 91810 bytes
-rw-r--r--StoneIsland/platforms/ios/Stone Island/Images.xcassets/LaunchImage.launchimage/Default-Portrait@2x~ipad.pngbin257446 -> 212860 bytes
-rw-r--r--StoneIsland/platforms/ios/Stone Island/Images.xcassets/LaunchImage.launchimage/Default-Portrait~ipad.pngbin99013 -> 91713 bytes
-rw-r--r--StoneIsland/platforms/ios/Stone Island/Images.xcassets/LaunchImage.launchimage/Default@2x~iphone.pngbin90183 -> 29475 bytes
-rw-r--r--StoneIsland/platforms/ios/Stone Island/Images.xcassets/LaunchImage.launchimage/Default~iphone.pngbin38256 -> 10394 bytes
-rw-r--r--StoneIsland/platforms/ios/Stone Island/Plugins/phonegap-plugin-push/AppDelegate+notification.h22
-rw-r--r--StoneIsland/platforms/ios/Stone Island/Plugins/phonegap-plugin-push/AppDelegate+notification.m278
-rw-r--r--StoneIsland/platforms/ios/Stone Island/Plugins/phonegap-plugin-push/PushPlugin.h80
-rw-r--r--StoneIsland/platforms/ios/Stone Island/Plugins/phonegap-plugin-push/PushPlugin.m677
-rw-r--r--StoneIsland/platforms/ios/Stone Island/Stone Island-Info.plist8
-rw-r--r--StoneIsland/platforms/ios/Stone Island/Stone Island.entitlements8
-rwxr-xr-xStoneIsland/platforms/ios/Stone Island/config.xml67
36 files changed, 1112 insertions, 84 deletions
diff --git a/StoneIsland/platforms/ios/Stone Island/Entitlements-Debug.plist b/StoneIsland/platforms/ios/Stone Island/Entitlements-Debug.plist
index 1ed4ae5b..018a6e20 100644
--- a/StoneIsland/platforms/ios/Stone Island/Entitlements-Debug.plist
+++ b/StoneIsland/platforms/ios/Stone Island/Entitlements-Debug.plist
@@ -1,24 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<!--
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
--->
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
- <dict>
- </dict>
-</plist>
+ <dict>
+ <key>aps-environment</key>
+ <string>development</string>
+ </dict>
+</plist> \ No newline at end of file
diff --git a/StoneIsland/platforms/ios/Stone Island/Entitlements-Release.plist b/StoneIsland/platforms/ios/Stone Island/Entitlements-Release.plist
index 1ed4ae5b..dec5aa2e 100644
--- a/StoneIsland/platforms/ios/Stone Island/Entitlements-Release.plist
+++ b/StoneIsland/platforms/ios/Stone Island/Entitlements-Release.plist
@@ -1,24 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<!--
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
--->
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
- <dict>
- </dict>
-</plist>
+ <dict>
+ <key>aps-environment</key>
+ <string>production</string>
+ </dict>
+</plist> \ No newline at end of file
diff --git a/StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon-40.png b/StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon-40.png
index 9adb71c5..e865adbc 100644
--- a/StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon-40.png
+++ b/StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon-40.png
Binary files differ
diff --git a/StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon-40@2x.png b/StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon-40@2x.png
index db657d13..6d07dce5 100644
--- a/StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon-40@2x.png
+++ b/StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon-40@2x.png
Binary files differ
diff --git a/StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon-50.png b/StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon-50.png
index c079bdbc..98a9d96d 100644
--- a/StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon-50.png
+++ b/StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon-50.png
Binary files differ
diff --git a/StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon-50@2x.png b/StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon-50@2x.png
index 99b6f094..bac693f7 100644
--- a/StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon-50@2x.png
+++ b/StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon-50@2x.png
Binary files differ
diff --git a/StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon-60.png b/StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon-60.png
deleted file mode 100644
index b8b879f5..00000000
--- a/StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon-60.png
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon-60@2x.png b/StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon-60@2x.png
index 96c8b051..955af362 100644
--- a/StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon-60@2x.png
+++ b/StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon-60@2x.png
Binary files differ
diff --git a/StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon-60@3x.png b/StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon-60@3x.png
index 30a35692..e1268916 100644
--- a/StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon-60@3x.png
+++ b/StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon-60@3x.png
Binary files differ
diff --git a/StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon-72.png b/StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon-72.png
index 1d4f8160..8c6e5df3 100644
--- a/StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon-72.png
+++ b/StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon-72.png
Binary files differ
diff --git a/StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon-72@2x.png b/StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon-72@2x.png
index 63a82478..dd819da6 100644
--- a/StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon-72@2x.png
+++ b/StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon-72@2x.png
Binary files differ
diff --git a/StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon-76.png b/StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon-76.png
index 07665c26..63afe7f1 100644
--- a/StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon-76.png
+++ b/StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon-76.png
Binary files differ
diff --git a/StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon-76@2x.png b/StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon-76@2x.png
index 43443827..4cff29a2 100644
--- a/StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon-76@2x.png
+++ b/StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon-76@2x.png
Binary files differ
diff --git a/StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon-83.5@2x.png b/StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon-83.5@2x.png
index 42c96197..3c1a0115 100644
--- a/StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon-83.5@2x.png
+++ b/StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon-83.5@2x.png
Binary files differ
diff --git a/StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon-small.png b/StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon-small.png
index 48c1b1bd..0ea1c42f 100644
--- a/StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon-small.png
+++ b/StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon-small.png
Binary files differ
diff --git a/StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon-small@2x.png b/StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon-small@2x.png
index d42de0d8..2c72038e 100644
--- a/StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon-small@2x.png
+++ b/StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon-small@2x.png
Binary files differ
diff --git a/StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon-small@3x.png b/StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon-small@3x.png
index ababca8b..5c37dfc2 100644
--- a/StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon-small@3x.png
+++ b/StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon-small@3x.png
Binary files differ
diff --git a/StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon.png b/StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon.png
index 4c862436..b2571a71 100644
--- a/StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon.png
+++ b/StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon.png
Binary files differ
diff --git a/StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon@2x.png b/StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon@2x.png
index 0c64bcc6..d75098f5 100644
--- a/StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon@2x.png
+++ b/StoneIsland/platforms/ios/Stone Island/Images.xcassets/AppIcon.appiconset/icon@2x.png
Binary files differ
diff --git a/StoneIsland/platforms/ios/Stone Island/Images.xcassets/LaunchImage.launchimage/Default-568h@2x~iphone.png b/StoneIsland/platforms/ios/Stone Island/Images.xcassets/LaunchImage.launchimage/Default-568h@2x~iphone.png
index af5caf5b..10ed683c 100644
--- a/StoneIsland/platforms/ios/Stone Island/Images.xcassets/LaunchImage.launchimage/Default-568h@2x~iphone.png
+++ b/StoneIsland/platforms/ios/Stone Island/Images.xcassets/LaunchImage.launchimage/Default-568h@2x~iphone.png
Binary files differ
diff --git a/StoneIsland/platforms/ios/Stone Island/Images.xcassets/LaunchImage.launchimage/Default-667h.png b/StoneIsland/platforms/ios/Stone Island/Images.xcassets/LaunchImage.launchimage/Default-667h.png
index 91d2504e..d9bcf61d 100644
--- a/StoneIsland/platforms/ios/Stone Island/Images.xcassets/LaunchImage.launchimage/Default-667h.png
+++ b/StoneIsland/platforms/ios/Stone Island/Images.xcassets/LaunchImage.launchimage/Default-667h.png
Binary files differ
diff --git a/StoneIsland/platforms/ios/Stone Island/Images.xcassets/LaunchImage.launchimage/Default-736h.png b/StoneIsland/platforms/ios/Stone Island/Images.xcassets/LaunchImage.launchimage/Default-736h.png
index 217782fc..1fcef229 100644
--- a/StoneIsland/platforms/ios/Stone Island/Images.xcassets/LaunchImage.launchimage/Default-736h.png
+++ b/StoneIsland/platforms/ios/Stone Island/Images.xcassets/LaunchImage.launchimage/Default-736h.png
Binary files differ
diff --git a/StoneIsland/platforms/ios/Stone Island/Images.xcassets/LaunchImage.launchimage/Default-Landscape-736h.png b/StoneIsland/platforms/ios/Stone Island/Images.xcassets/LaunchImage.launchimage/Default-Landscape-736h.png
index e9e4ea66..eae0792d 100644
--- a/StoneIsland/platforms/ios/Stone Island/Images.xcassets/LaunchImage.launchimage/Default-Landscape-736h.png
+++ b/StoneIsland/platforms/ios/Stone Island/Images.xcassets/LaunchImage.launchimage/Default-Landscape-736h.png
Binary files differ
diff --git a/StoneIsland/platforms/ios/Stone Island/Images.xcassets/LaunchImage.launchimage/Default-Landscape@2x~ipad.png b/StoneIsland/platforms/ios/Stone Island/Images.xcassets/LaunchImage.launchimage/Default-Landscape@2x~ipad.png
index 60fb9a13..1fc8c7db 100644
--- a/StoneIsland/platforms/ios/Stone Island/Images.xcassets/LaunchImage.launchimage/Default-Landscape@2x~ipad.png
+++ b/StoneIsland/platforms/ios/Stone Island/Images.xcassets/LaunchImage.launchimage/Default-Landscape@2x~ipad.png
Binary files differ
diff --git a/StoneIsland/platforms/ios/Stone Island/Images.xcassets/LaunchImage.launchimage/Default-Landscape~ipad.png b/StoneIsland/platforms/ios/Stone Island/Images.xcassets/LaunchImage.launchimage/Default-Landscape~ipad.png
index d578da70..58ea2fbd 100644
--- a/StoneIsland/platforms/ios/Stone Island/Images.xcassets/LaunchImage.launchimage/Default-Landscape~ipad.png
+++ b/StoneIsland/platforms/ios/Stone Island/Images.xcassets/LaunchImage.launchimage/Default-Landscape~ipad.png
Binary files differ
diff --git a/StoneIsland/platforms/ios/Stone Island/Images.xcassets/LaunchImage.launchimage/Default-Portrait@2x~ipad.png b/StoneIsland/platforms/ios/Stone Island/Images.xcassets/LaunchImage.launchimage/Default-Portrait@2x~ipad.png
index ad481f3a..1570b37d 100644
--- a/StoneIsland/platforms/ios/Stone Island/Images.xcassets/LaunchImage.launchimage/Default-Portrait@2x~ipad.png
+++ b/StoneIsland/platforms/ios/Stone Island/Images.xcassets/LaunchImage.launchimage/Default-Portrait@2x~ipad.png
Binary files differ
diff --git a/StoneIsland/platforms/ios/Stone Island/Images.xcassets/LaunchImage.launchimage/Default-Portrait~ipad.png b/StoneIsland/platforms/ios/Stone Island/Images.xcassets/LaunchImage.launchimage/Default-Portrait~ipad.png
index de983200..223e75d0 100644
--- a/StoneIsland/platforms/ios/Stone Island/Images.xcassets/LaunchImage.launchimage/Default-Portrait~ipad.png
+++ b/StoneIsland/platforms/ios/Stone Island/Images.xcassets/LaunchImage.launchimage/Default-Portrait~ipad.png
Binary files differ
diff --git a/StoneIsland/platforms/ios/Stone Island/Images.xcassets/LaunchImage.launchimage/Default@2x~iphone.png b/StoneIsland/platforms/ios/Stone Island/Images.xcassets/LaunchImage.launchimage/Default@2x~iphone.png
index a2e7c118..0098dc73 100644
--- a/StoneIsland/platforms/ios/Stone Island/Images.xcassets/LaunchImage.launchimage/Default@2x~iphone.png
+++ b/StoneIsland/platforms/ios/Stone Island/Images.xcassets/LaunchImage.launchimage/Default@2x~iphone.png
Binary files differ
diff --git a/StoneIsland/platforms/ios/Stone Island/Images.xcassets/LaunchImage.launchimage/Default~iphone.png b/StoneIsland/platforms/ios/Stone Island/Images.xcassets/LaunchImage.launchimage/Default~iphone.png
index 4280afbc..42b8fdea 100644
--- a/StoneIsland/platforms/ios/Stone Island/Images.xcassets/LaunchImage.launchimage/Default~iphone.png
+++ b/StoneIsland/platforms/ios/Stone Island/Images.xcassets/LaunchImage.launchimage/Default~iphone.png
Binary files differ
diff --git a/StoneIsland/platforms/ios/Stone Island/Plugins/phonegap-plugin-push/AppDelegate+notification.h b/StoneIsland/platforms/ios/Stone Island/Plugins/phonegap-plugin-push/AppDelegate+notification.h
new file mode 100644
index 00000000..9970762b
--- /dev/null
+++ b/StoneIsland/platforms/ios/Stone Island/Plugins/phonegap-plugin-push/AppDelegate+notification.h
@@ -0,0 +1,22 @@
+//
+// AppDelegate+notification.h
+// pushtest
+//
+// Created by Robert Easterday on 10/26/12.
+//
+//
+
+#import "AppDelegate.h"
+
+@interface AppDelegate (notification)
+- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken;
+- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error;
+- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:( void (^)(UIBackgroundFetchResult))completionHandler;
+- (void)pushPluginOnApplicationDidBecomeActive:(UIApplication *)application;
+- (void)application:(UIApplication *)application handleActionWithIdentifier:(NSString *)identifier forRemoteNotification:(NSDictionary *)userInfo completionHandler:(void(^)())completionHandler;
+- (id) getCommandInstance:(NSString*)className;
+
+@property (nonatomic, retain) NSDictionary *launchNotification;
+@property (nonatomic, retain) NSNumber *coldstart;
+
+@end
diff --git a/StoneIsland/platforms/ios/Stone Island/Plugins/phonegap-plugin-push/AppDelegate+notification.m b/StoneIsland/platforms/ios/Stone Island/Plugins/phonegap-plugin-push/AppDelegate+notification.m
new file mode 100644
index 00000000..fc18dd79
--- /dev/null
+++ b/StoneIsland/platforms/ios/Stone Island/Plugins/phonegap-plugin-push/AppDelegate+notification.m
@@ -0,0 +1,278 @@
+//
+// AppDelegate+notification.m
+// pushtest
+//
+// Created by Robert Easterday on 10/26/12.
+//
+//
+
+#import "AppDelegate+notification.h"
+#import "PushPlugin.h"
+#import <objc/runtime.h>
+
+static char launchNotificationKey;
+static char coldstartKey;
+
+@implementation AppDelegate (notification)
+
+- (id) getCommandInstance:(NSString*)className
+{
+ return [self.viewController getCommandInstance:className];
+}
+
+// its dangerous to override a method from within a category.
+// Instead we will use method swizzling. we set this up in the load call.
++ (void)load
+{
+ static dispatch_once_t onceToken;
+ dispatch_once(&onceToken, ^{
+ Class class = [self class];
+
+ SEL originalSelector = @selector(init);
+ SEL swizzledSelector = @selector(pushPluginSwizzledInit);
+
+ Method original = class_getInstanceMethod(class, originalSelector);
+ Method swizzled = class_getInstanceMethod(class, swizzledSelector);
+
+ BOOL didAddMethod =
+ class_addMethod(class,
+ originalSelector,
+ method_getImplementation(swizzled),
+ method_getTypeEncoding(swizzled));
+
+ if (didAddMethod) {
+ class_replaceMethod(class,
+ swizzledSelector,
+ method_getImplementation(original),
+ method_getTypeEncoding(original));
+ } else {
+ method_exchangeImplementations(original, swizzled);
+ }
+ });
+}
+
+- (AppDelegate *)pushPluginSwizzledInit
+{
+ [[NSNotificationCenter defaultCenter] addObserver:self
+ selector:@selector(createNotificationChecker:)
+ name:UIApplicationDidFinishLaunchingNotification
+ object:nil];
+ [[NSNotificationCenter defaultCenter]addObserver:self
+ selector:@selector(pushPluginOnApplicationDidBecomeActive:)
+ name:UIApplicationDidBecomeActiveNotification
+ object:nil];
+
+ // This actually calls the original init method over in AppDelegate. Equivilent to calling super
+ // on an overrided method, this is not recursive, although it appears that way. neat huh?
+ return [self pushPluginSwizzledInit];
+}
+
+// This code will be called immediately after application:didFinishLaunchingWithOptions:. We need
+// to process notifications in cold-start situations
+- (void)createNotificationChecker:(NSNotification *)notification
+{
+ NSLog(@"createNotificationChecker");
+ if (notification)
+ {
+ NSDictionary *launchOptions = [notification userInfo];
+ if (launchOptions) {
+ NSLog(@"coldstart");
+ self.launchNotification = [launchOptions objectForKey: @"UIApplicationLaunchOptionsRemoteNotificationKey"];
+ self.coldstart = [NSNumber numberWithBool:YES];
+ } else {
+ NSLog(@"not coldstart");
+ self.coldstart = [NSNumber numberWithBool:NO];
+ }
+ }
+}
+
+- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
+ PushPlugin *pushHandler = [self getCommandInstance:@"PushNotification"];
+ [pushHandler didRegisterForRemoteNotificationsWithDeviceToken:deviceToken];
+}
+
+- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {
+ PushPlugin *pushHandler = [self getCommandInstance:@"PushNotification"];
+ [pushHandler didFailToRegisterForRemoteNotificationsWithError:error];
+}
+
+- (void) application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
+ NSLog(@"clicked on the shade");
+ PushPlugin *pushHandler = [self getCommandInstance:@"PushNotification"];
+ pushHandler.notificationMessage = userInfo;
+ pushHandler.isInline = NO;
+ [pushHandler notificationReceived];
+}
+
+- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
+ NSLog(@"didReceiveNotification with fetchCompletionHandler");
+
+ // app is in the foreground so call notification callback
+ if (application.applicationState == UIApplicationStateActive) {
+ NSLog(@"app active");
+ PushPlugin *pushHandler = [self getCommandInstance:@"PushNotification"];
+ pushHandler.notificationMessage = userInfo;
+ pushHandler.isInline = YES;
+ [pushHandler notificationReceived];
+
+ completionHandler(UIBackgroundFetchResultNewData);
+ }
+ // app is in background or in stand by
+ else {
+ NSLog(@"app in-active");
+
+ // do some convoluted logic to find out if this should be a silent push.
+ long silent = 0;
+ id aps = [userInfo objectForKey:@"aps"];
+ id contentAvailable = [aps objectForKey:@"content-available"];
+ if ([contentAvailable isKindOfClass:[NSString class]] && [contentAvailable isEqualToString:@"1"]) {
+ silent = 1;
+ } else if ([contentAvailable isKindOfClass:[NSNumber class]]) {
+ silent = [contentAvailable integerValue];
+ }
+
+ if (silent == 1) {
+ NSLog(@"this should be a silent push");
+ void (^safeHandler)(UIBackgroundFetchResult) = ^(UIBackgroundFetchResult result){
+ dispatch_async(dispatch_get_main_queue(), ^{
+ completionHandler(result);
+ });
+ };
+
+ PushPlugin *pushHandler = [self getCommandInstance:@"PushNotification"];
+
+ if (pushHandler.handlerObj == nil) {
+ pushHandler.handlerObj = [NSMutableDictionary dictionaryWithCapacity:2];
+ }
+
+ id notId = [userInfo objectForKey:@"notId"];
+ if (notId != nil) {
+ NSLog(@"Push Plugin notId %@", notId);
+ [pushHandler.handlerObj setObject:safeHandler forKey:notId];
+ } else {
+ NSLog(@"Push Plugin notId handler");
+ [pushHandler.handlerObj setObject:safeHandler forKey:@"handler"];
+ }
+
+ pushHandler.notificationMessage = userInfo;
+ pushHandler.isInline = NO;
+ [pushHandler notificationReceived];
+ } else {
+ NSLog(@"just put it in the shade");
+ //save it for later
+ self.launchNotification = userInfo;
+
+ completionHandler(UIBackgroundFetchResultNewData);
+ }
+ }
+}
+
+- (BOOL)userHasRemoteNotificationsEnabled {
+ UIApplication *application = [UIApplication sharedApplication];
+ if ([[UIApplication sharedApplication] respondsToSelector:@selector(registerUserNotificationSettings:)]) {
+ return application.currentUserNotificationSettings.types != UIUserNotificationTypeNone;
+ } else {
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+ return application.enabledRemoteNotificationTypes != UIRemoteNotificationTypeNone;
+#pragma GCC diagnostic pop
+ }
+}
+
+- (void)pushPluginOnApplicationDidBecomeActive:(NSNotification *)notification {
+
+ NSLog(@"active");
+
+ UIApplication *application = notification.object;
+
+ PushPlugin *pushHandler = [self getCommandInstance:@"PushNotification"];
+ if (pushHandler.clearBadge) {
+ NSLog(@"PushPlugin clearing badge");
+ //zero badge
+ application.applicationIconBadgeNumber = 0;
+ } else {
+ NSLog(@"PushPlugin skip clear badge");
+ }
+
+ if (self.launchNotification) {
+ pushHandler.isInline = NO;
+ pushHandler.coldstart = [self.coldstart boolValue];
+ pushHandler.notificationMessage = self.launchNotification;
+ self.launchNotification = nil;
+ self.coldstart = [NSNumber numberWithBool:NO];
+ [pushHandler performSelectorOnMainThread:@selector(notificationReceived) withObject:pushHandler waitUntilDone:NO];
+ }
+}
+
+
+- (void)application:(UIApplication *) application handleActionWithIdentifier: (NSString *) identifier
+forRemoteNotification: (NSDictionary *) notification completionHandler: (void (^)()) completionHandler {
+
+ NSLog(@"Push Plugin handleActionWithIdentifier %@", identifier);
+ NSMutableDictionary *userInfo = [notification mutableCopy];
+ [userInfo setObject:identifier forKey:@"actionCallback"];
+ NSLog(@"Push Plugin userInfo %@", userInfo);
+
+ if (application.applicationState == UIApplicationStateActive) {
+ PushPlugin *pushHandler = [self getCommandInstance:@"PushNotification"];
+ pushHandler.notificationMessage = userInfo;
+ pushHandler.isInline = NO;
+ [pushHandler notificationReceived];
+ } else {
+ void (^safeHandler)() = ^(void){
+ dispatch_async(dispatch_get_main_queue(), ^{
+ completionHandler();
+ });
+ };
+
+ PushPlugin *pushHandler = [self getCommandInstance:@"PushNotification"];
+
+ if (pushHandler.handlerObj == nil) {
+ pushHandler.handlerObj = [NSMutableDictionary dictionaryWithCapacity:2];
+ }
+
+ id notId = [userInfo objectForKey:@"notId"];
+ if (notId != nil) {
+ NSLog(@"Push Plugin notId %@", notId);
+ [pushHandler.handlerObj setObject:safeHandler forKey:notId];
+ } else {
+ NSLog(@"Push Plugin notId handler");
+ [pushHandler.handlerObj setObject:safeHandler forKey:@"handler"];
+ }
+
+ pushHandler.notificationMessage = userInfo;
+ pushHandler.isInline = NO;
+
+ [pushHandler performSelectorOnMainThread:@selector(notificationReceived) withObject:pushHandler waitUntilDone:NO];
+ }
+}
+
+// The accessors use an Associative Reference since you can't define a iVar in a category
+// http://developer.apple.com/library/ios/#documentation/cocoa/conceptual/objectivec/Chapters/ocAssociativeReferences.html
+- (NSMutableArray *)launchNotification
+{
+ return objc_getAssociatedObject(self, &launchNotificationKey);
+}
+
+- (void)setLaunchNotification:(NSDictionary *)aDictionary
+{
+ objc_setAssociatedObject(self, &launchNotificationKey, aDictionary, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
+}
+
+- (NSNumber *)coldstart
+{
+ return objc_getAssociatedObject(self, &coldstartKey);
+}
+
+- (void)setColdstart:(NSNumber *)aNumber
+{
+ objc_setAssociatedObject(self, &coldstartKey, aNumber, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
+}
+
+- (void)dealloc
+{
+ self.launchNotification = nil; // clear the association and release the object
+ self.coldstart = nil;
+}
+
+@end
diff --git a/StoneIsland/platforms/ios/Stone Island/Plugins/phonegap-plugin-push/PushPlugin.h b/StoneIsland/platforms/ios/Stone Island/Plugins/phonegap-plugin-push/PushPlugin.h
new file mode 100644
index 00000000..276a0080
--- /dev/null
+++ b/StoneIsland/platforms/ios/Stone Island/Plugins/phonegap-plugin-push/PushPlugin.h
@@ -0,0 +1,80 @@
+/*
+ Copyright 2009-2011 Urban Airship Inc. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+
+ 2. Redistributions in binaryform must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided withthe distribution.
+
+ THIS SOFTWARE IS PROVIDED BY THE URBAN AIRSHIP INC``AS IS'' AND ANY EXPRESS OR
+ IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+ EVENT SHALL URBAN AIRSHIP INC OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+ OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import <Foundation/Foundation.h>
+#import <Cordova/CDV.h>
+#import <Cordova/CDVPlugin.h>
+
+@protocol GGLInstanceIDDelegate;
+@protocol GCMReceiverDelegate;
+@interface PushPlugin : CDVPlugin<GGLInstanceIDDelegate, GCMReceiverDelegate>
+{
+ NSDictionary *notificationMessage;
+ BOOL isInline;
+ NSString *notificationCallbackId;
+ NSString *callback;
+ BOOL clearBadge;
+
+ NSMutableDictionary *handlerObj;
+ void (^completionHandler)(UIBackgroundFetchResult);
+
+ BOOL ready;
+}
+
+@property (nonatomic, copy) NSString *callbackId;
+@property (nonatomic, copy) NSString *notificationCallbackId;
+@property (nonatomic, copy) NSString *callback;
+
+@property (nonatomic, strong) NSDictionary *notificationMessage;
+@property BOOL isInline;
+@property BOOL coldstart;
+@property BOOL clearBadge;
+@property (nonatomic, strong) NSMutableDictionary *handlerObj;
+
+- (void)init:(CDVInvokedUrlCommand*)command;
+- (void)unregister:(CDVInvokedUrlCommand*)command;
+- (void)subscribe:(CDVInvokedUrlCommand*)command;
+- (void)unsubscribe:(CDVInvokedUrlCommand*)command;
+
+- (void)didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken;
+- (void)didFailToRegisterForRemoteNotificationsWithError:(NSError *)error;
+
+- (void)setNotificationMessage:(NSDictionary *)notification;
+- (void)notificationReceived;
+
+- (void)willSendDataMessageWithID:(NSString *)messageID error:(NSError *)error;
+- (void)didSendDataMessageWithID:(NSString *)messageID;
+- (void)didDeleteMessagesOnServer;
+
+// GCM Features
+@property(nonatomic, assign) BOOL usesGCM;
+@property(nonatomic, strong) NSNumber* gcmSandbox;
+@property(nonatomic, strong) NSString *gcmSenderId;
+@property(nonatomic, strong) NSDictionary *gcmRegistrationOptions;
+@property(nonatomic, strong) void (^gcmRegistrationHandler) (NSString *registrationToken, NSError *error);
+@property(nonatomic, strong) NSString *gcmRegistrationToken;
+@property(nonatomic, strong) NSArray *gcmTopics;
+
+@end
diff --git a/StoneIsland/platforms/ios/Stone Island/Plugins/phonegap-plugin-push/PushPlugin.m b/StoneIsland/platforms/ios/Stone Island/Plugins/phonegap-plugin-push/PushPlugin.m
new file mode 100644
index 00000000..a176b9af
--- /dev/null
+++ b/StoneIsland/platforms/ios/Stone Island/Plugins/phonegap-plugin-push/PushPlugin.m
@@ -0,0 +1,677 @@
+/*
+ Copyright 2009-2011 Urban Airship Inc. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+
+ 2. Redistributions in binaryform must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided withthe distribution.
+
+ THIS SOFTWARE IS PROVIDED BY THE URBAN AIRSHIP INC``AS IS'' AND ANY EXPRESS OR
+ IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+ EVENT SHALL URBAN AIRSHIP INC OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+ OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+// See GGLInstanceID.h
+#define GMP_NO_MODULES true
+
+#import "PushPlugin.h"
+#import "GoogleCloudMessaging.h"
+#import "GGLInstanceIDHeaders.h"
+
+@implementation PushPlugin : CDVPlugin
+
+@synthesize notificationMessage;
+@synthesize isInline;
+@synthesize coldstart;
+
+@synthesize callbackId;
+@synthesize notificationCallbackId;
+@synthesize callback;
+@synthesize clearBadge;
+@synthesize handlerObj;
+
+@synthesize usesGCM;
+@synthesize gcmSandbox;
+@synthesize gcmSenderId;
+@synthesize gcmRegistrationOptions;
+@synthesize gcmRegistrationHandler;
+@synthesize gcmRegistrationToken;
+@synthesize gcmTopics;
+
+-(void)initGCMRegistrationHandler;
+{
+ __weak __block PushPlugin *weakSelf = self;
+ gcmRegistrationHandler = ^(NSString *registrationToken, NSError *error){
+ if (registrationToken != nil) {
+ NSLog(@"GCM Registration Token: %@", registrationToken);
+ [weakSelf setGcmRegistrationToken: registrationToken];
+
+ id topics = [weakSelf gcmTopics];
+ if (topics != nil) {
+ for (NSString *topic in topics) {
+ NSLog(@"subscribe from topic: %@", topic);
+ id pubSub = [GCMPubSub sharedInstance];
+ [pubSub subscribeWithToken: [weakSelf gcmRegistrationToken]
+ topic:[NSString stringWithFormat:@"/topics/%@", topic]
+ options:nil
+ handler:^void(NSError *error) {
+ if (error) {
+ if (error.code == 3001) {
+ NSLog(@"Already subscribed to %@", topic);
+ } else {
+ NSLog(@"Failed to subscribe to topic %@: %@", topic, error);
+ }
+ }
+ else {
+ NSLog(@"Successfully subscribe to topic %@", topic);
+ }
+ }];
+ }
+ }
+
+ [weakSelf registerWithToken:registrationToken];
+ } else {
+ NSLog(@"Registration to GCM failed with error: %@", error.localizedDescription);
+ [weakSelf failWithMessage:self.callbackId withMsg:@"" withError:error];
+ }
+ };
+}
+
+// GCM refresh token
+// Unclear how this is testable under normal circumstances
+- (void)onTokenRefresh {
+#if !TARGET_IPHONE_SIMULATOR
+ // A rotation of the registration tokens is happening, so the app needs to request a new token.
+ NSLog(@"The GCM registration token needs to be changed.");
+ [[GGLInstanceID sharedInstance] tokenWithAuthorizedEntity:[self gcmSenderId]
+ scope:kGGLInstanceIDScopeGCM
+ options:[self gcmRegistrationOptions]
+ handler:[self gcmRegistrationHandler]];
+#endif
+}
+
+- (void)willSendDataMessageWithID:(NSString *)messageID error:(NSError *)error {
+ NSLog(@"willSendDataMessageWithID");
+ if (error) {
+ // Failed to send the message.
+ } else {
+ // Will send message, you can save the messageID to track the message
+ }
+}
+
+- (void)didSendDataMessageWithID:(NSString *)messageID {
+ NSLog(@"willSendDataMessageWithID");
+ // Did successfully send message identified by messageID
+}
+
+- (void)didDeleteMessagesOnServer {
+ NSLog(@"didDeleteMessagesOnServer");
+ // Some messages sent to this device were deleted on the GCM server before reception, likely
+ // because the TTL expired. The client should notify the app server of this, so that the app
+ // server can resend those messages.
+}
+
+- (void)unregister:(CDVInvokedUrlCommand*)command;
+{
+ NSArray* topics = [command argumentAtIndex:0];
+
+ if (topics != nil) {
+ id pubSub = [GCMPubSub sharedInstance];
+ for (NSString *topic in topics) {
+ NSLog(@"unsubscribe from topic: %@", topic);
+ [pubSub unsubscribeWithToken: [self gcmRegistrationToken]
+ topic:[NSString stringWithFormat:@"/topics/%@", topic]
+ options:nil
+ handler:^void(NSError *error) {
+ if (error) {
+ NSLog(@"Failed to unsubscribe from topic %@: %@", topic, error);
+ }
+ else {
+ NSLog(@"Successfully unsubscribe from topic %@", topic);
+ }
+ }];
+ }
+ } else {
+ [[UIApplication sharedApplication] unregisterForRemoteNotifications];
+ [self successWithMessage:command.callbackId withMsg:@"unregistered"];
+ }
+}
+
+- (void)subscribe:(CDVInvokedUrlCommand*)command;
+{
+ NSString* topic = [command argumentAtIndex:0];
+
+ if (topic != nil) {
+ NSLog(@"subscribe from topic: %@", topic);
+ id pubSub = [GCMPubSub sharedInstance];
+ [pubSub subscribeWithToken: [self gcmRegistrationToken]
+ topic:[NSString stringWithFormat:@"/topics/%@", topic]
+ options:nil
+ handler:^void(NSError *error) {
+ if (error) {
+ if (error.code == 3001) {
+ NSLog(@"Already subscribed to %@", topic);
+ [self successWithMessage:command.callbackId withMsg:[NSString stringWithFormat:@"Already subscribed to %@", topic]];
+ } else {
+ NSLog(@"Failed to subscribe to topic %@: %@", topic, error);
+ [self failWithMessage:command.callbackId withMsg:[NSString stringWithFormat:@"Failed to subscribe to topic %@", topic] withError:error];
+ }
+ }
+ else {
+ NSLog(@"Successfully subscribe to topic %@", topic);
+ [self successWithMessage:command.callbackId withMsg:[NSString stringWithFormat:@"Successfully subscribe to topic %@", topic]];
+ }
+ }];
+ } else {
+ NSLog(@"There is no topic to subscribe");
+ [self successWithMessage:command.callbackId withMsg:@"There is no topic to subscribe"];
+ }
+}
+
+- (void)unsubscribe:(CDVInvokedUrlCommand*)command;
+{
+ NSString* topic = [command argumentAtIndex:0];
+
+ if (topic != nil) {
+ NSLog(@"unsubscribe from topic: %@", topic);
+ id pubSub = [GCMPubSub sharedInstance];
+ [pubSub unsubscribeWithToken: [self gcmRegistrationToken]
+ topic:[NSString stringWithFormat:@"/topics/%@", topic]
+ options:nil
+ handler:^void(NSError *error) {
+ if (error) {
+ NSLog(@"Failed to unsubscribe to topic %@: %@", topic, error);
+ [self failWithMessage:command.callbackId withMsg:[NSString stringWithFormat:@"Failed to unsubscribe to topic %@", topic] withError:error];
+ } else {
+ NSLog(@"Successfully unsubscribe to topic %@", topic);
+ [self successWithMessage:command.callbackId withMsg:[NSString stringWithFormat:@"Successfully unsubscribe to topic %@", topic]];
+ }
+ }];
+ } else {
+ NSLog(@"There is no topic to unsubscribe");
+ [self successWithMessage:command.callbackId withMsg:@"There is no topic to unsubscribe"];
+ }
+}
+
+- (void)init:(CDVInvokedUrlCommand*)command;
+{
+ [self.commandDelegate runInBackground:^ {
+
+ NSLog(@"Push Plugin register called");
+ self.callbackId = command.callbackId;
+
+ NSMutableDictionary* options = [command.arguments objectAtIndex:0];
+ NSMutableDictionary* iosOptions = [options objectForKey:@"ios"];
+
+ NSArray* topics = [iosOptions objectForKey:@"topics"];
+ [self setGcmTopics:topics];
+
+#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 80000
+ UIUserNotificationType UserNotificationTypes = UIUserNotificationTypeNone;
+#endif
+ UIRemoteNotificationType notificationTypes = UIRemoteNotificationTypeNone;
+
+ id badgeArg = [iosOptions objectForKey:@"badge"];
+ id soundArg = [iosOptions objectForKey:@"sound"];
+ id alertArg = [iosOptions objectForKey:@"alert"];
+ id clearBadgeArg = [iosOptions objectForKey:@"clearBadge"];
+
+ if (([badgeArg isKindOfClass:[NSString class]] && [badgeArg isEqualToString:@"true"]) || [badgeArg boolValue])
+ {
+ notificationTypes |= UIRemoteNotificationTypeBadge;
+#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 80000
+ UserNotificationTypes |= UIUserNotificationTypeBadge;
+#endif
+ }
+
+ if (([soundArg isKindOfClass:[NSString class]] && [soundArg isEqualToString:@"true"]) || [soundArg boolValue])
+ {
+ notificationTypes |= UIRemoteNotificationTypeSound;
+#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 80000
+ UserNotificationTypes |= UIUserNotificationTypeSound;
+#endif
+ }
+
+ if (([alertArg isKindOfClass:[NSString class]] && [alertArg isEqualToString:@"true"]) || [alertArg boolValue])
+ {
+ notificationTypes |= UIRemoteNotificationTypeAlert;
+#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 80000
+ UserNotificationTypes |= UIUserNotificationTypeAlert;
+#endif
+ }
+
+ notificationTypes |= UIRemoteNotificationTypeNewsstandContentAvailability;
+#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 80000
+ UserNotificationTypes |= UIUserNotificationActivationModeBackground;
+#endif
+
+ if (clearBadgeArg == nil || ([clearBadgeArg isKindOfClass:[NSString class]] && [clearBadgeArg isEqualToString:@"false"]) || ![clearBadgeArg boolValue]) {
+ NSLog(@"PushPlugin.register: setting badge to false");
+ clearBadge = NO;
+ } else {
+ NSLog(@"PushPlugin.register: setting badge to true");
+ clearBadge = YES;
+ [[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];
+ }
+ NSLog(@"PushPlugin.register: clear badge is set to %d", clearBadge);
+
+ if (notificationTypes == UIRemoteNotificationTypeNone)
+ NSLog(@"PushPlugin.register: Push notification type is set to none");
+
+ isInline = NO;
+
+#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 80000
+ NSLog(@"PushPlugin.register: better button setup");
+ // setup action buttons
+ NSMutableSet *categories = [[NSMutableSet alloc] init];
+ id categoryOptions = [iosOptions objectForKey:@"categories"];
+ if (categoryOptions != nil && [categoryOptions isKindOfClass:[NSDictionary class]]) {
+ for (id key in categoryOptions) {
+ NSLog(@"categories: key %@", key);
+ id category = [categoryOptions objectForKey:key];
+
+ id yesButton = [category objectForKey:@"yes"];
+ UIMutableUserNotificationAction *yesAction;
+ if (yesButton != nil && [yesButton isKindOfClass:[NSDictionary class]]) {
+ yesAction = [self createAction: yesButton];
+ }
+ id noButton = [category objectForKey:@"no"];
+ UIMutableUserNotificationAction *noAction;
+ if (noButton != nil && [noButton isKindOfClass:[NSDictionary class]]) {
+ noAction = [self createAction: noButton];
+ }
+ id maybeButton = [category objectForKey:@"maybe"];
+ UIMutableUserNotificationAction *maybeAction;
+ if (maybeButton != nil && [maybeButton isKindOfClass:[NSDictionary class]]) {
+ maybeAction = [self createAction: maybeButton];
+ }
+
+ // First create the category
+ UIMutableUserNotificationCategory *notificationCategory = [[UIMutableUserNotificationCategory alloc] init];
+
+ // Identifier to include in your push payload and local notification
+ notificationCategory.identifier = key;
+
+ NSMutableArray *categoryArray = [[NSMutableArray alloc] init];
+ NSMutableArray *minimalCategoryArray = [[NSMutableArray alloc] init];
+ if (yesButton != nil) {
+ [categoryArray addObject:yesAction];
+ [minimalCategoryArray addObject:yesAction];
+ }
+ if (noButton != nil) {
+ [categoryArray addObject:noAction];
+ [minimalCategoryArray addObject:noAction];
+ }
+ if (maybeButton != nil) {
+ [categoryArray addObject:maybeAction];
+ }
+
+ // Add the actions to the category and set the action context
+ [notificationCategory setActions:categoryArray forContext:UIUserNotificationActionContextDefault];
+
+ // Set the actions to present in a minimal context
+ [notificationCategory setActions:minimalCategoryArray forContext:UIUserNotificationActionContextMinimal];
+
+ NSLog(@"Adding category %@", key);
+ [categories addObject:notificationCategory];
+ }
+
+ }
+#else
+ NSLog(@"PushPlugin.register: action buttons only supported on iOS8 and above");
+#endif
+
+
+#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 80000
+ if ([[UIApplication sharedApplication]respondsToSelector:@selector(registerUserNotificationSettings:)]) {
+ UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:UserNotificationTypes categories:categories];
+ [[UIApplication sharedApplication] registerUserNotificationSettings:settings];
+ [[UIApplication sharedApplication] registerForRemoteNotifications];
+ } else {
+ [[UIApplication sharedApplication] registerForRemoteNotificationTypes:
+ (UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];
+ }
+#else
+ [[UIApplication sharedApplication] registerForRemoteNotificationTypes:
+ (UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];
+#endif
+
+ // GCM options
+ [self setGcmSenderId: [iosOptions objectForKey:@"senderID"]];
+ NSLog(@"GCM Sender ID %@", gcmSenderId);
+ if([[self gcmSenderId] length] > 0) {
+ NSLog(@"Using GCM Notification");
+ [self setUsesGCM: YES];
+ [self initGCMRegistrationHandler];
+ } else {
+ NSLog(@"Using APNS Notification");
+ [self setUsesGCM:NO];
+ }
+ id gcmSandBoxArg = [iosOptions objectForKey:@"gcmSandbox"];
+
+ [self setGcmSandbox:@NO];
+ if ([self usesGCM] &&
+ (([gcmSandBoxArg isKindOfClass:[NSString class]] && [gcmSandBoxArg isEqualToString:@"true"]) ||
+ [gcmSandBoxArg boolValue]))
+ {
+ NSLog(@"Using GCM Sandbox");
+ [self setGcmSandbox:@YES];
+ }
+
+ if (notificationMessage) { // if there is a pending startup notification
+ dispatch_async(dispatch_get_main_queue(), ^{
+ // delay to allow JS event handlers to be setup
+ [self performSelector:@selector(notificationReceived) withObject:nil afterDelay: 0.5];
+ });
+ }
+ }];
+}
+
+- (UIMutableUserNotificationAction *)createAction:(NSDictionary *)dictionary {
+
+ UIMutableUserNotificationAction *myAction = [[UIMutableUserNotificationAction alloc] init];
+
+ myAction = [[UIMutableUserNotificationAction alloc] init];
+ myAction.identifier = [dictionary objectForKey:@"callback"];
+ myAction.title = [dictionary objectForKey:@"title"];
+ id mode =[dictionary objectForKey:@"foreground"];
+ if (mode == nil || ([mode isKindOfClass:[NSString class]] && [mode isEqualToString:@"false"]) || ![mode boolValue]) {
+ myAction.activationMode = UIUserNotificationActivationModeBackground;
+ } else {
+ myAction.activationMode = UIUserNotificationActivationModeForeground;
+ }
+ id destructive = [dictionary objectForKey:@"destructive"];
+ if (destructive == nil || ([destructive isKindOfClass:[NSString class]] && [destructive isEqualToString:@"false"]) || ![destructive boolValue]) {
+ myAction.destructive = NO;
+ } else {
+ myAction.destructive = YES;
+ }
+ myAction.authenticationRequired = NO;
+
+ return myAction;
+}
+
+- (void)didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
+ if (self.callbackId == nil) {
+ NSLog(@"Unexpected call to didRegisterForRemoteNotificationsWithDeviceToken, ignoring: %@", deviceToken);
+ return;
+ }
+ NSLog(@"Push Plugin register success: %@", deviceToken);
+
+ NSMutableDictionary *results = [NSMutableDictionary dictionary];
+ NSString *token = [[[[deviceToken description] stringByReplacingOccurrencesOfString:@"<"withString:@""]
+ stringByReplacingOccurrencesOfString:@">" withString:@""]
+ stringByReplacingOccurrencesOfString: @" " withString: @""];
+ [results setValue:token forKey:@"deviceToken"];
+
+#if !TARGET_IPHONE_SIMULATOR
+ // Get Bundle Info for Remote Registration (handy if you have more than one app)
+ [results setValue:[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleDisplayName"] forKey:@"appName"];
+ [results setValue:[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"] forKey:@"appVersion"];
+
+ // Check what Notifications the user has turned on. We registered for all three, but they may have manually disabled some or all of them.
+#define SYSTEM_VERSION_LESS_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending)
+
+ NSUInteger rntypes;
+ if (!SYSTEM_VERSION_LESS_THAN(@"8.0")) {
+ rntypes = [[[UIApplication sharedApplication] currentUserNotificationSettings] types];
+ } else {
+ rntypes = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];
+ }
+
+ // Set the defaults to disabled unless we find otherwise...
+ NSString *pushBadge = @"disabled";
+ NSString *pushAlert = @"disabled";
+ NSString *pushSound = @"disabled";
+
+ // Check what Registered Types are turned on. This is a bit tricky since if two are enabled, and one is off, it will return a number 2... not telling you which
+ // one is actually disabled. So we are literally checking to see if rnTypes matches what is turned on, instead of by number. The "tricky" part is that the
+ // single notification types will only match if they are the ONLY one enabled. Likewise, when we are checking for a pair of notifications, it will only be
+ // true if those two notifications are on. This is why the code is written this way
+ if(rntypes & UIRemoteNotificationTypeBadge){
+ pushBadge = @"enabled";
+ }
+ if(rntypes & UIRemoteNotificationTypeAlert) {
+ pushAlert = @"enabled";
+ }
+ if(rntypes & UIRemoteNotificationTypeSound) {
+ pushSound = @"enabled";
+ }
+
+ [results setValue:pushBadge forKey:@"pushBadge"];
+ [results setValue:pushAlert forKey:@"pushAlert"];
+ [results setValue:pushSound forKey:@"pushSound"];
+
+ // Get the users Device Model, Display Name, Token & Version Number
+ UIDevice *dev = [UIDevice currentDevice];
+ [results setValue:dev.name forKey:@"deviceName"];
+ [results setValue:dev.model forKey:@"deviceModel"];
+ [results setValue:dev.systemVersion forKey:@"deviceSystemVersion"];
+
+ if([self usesGCM]) {
+ GGLInstanceIDConfig *instanceIDConfig = [GGLInstanceIDConfig defaultConfig];
+ instanceIDConfig.delegate = self;
+ [[GGLInstanceID sharedInstance] startWithConfig:instanceIDConfig];
+
+ [self setGcmRegistrationOptions: @{kGGLInstanceIDRegisterAPNSOption:deviceToken,
+ kGGLInstanceIDAPNSServerTypeSandboxOption:[self gcmSandbox]}];
+
+ [[GGLInstanceID sharedInstance] tokenWithAuthorizedEntity:[self gcmSenderId]
+ scope:kGGLInstanceIDScopeGCM
+ options:[self gcmRegistrationOptions]
+ handler:[self gcmRegistrationHandler]];
+
+ GCMConfig *gcmConfig = [GCMConfig defaultConfig];
+ gcmConfig.receiverDelegate = self;
+ [[GCMService sharedInstance] startWithConfig:gcmConfig];
+
+ } else {
+ [self registerWithToken: token];
+ }
+#endif
+}
+
+- (void)didFailToRegisterForRemoteNotificationsWithError:(NSError *)error
+{
+ if (self.callbackId == nil) {
+ NSLog(@"Unexpected call to didFailToRegisterForRemoteNotificationsWithError, ignoring: %@", error);
+ return;
+ }
+ NSLog(@"Push Plugin register failed");
+ [self failWithMessage:self.callbackId withMsg:@"" withError:error];
+}
+
+- (void)notificationReceived {
+ NSLog(@"Notification received");
+
+ if (notificationMessage && self.callbackId != nil)
+ {
+ NSMutableDictionary* message = [NSMutableDictionary dictionaryWithCapacity:4];
+ NSMutableDictionary* additionalData = [NSMutableDictionary dictionaryWithCapacity:4];
+
+
+ for (id key in notificationMessage) {
+ if ([key isEqualToString:@"aps"]) {
+ id aps = [notificationMessage objectForKey:@"aps"];
+
+ for(id key in aps) {
+ NSLog(@"Push Plugin key: %@", key);
+ id value = [aps objectForKey:key];
+
+ if ([key isEqualToString:@"alert"]) {
+ if ([value isKindOfClass:[NSDictionary class]]) {
+ for (id messageKey in value) {
+ id messageValue = [value objectForKey:messageKey];
+ if ([messageKey isEqualToString:@"body"]) {
+ [message setObject:messageValue forKey:@"message"];
+ } else if ([messageKey isEqualToString:@"title"]) {
+ [message setObject:messageValue forKey:@"title"];
+ } else {
+ [additionalData setObject:messageValue forKey:messageKey];
+ }
+ }
+ }
+ else {
+ [message setObject:value forKey:@"message"];
+ }
+ } else if ([key isEqualToString:@"title"]) {
+ [message setObject:value forKey:@"title"];
+ } else if ([key isEqualToString:@"badge"]) {
+ [message setObject:value forKey:@"count"];
+ } else if ([key isEqualToString:@"sound"]) {
+ [message setObject:value forKey:@"sound"];
+ } else if ([key isEqualToString:@"image"]) {
+ [message setObject:value forKey:@"image"];
+ } else {
+ [additionalData setObject:value forKey:key];
+ }
+ }
+ } else {
+ [additionalData setObject:[notificationMessage objectForKey:key] forKey:key];
+ }
+ }
+
+ if (isInline) {
+ [additionalData setObject:[NSNumber numberWithBool:YES] forKey:@"foreground"];
+ } else {
+ [additionalData setObject:[NSNumber numberWithBool:NO] forKey:@"foreground"];
+ }
+
+ if (coldstart) {
+ [additionalData setObject:[NSNumber numberWithBool:YES] forKey:@"coldstart"];
+ } else {
+ [additionalData setObject:[NSNumber numberWithBool:NO] forKey:@"coldstart"];
+ }
+
+ [message setObject:additionalData forKey:@"additionalData"];
+
+ // send notification message
+ CDVPluginResult* pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsDictionary:message];
+ [pluginResult setKeepCallbackAsBool:YES];
+ [self.commandDelegate sendPluginResult:pluginResult callbackId:self.callbackId];
+
+ self.coldstart = NO;
+ self.notificationMessage = nil;
+ }
+}
+
+- (void)setApplicationIconBadgeNumber:(CDVInvokedUrlCommand *)command
+{
+ NSMutableDictionary* options = [command.arguments objectAtIndex:0];
+ int badge = [[options objectForKey:@"badge"] intValue] ?: 0;
+
+ [[UIApplication sharedApplication] setApplicationIconBadgeNumber:badge];
+
+ NSString* message = [NSString stringWithFormat:@"app badge count set to %d", badge];
+ CDVPluginResult *commandResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString:message];
+ [self.commandDelegate sendPluginResult:commandResult callbackId:command.callbackId];
+}
+
+- (void)getApplicationIconBadgeNumber:(CDVInvokedUrlCommand *)command
+{
+ NSInteger badge = [UIApplication sharedApplication].applicationIconBadgeNumber;
+
+ CDVPluginResult *commandResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsInt:(int)badge];
+ [self.commandDelegate sendPluginResult:commandResult callbackId:command.callbackId];
+}
+
+- (void)clearAllNotifications:(CDVInvokedUrlCommand *)command
+{
+ [[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];
+
+ NSString* message = [NSString stringWithFormat:@"cleared all notifications"];
+ CDVPluginResult *commandResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString:message];
+ [self.commandDelegate sendPluginResult:commandResult callbackId:command.callbackId];
+}
+
+- (void)hasPermission:(CDVInvokedUrlCommand *)command
+{
+ BOOL enabled = NO;
+ id<UIApplicationDelegate> appDelegate = [UIApplication sharedApplication].delegate;
+ if ([appDelegate respondsToSelector:@selector(userHasRemoteNotificationsEnabled)]) {
+ enabled = [appDelegate performSelector:@selector(userHasRemoteNotificationsEnabled)];
+ }
+
+ NSMutableDictionary* message = [NSMutableDictionary dictionaryWithCapacity:1];
+ [message setObject:[NSNumber numberWithBool:enabled] forKey:@"isEnabled"];
+ CDVPluginResult *commandResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsDictionary:message];
+ [self.commandDelegate sendPluginResult:commandResult callbackId:command.callbackId];
+}
+
+-(void)successWithMessage:(NSString *)callbackId withMsg:(NSString *)message
+{
+ if (callbackId != nil)
+ {
+ CDVPluginResult *commandResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString:message];
+ [self.commandDelegate sendPluginResult:commandResult callbackId:callbackId];
+ }
+}
+
+-(void)registerWithToken:(NSString*)token; {
+ // Send result to trigger 'registration' event but keep callback
+ NSMutableDictionary* message = [NSMutableDictionary dictionaryWithCapacity:1];
+ [message setObject:token forKey:@"registrationId"];
+ CDVPluginResult* pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsDictionary:message];
+ [pluginResult setKeepCallbackAsBool:YES];
+ [self.commandDelegate sendPluginResult:pluginResult callbackId:self.callbackId];
+}
+
+
+-(void)failWithMessage:(NSString *)callbackId withMsg:(NSString *)message withError:(NSError *)error
+{
+ NSString *errorMessage = (error) ? [NSString stringWithFormat:@"%@ - %@", message, [error localizedDescription]] : message;
+ CDVPluginResult *commandResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR messageAsString:errorMessage];
+
+ [self.commandDelegate sendPluginResult:commandResult callbackId:callbackId];
+}
+
+-(void) finish:(CDVInvokedUrlCommand*)command
+{
+ NSLog(@"Push Plugin finish called");
+
+ [self.commandDelegate runInBackground:^ {
+ NSString* notId = [command.arguments objectAtIndex:0];
+
+ dispatch_async(dispatch_get_main_queue(), ^{
+ [NSTimer scheduledTimerWithTimeInterval:0.1
+ target:self
+ selector:@selector(stopBackgroundTask:)
+ userInfo:notId
+ repeats:NO];
+ });
+
+ CDVPluginResult* pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK];
+ [self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId];
+ }];
+}
+
+-(void)stopBackgroundTask:(NSTimer*)timer
+{
+ UIApplication *app = [UIApplication sharedApplication];
+
+ NSLog(@"Push Plugin stopBackgroundTask called");
+
+ if (handlerObj) {
+ NSLog(@"Push Plugin handlerObj");
+ completionHandler = [handlerObj[[timer userInfo]] copy];
+ if (completionHandler) {
+ NSLog(@"Push Plugin: stopBackgroundTask (remaining t: %f)", app.backgroundTimeRemaining);
+ completionHandler(UIBackgroundFetchResultNewData);
+ completionHandler = nil;
+ }
+ }
+}
+
+@end
diff --git a/StoneIsland/platforms/ios/Stone Island/Stone Island-Info.plist b/StoneIsland/platforms/ios/Stone Island/Stone Island-Info.plist
index b3b1fd95..c395eefd 100644
--- a/StoneIsland/platforms/ios/Stone Island/Stone Island-Info.plist
+++ b/StoneIsland/platforms/ios/Stone Island/Stone Island-Info.plist
@@ -64,5 +64,13 @@
</array>
<key>NSLocationWhenInUseUsageDescription</key>
<string/>
+ <key>UIBackgroundModes</key>
+ <array>
+ <string>remote-notification</string>
+ </array>
+ <key>GCM_SENDER_ID</key>
+ <string>XXXXXXX</string>
+ <key>IS_GCM_ENABLED</key>
+ <true/>
</dict>
</plist> \ No newline at end of file
diff --git a/StoneIsland/platforms/ios/Stone Island/Stone Island.entitlements b/StoneIsland/platforms/ios/Stone Island/Stone Island.entitlements
deleted file mode 100644
index 903def2a..00000000
--- a/StoneIsland/platforms/ios/Stone Island/Stone Island.entitlements
+++ /dev/null
@@ -1,8 +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>aps-environment</key>
- <string>development</string>
-</dict>
-</plist>
diff --git a/StoneIsland/platforms/ios/Stone Island/config.xml b/StoneIsland/platforms/ios/Stone Island/config.xml
index 2f1603bc..e2b93dd0 100755
--- a/StoneIsland/platforms/ios/Stone Island/config.xml
+++ b/StoneIsland/platforms/ios/Stone Island/config.xml
@@ -15,38 +15,6 @@
<param name="ios-package" value="CDVGestureHandler" />
<param name="onload" value="true" />
</feature>
- <feature name="ParsePlugin">
- <param name="ios-package" value="CDVParsePlugin" />
- </feature>
- <feature name="Console">
- <param name="ios-package" value="CDVLogger" />
- </feature>
- <feature name="Device">
- <param name="ios-package" value="CDVDevice" />
- </feature>
- <feature name="Notification">
- <param name="ios-package" value="CDVNotification" />
- </feature>
- <feature name="Geolocation">
- <param name="ios-package" value="CDVLocation" />
- </feature>
- <feature name="InAppBrowser">
- <param name="ios-package" value="CDVInAppBrowser" />
- </feature>
- <feature name="NetworkStatus">
- <param name="ios-package" value="CDVConnection" />
- </feature>
- <feature name="SplashScreen">
- <param name="ios-package" value="CDVSplashScreen" />
- <param name="onload" value="true" />
- </feature>
- <feature name="SocialSharing">
- <param name="ios-package" value="SocialSharing" />
- <param name="onload" value="true" />
- </feature>
- <feature name="Keyboard">
- <param name="ios-package" onload="true" value="IonicKeyboard" />
- </feature>
<name>Stone Island</name>
<description>
Stone Island
@@ -86,4 +54,39 @@
<preference name="SplashMaintainAspectRatio" value="true" />
<preference name="ShowSplashScreenSpinner" value="false" />
<preference name="AutoHideSplashScreen" value="false" />
+ <feature name="ParsePlugin">
+ <param name="ios-package" value="CDVParsePlugin" />
+ </feature>
+ <feature name="Console">
+ <param name="ios-package" value="CDVLogger" />
+ </feature>
+ <feature name="Device">
+ <param name="ios-package" value="CDVDevice" />
+ </feature>
+ <feature name="Notification">
+ <param name="ios-package" value="CDVNotification" />
+ </feature>
+ <feature name="Geolocation">
+ <param name="ios-package" value="CDVLocation" />
+ </feature>
+ <feature name="InAppBrowser">
+ <param name="ios-package" value="CDVInAppBrowser" />
+ </feature>
+ <feature name="NetworkStatus">
+ <param name="ios-package" value="CDVConnection" />
+ </feature>
+ <feature name="SplashScreen">
+ <param name="ios-package" value="CDVSplashScreen" />
+ <param name="onload" value="true" />
+ </feature>
+ <feature name="SocialSharing">
+ <param name="ios-package" value="SocialSharing" />
+ <param name="onload" value="true" />
+ </feature>
+ <feature name="Keyboard">
+ <param name="ios-package" onload="true" value="IonicKeyboard" />
+ </feature>
+ <feature name="PushNotification">
+ <param name="ios-package" value="PushPlugin" />
+ </feature>
</widget>