cordova
@@ -0,0 +1,25 @@
|
||||
/*
|
||||
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.
|
||||
*/
|
||||
|
||||
#ifdef DEBUG
|
||||
#define DLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__)
|
||||
#else
|
||||
#define DLog(...)
|
||||
#endif
|
||||
#define ALog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__)
|
||||
@@ -0,0 +1,31 @@
|
||||
/*
|
||||
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.
|
||||
*/
|
||||
|
||||
@interface NSArray (CDVJSONSerializingPrivate)
|
||||
- (NSString*)cdv_JSONString;
|
||||
@end
|
||||
|
||||
@interface NSDictionary (CDVJSONSerializingPrivate)
|
||||
- (NSString*)cdv_JSONString;
|
||||
@end
|
||||
|
||||
@interface NSString (CDVJSONSerializingPrivate)
|
||||
- (id)cdv_JSONObject;
|
||||
- (id)cdv_JSONFragment;
|
||||
@end
|
||||
@@ -0,0 +1,91 @@
|
||||
/*
|
||||
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.
|
||||
*/
|
||||
|
||||
#import "CDVJSON_private.h"
|
||||
#import <Foundation/NSJSONSerialization.h>
|
||||
|
||||
@implementation NSArray (CDVJSONSerializingPrivate)
|
||||
|
||||
- (NSString*)cdv_JSONString
|
||||
{
|
||||
NSError* error = nil;
|
||||
NSData* jsonData = [NSJSONSerialization dataWithJSONObject:self
|
||||
options:0
|
||||
error:&error];
|
||||
|
||||
if (error != nil) {
|
||||
NSLog(@"NSArray JSONString error: %@", [error localizedDescription]);
|
||||
return nil;
|
||||
} else {
|
||||
return [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@implementation NSDictionary (CDVJSONSerializingPrivate)
|
||||
|
||||
- (NSString*)cdv_JSONString
|
||||
{
|
||||
NSError* error = nil;
|
||||
NSData* jsonData = [NSJSONSerialization dataWithJSONObject:self
|
||||
options:NSJSONWritingPrettyPrinted
|
||||
error:&error];
|
||||
|
||||
if (error != nil) {
|
||||
NSLog(@"NSDictionary JSONString error: %@", [error localizedDescription]);
|
||||
return nil;
|
||||
} else {
|
||||
return [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@implementation NSString (CDVJSONSerializingPrivate)
|
||||
|
||||
- (id)cdv_JSONObject
|
||||
{
|
||||
NSError* error = nil;
|
||||
id object = [NSJSONSerialization JSONObjectWithData:[self dataUsingEncoding:NSUTF8StringEncoding]
|
||||
options:NSJSONReadingMutableContainers
|
||||
error:&error];
|
||||
|
||||
if (error != nil) {
|
||||
NSLog(@"NSString JSONObject error: %@, Malformed Data: %@", [error localizedDescription], self);
|
||||
}
|
||||
|
||||
return object;
|
||||
}
|
||||
|
||||
- (id)cdv_JSONFragment
|
||||
{
|
||||
NSError* error = nil;
|
||||
id object = [NSJSONSerialization JSONObjectWithData:[self dataUsingEncoding:NSUTF8StringEncoding]
|
||||
options:NSJSONReadingAllowFragments
|
||||
error:&error];
|
||||
|
||||
if (error != nil) {
|
||||
NSLog(@"NSString JSONObject error: %@", [error localizedDescription]);
|
||||
}
|
||||
|
||||
return object;
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,24 @@
|
||||
/*
|
||||
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.
|
||||
*/
|
||||
|
||||
@interface CDVPlugin (Private)
|
||||
|
||||
- (instancetype)initWithWebViewEngine:(id <CDVWebViewEngineProtocol>)theWebViewEngine;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,26 @@
|
||||
/*
|
||||
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.
|
||||
*/
|
||||
|
||||
#import "CDVPlugin.h"
|
||||
|
||||
@interface CDVGestureHandler : CDVPlugin
|
||||
|
||||
@property (nonatomic, strong) UILongPressGestureRecognizer* lpgr;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,74 @@
|
||||
/*
|
||||
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.
|
||||
*/
|
||||
|
||||
#import "CDVGestureHandler.h"
|
||||
|
||||
@implementation CDVGestureHandler
|
||||
|
||||
- (void)pluginInitialize
|
||||
{
|
||||
[self applyLongPressFix];
|
||||
}
|
||||
|
||||
- (void)applyLongPressFix
|
||||
{
|
||||
// You can't suppress 3D Touch and still have regular longpress,
|
||||
// so if this is false, let's not consider the 3D Touch setting at all.
|
||||
if (![self.commandDelegate.settings objectForKey:@"suppresseslongpressgesture"] ||
|
||||
![[self.commandDelegate.settings objectForKey:@"suppresseslongpressgesture"] boolValue]) {
|
||||
return;
|
||||
}
|
||||
|
||||
self.lpgr = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleLongPressGestures:)];
|
||||
self.lpgr.minimumPressDuration = 0.45f;
|
||||
self.lpgr.allowableMovement = 100.0f;
|
||||
|
||||
// 0.45 is ok for 'regular longpress', 0.05-0.08 is required for '3D Touch longpress',
|
||||
// but since this will also kill onclick handlers (not ontouchend) it's optional.
|
||||
if ([self.commandDelegate.settings objectForKey:@"suppresses3dtouchgesture"] &&
|
||||
[[self.commandDelegate.settings objectForKey:@"suppresses3dtouchgesture"] boolValue]) {
|
||||
self.lpgr.minimumPressDuration = 0.05f;
|
||||
}
|
||||
|
||||
NSArray *views = self.webView.subviews;
|
||||
if (views.count == 0) {
|
||||
NSLog(@"No webview subviews found, not applying the longpress fix.");
|
||||
return;
|
||||
}
|
||||
for (int i=0; i<views.count; i++) {
|
||||
UIView *webViewScrollView = views[i];
|
||||
if ([webViewScrollView isKindOfClass:[UIScrollView class]]) {
|
||||
NSArray *webViewScrollViewSubViews = webViewScrollView.subviews;
|
||||
UIView *browser = webViewScrollViewSubViews[0];
|
||||
[browser addGestureRecognizer:self.lpgr];
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
- (void)handleLongPressGestures:(UILongPressGestureRecognizer*)sender
|
||||
{
|
||||
if ([sender isEqual:self.lpgr]) {
|
||||
if (sender.state == UIGestureRecognizerStateBegan) {
|
||||
NSLog(@"Ignoring a longpress in order to suppress the magnifying glass.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,27 @@
|
||||
/*
|
||||
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.
|
||||
*/
|
||||
|
||||
#import "CDVPlugin.h"
|
||||
|
||||
@interface CDVHandleOpenURL : CDVPlugin
|
||||
|
||||
@property (nonatomic, strong) NSURL* url;
|
||||
@property (nonatomic, assign) BOOL pageLoaded;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,86 @@
|
||||
/*
|
||||
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.
|
||||
*/
|
||||
|
||||
#import "CDVHandleOpenURL.h"
|
||||
#import "CDV.h"
|
||||
|
||||
@implementation CDVHandleOpenURL
|
||||
|
||||
- (void)pluginInitialize
|
||||
{
|
||||
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationLaunchedWithUrl:) name:CDVPluginHandleOpenURLNotification object:nil];
|
||||
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationPageDidLoad:) name:CDVPageDidLoadNotification object:nil];
|
||||
}
|
||||
|
||||
- (void)applicationLaunchedWithUrl:(NSNotification*)notification
|
||||
{
|
||||
NSURL* url = [notification object];
|
||||
|
||||
self.url = url;
|
||||
|
||||
// warm-start handler
|
||||
if (self.pageLoaded) {
|
||||
[self processOpenUrl:self.url pageLoaded:YES];
|
||||
self.url = nil;
|
||||
}
|
||||
}
|
||||
|
||||
- (void)applicationPageDidLoad:(NSNotification*)notification
|
||||
{
|
||||
// cold-start handler
|
||||
|
||||
self.pageLoaded = YES;
|
||||
|
||||
if (self.url) {
|
||||
[self processOpenUrl:self.url pageLoaded:YES];
|
||||
self.url = nil;
|
||||
}
|
||||
}
|
||||
|
||||
- (void)processOpenUrl:(NSURL*)url pageLoaded:(BOOL)pageLoaded
|
||||
{
|
||||
__weak __typeof(self) weakSelf = self;
|
||||
|
||||
dispatch_block_t handleOpenUrl = ^(void) {
|
||||
// calls into javascript global function 'handleOpenURL'
|
||||
NSString* jsString = [NSString stringWithFormat:@"document.addEventListener('deviceready',function(){if (typeof handleOpenURL === 'function') { handleOpenURL(\"%@\");}});", url.absoluteString];
|
||||
|
||||
[weakSelf.webViewEngine evaluateJavaScript:jsString completionHandler:nil];
|
||||
};
|
||||
|
||||
if (!pageLoaded) {
|
||||
NSString* jsString = @"document.readystate";
|
||||
[self.webViewEngine evaluateJavaScript:jsString
|
||||
completionHandler:^(id object, NSError* error) {
|
||||
if ((error == nil) && [object isKindOfClass:[NSString class]]) {
|
||||
NSString* readyState = (NSString*)object;
|
||||
BOOL ready = [readyState isEqualToString:@"loaded"] || [readyState isEqualToString:@"complete"];
|
||||
if (ready) {
|
||||
handleOpenUrl();
|
||||
} else {
|
||||
self.url = url;
|
||||
}
|
||||
}
|
||||
}];
|
||||
} else {
|
||||
handleOpenUrl();
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,34 @@
|
||||
/*
|
||||
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.
|
||||
*/
|
||||
|
||||
#import "CDVPlugin.h"
|
||||
#import "CDVWhitelist.h"
|
||||
|
||||
typedef NS_ENUM(NSInteger, CDVIntentAndNavigationFilterValue) {
|
||||
CDVIntentAndNavigationFilterValueIntentAllowed,
|
||||
CDVIntentAndNavigationFilterValueNavigationAllowed,
|
||||
CDVIntentAndNavigationFilterValueNoneAllowed
|
||||
};
|
||||
|
||||
@interface CDVIntentAndNavigationFilter : CDVPlugin <NSXMLParserDelegate>
|
||||
|
||||
+ (CDVIntentAndNavigationFilterValue) filterUrl:(NSURL*)url intentsWhitelist:(CDVWhitelist*)intentsWhitelist navigationsWhitelist:(CDVWhitelist*)navigationsWhitelist;
|
||||
+ (BOOL)shouldOverrideLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType filterValue:(CDVIntentAndNavigationFilterValue)filterValue;
|
||||
+ (BOOL)shouldOpenURLRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType;
|
||||
@end
|
||||
@@ -0,0 +1,153 @@
|
||||
/*
|
||||
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.
|
||||
*/
|
||||
|
||||
#import "CDVIntentAndNavigationFilter.h"
|
||||
#import <Cordova/CDV.h>
|
||||
|
||||
@interface CDVIntentAndNavigationFilter ()
|
||||
|
||||
@property (nonatomic, readwrite) NSMutableArray* allowIntents;
|
||||
@property (nonatomic, readwrite) NSMutableArray* allowNavigations;
|
||||
@property (nonatomic, readwrite) CDVWhitelist* allowIntentsWhitelist;
|
||||
@property (nonatomic, readwrite) CDVWhitelist* allowNavigationsWhitelist;
|
||||
|
||||
@end
|
||||
|
||||
@implementation CDVIntentAndNavigationFilter
|
||||
|
||||
#pragma mark NSXMLParserDelegate
|
||||
|
||||
- (void)parser:(NSXMLParser*)parser didStartElement:(NSString*)elementName namespaceURI:(NSString*)namespaceURI qualifiedName:(NSString*)qualifiedName attributes:(NSDictionary*)attributeDict
|
||||
{
|
||||
if ([elementName isEqualToString:@"allow-navigation"]) {
|
||||
[self.allowNavigations addObject:attributeDict[@"href"]];
|
||||
}
|
||||
if ([elementName isEqualToString:@"allow-intent"]) {
|
||||
[self.allowIntents addObject:attributeDict[@"href"]];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)parserDidStartDocument:(NSXMLParser*)parser
|
||||
{
|
||||
// file: url <allow-navigations> are added by default
|
||||
self.allowNavigations = [[NSMutableArray alloc] initWithArray:@[ @"file://" ]];
|
||||
// no intents are added by default
|
||||
self.allowIntents = [[NSMutableArray alloc] init];
|
||||
}
|
||||
|
||||
- (void)parserDidEndDocument:(NSXMLParser*)parser
|
||||
{
|
||||
self.allowIntentsWhitelist = [[CDVWhitelist alloc] initWithArray:self.allowIntents];
|
||||
self.allowNavigationsWhitelist = [[CDVWhitelist alloc] initWithArray:self.allowNavigations];
|
||||
}
|
||||
|
||||
- (void)parser:(NSXMLParser*)parser parseErrorOccurred:(NSError*)parseError
|
||||
{
|
||||
NSAssert(NO, @"config.xml parse error line %ld col %ld", (long)[parser lineNumber], (long)[parser columnNumber]);
|
||||
}
|
||||
|
||||
#pragma mark CDVPlugin
|
||||
|
||||
- (void)pluginInitialize
|
||||
{
|
||||
if ([self.viewController isKindOfClass:[CDVViewController class]]) {
|
||||
[(CDVViewController*)self.viewController parseSettingsWithParser:self];
|
||||
}
|
||||
}
|
||||
|
||||
+ (CDVIntentAndNavigationFilterValue) filterUrl:(NSURL*)url intentsWhitelist:(CDVWhitelist*)intentsWhitelist navigationsWhitelist:(CDVWhitelist*)navigationsWhitelist
|
||||
{
|
||||
// a URL can only allow-intent OR allow-navigation, if both are specified,
|
||||
// only allow-navigation is allowed
|
||||
|
||||
BOOL allowNavigationsPass = [navigationsWhitelist URLIsAllowed:url logFailure:NO];
|
||||
BOOL allowIntentPass = [intentsWhitelist URLIsAllowed:url logFailure:NO];
|
||||
|
||||
if (allowNavigationsPass && allowIntentPass) {
|
||||
return CDVIntentAndNavigationFilterValueNavigationAllowed;
|
||||
} else if (allowNavigationsPass) {
|
||||
return CDVIntentAndNavigationFilterValueNavigationAllowed;
|
||||
} else if (allowIntentPass) {
|
||||
return CDVIntentAndNavigationFilterValueIntentAllowed;
|
||||
}
|
||||
|
||||
return CDVIntentAndNavigationFilterValueNoneAllowed;
|
||||
}
|
||||
|
||||
- (CDVIntentAndNavigationFilterValue) filterUrl:(NSURL*)url
|
||||
{
|
||||
return [[self class] filterUrl:url intentsWhitelist:self.allowIntentsWhitelist navigationsWhitelist:self.allowNavigationsWhitelist];
|
||||
}
|
||||
|
||||
+ (BOOL)shouldOpenURLRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType
|
||||
{
|
||||
return (UIWebViewNavigationTypeLinkClicked == navigationType ||
|
||||
(UIWebViewNavigationTypeOther == navigationType &&
|
||||
[[request.mainDocumentURL absoluteString] isEqualToString:[request.URL absoluteString]]
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
+ (BOOL)shouldOverrideLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType filterValue:(CDVIntentAndNavigationFilterValue)filterValue
|
||||
{
|
||||
NSString* allowIntents_whitelistRejectionFormatString = @"ERROR External navigation rejected - <allow-intent> not set for url='%@'";
|
||||
NSString* allowNavigations_whitelistRejectionFormatString = @"ERROR Internal navigation rejected - <allow-navigation> not set for url='%@'";
|
||||
|
||||
NSURL* url = [request URL];
|
||||
|
||||
switch (filterValue) {
|
||||
case CDVIntentAndNavigationFilterValueNavigationAllowed:
|
||||
return YES;
|
||||
case CDVIntentAndNavigationFilterValueIntentAllowed:
|
||||
// only allow-intent if it's a UIWebViewNavigationTypeLinkClicked (anchor tag) OR
|
||||
// it's a UIWebViewNavigationTypeOther, and it's an internal link
|
||||
if ([[self class] shouldOpenURLRequest:request navigationType:navigationType]){
|
||||
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 100000
|
||||
// CB-11895; openURL with a single parameter is deprecated in iOS 10
|
||||
// see https://useyourloaf.com/blog/openurl-deprecated-in-ios10
|
||||
if ([[UIApplication sharedApplication] respondsToSelector:@selector(openURL:options:completionHandler:)]) {
|
||||
[[UIApplication sharedApplication] openURL:url options:@{} completionHandler:nil];
|
||||
} else {
|
||||
[[UIApplication sharedApplication] openURL:url];
|
||||
}
|
||||
#else
|
||||
// fall back if on older SDK
|
||||
[[UIApplication sharedApplication] openURL:url];
|
||||
#endif
|
||||
}
|
||||
|
||||
// consume the request (i.e. no error) if it wasn't handled above
|
||||
return NO;
|
||||
case CDVIntentAndNavigationFilterValueNoneAllowed:
|
||||
// allow-navigation attempt failed for sure
|
||||
NSLog(@"%@", [NSString stringWithFormat:allowNavigations_whitelistRejectionFormatString, [url absoluteString]]);
|
||||
// anchor tag link means it was an allow-intent attempt that failed as well
|
||||
if (UIWebViewNavigationTypeLinkClicked == navigationType) {
|
||||
NSLog(@"%@", [NSString stringWithFormat:allowIntents_whitelistRejectionFormatString, [url absoluteString]]);
|
||||
}
|
||||
return NO;
|
||||
}
|
||||
}
|
||||
|
||||
- (BOOL)shouldOverrideLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType
|
||||
{
|
||||
return [[self class] shouldOverrideLoadWithRequest:request navigationType:navigationType filterValue:[self filterUrl:request.URL]];
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,50 @@
|
||||
/*
|
||||
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.
|
||||
*/
|
||||
|
||||
#import "CDVPlugin.h"
|
||||
|
||||
#define kCDVLocalStorageErrorDomain @"kCDVLocalStorageErrorDomain"
|
||||
#define kCDVLocalStorageFileOperationError 1
|
||||
|
||||
@interface CDVLocalStorage : CDVPlugin
|
||||
|
||||
@property (nonatomic, readonly, strong) NSMutableArray* backupInfo;
|
||||
|
||||
- (BOOL)shouldBackup;
|
||||
- (BOOL)shouldRestore;
|
||||
- (void)backup:(CDVInvokedUrlCommand*)command;
|
||||
- (void)restore:(CDVInvokedUrlCommand*)command;
|
||||
|
||||
+ (void)__fixupDatabaseLocationsWithBackupType:(NSString*)backupType;
|
||||
// Visible for testing.
|
||||
+ (BOOL)__verifyAndFixDatabaseLocationsWithAppPlistDict:(NSMutableDictionary*)appPlistDict
|
||||
bundlePath:(NSString*)bundlePath
|
||||
fileManager:(NSFileManager*)fileManager;
|
||||
@end
|
||||
|
||||
@interface CDVBackupInfo : NSObject
|
||||
|
||||
@property (nonatomic, copy) NSString* original;
|
||||
@property (nonatomic, copy) NSString* backup;
|
||||
@property (nonatomic, copy) NSString* label;
|
||||
|
||||
- (BOOL)shouldBackup;
|
||||
- (BOOL)shouldRestore;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,487 @@
|
||||
/*
|
||||
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.
|
||||
*/
|
||||
|
||||
#import "CDVLocalStorage.h"
|
||||
#import "CDV.h"
|
||||
|
||||
@interface CDVLocalStorage ()
|
||||
|
||||
@property (nonatomic, readwrite, strong) NSMutableArray* backupInfo; // array of CDVBackupInfo objects
|
||||
@property (nonatomic, readwrite, weak) id <UIWebViewDelegate> webviewDelegate;
|
||||
|
||||
@end
|
||||
|
||||
@implementation CDVLocalStorage
|
||||
|
||||
@synthesize backupInfo, webviewDelegate;
|
||||
|
||||
- (void)pluginInitialize
|
||||
{
|
||||
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(onResignActive)
|
||||
name:UIApplicationWillResignActiveNotification object:nil];
|
||||
BOOL cloudBackup = [@"cloud" isEqualToString : self.commandDelegate.settings[[@"BackupWebStorage" lowercaseString]]];
|
||||
|
||||
self.backupInfo = [[self class] createBackupInfoWithCloudBackup:cloudBackup];
|
||||
}
|
||||
|
||||
#pragma mark -
|
||||
#pragma mark Plugin interface methods
|
||||
|
||||
+ (NSMutableArray*)createBackupInfoWithTargetDir:(NSString*)targetDir backupDir:(NSString*)backupDir targetDirNests:(BOOL)targetDirNests backupDirNests:(BOOL)backupDirNests rename:(BOOL)rename
|
||||
{
|
||||
/*
|
||||
This "helper" does so much work and has so many options it would probably be clearer to refactor the whole thing.
|
||||
Basically, there are three database locations:
|
||||
|
||||
1. "Normal" dir -- LIB/<nested dires WebKit/LocalStorage etc>/<normal filenames>
|
||||
2. "Caches" dir -- LIB/Caches/<normal filenames>
|
||||
3. "Backup" dir -- DOC/Backups/<renamed filenames>
|
||||
|
||||
And between these three, there are various migration paths, most of which only consider 2 of the 3, which is why this helper is based on 2 locations and has a notion of "direction".
|
||||
*/
|
||||
NSMutableArray* backupInfo = [NSMutableArray arrayWithCapacity:3];
|
||||
|
||||
NSString* original;
|
||||
NSString* backup;
|
||||
CDVBackupInfo* backupItem;
|
||||
|
||||
// ////////// LOCALSTORAGE
|
||||
|
||||
original = [targetDir stringByAppendingPathComponent:targetDirNests ? @"WebKit/LocalStorage/file__0.localstorage":@"file__0.localstorage"];
|
||||
backup = [backupDir stringByAppendingPathComponent:(backupDirNests ? @"WebKit/LocalStorage" : @"")];
|
||||
backup = [backup stringByAppendingPathComponent:(rename ? @"localstorage.appdata.db" : @"file__0.localstorage")];
|
||||
|
||||
backupItem = [[CDVBackupInfo alloc] init];
|
||||
backupItem.backup = backup;
|
||||
backupItem.original = original;
|
||||
backupItem.label = @"localStorage database";
|
||||
|
||||
[backupInfo addObject:backupItem];
|
||||
|
||||
// ////////// WEBSQL MAIN DB
|
||||
|
||||
original = [targetDir stringByAppendingPathComponent:targetDirNests ? @"WebKit/LocalStorage/Databases.db":@"Databases.db"];
|
||||
backup = [backupDir stringByAppendingPathComponent:(backupDirNests ? @"WebKit/LocalStorage" : @"")];
|
||||
backup = [backup stringByAppendingPathComponent:(rename ? @"websqlmain.appdata.db" : @"Databases.db")];
|
||||
|
||||
backupItem = [[CDVBackupInfo alloc] init];
|
||||
backupItem.backup = backup;
|
||||
backupItem.original = original;
|
||||
backupItem.label = @"websql main database";
|
||||
|
||||
[backupInfo addObject:backupItem];
|
||||
|
||||
// ////////// WEBSQL DATABASES
|
||||
|
||||
original = [targetDir stringByAppendingPathComponent:targetDirNests ? @"WebKit/LocalStorage/file__0":@"file__0"];
|
||||
backup = [backupDir stringByAppendingPathComponent:(backupDirNests ? @"WebKit/LocalStorage" : @"")];
|
||||
backup = [backup stringByAppendingPathComponent:(rename ? @"websqldbs.appdata.db" : @"file__0")];
|
||||
|
||||
backupItem = [[CDVBackupInfo alloc] init];
|
||||
backupItem.backup = backup;
|
||||
backupItem.original = original;
|
||||
backupItem.label = @"websql databases";
|
||||
|
||||
[backupInfo addObject:backupItem];
|
||||
|
||||
return backupInfo;
|
||||
}
|
||||
|
||||
+ (NSMutableArray*)createBackupInfoWithCloudBackup:(BOOL)cloudBackup
|
||||
{
|
||||
// create backup info from backup folder to caches folder
|
||||
NSString* appLibraryFolder = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) objectAtIndex:0];
|
||||
NSString* appDocumentsFolder = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
|
||||
NSString* cacheFolder = [appLibraryFolder stringByAppendingPathComponent:@"Caches"];
|
||||
NSString* backupsFolder = [appDocumentsFolder stringByAppendingPathComponent:@"Backups"];
|
||||
|
||||
// create the backups folder, if needed
|
||||
[[NSFileManager defaultManager] createDirectoryAtPath:backupsFolder withIntermediateDirectories:YES attributes:nil error:nil];
|
||||
|
||||
[self addSkipBackupAttributeToItemAtURL:[NSURL fileURLWithPath:backupsFolder] skip:!cloudBackup];
|
||||
|
||||
return [self createBackupInfoWithTargetDir:cacheFolder backupDir:backupsFolder targetDirNests:NO backupDirNests:NO rename:YES];
|
||||
}
|
||||
|
||||
+ (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL*)URL skip:(BOOL)skip
|
||||
{
|
||||
NSError* error = nil;
|
||||
BOOL success = [URL setResourceValue:[NSNumber numberWithBool:skip] forKey:NSURLIsExcludedFromBackupKey error:&error];
|
||||
|
||||
if (!success) {
|
||||
NSLog(@"Error excluding %@ from backup %@", [URL lastPathComponent], error);
|
||||
}
|
||||
return success;
|
||||
}
|
||||
|
||||
+ (BOOL)copyFrom:(NSString*)src to:(NSString*)dest error:(NSError* __autoreleasing*)error
|
||||
{
|
||||
NSFileManager* fileManager = [NSFileManager defaultManager];
|
||||
|
||||
if (![fileManager fileExistsAtPath:src]) {
|
||||
NSString* errorString = [NSString stringWithFormat:@"%@ file does not exist.", src];
|
||||
if (error != NULL) {
|
||||
(*error) = [NSError errorWithDomain:kCDVLocalStorageErrorDomain
|
||||
code:kCDVLocalStorageFileOperationError
|
||||
userInfo:[NSDictionary dictionaryWithObject:errorString
|
||||
forKey:NSLocalizedDescriptionKey]];
|
||||
}
|
||||
return NO;
|
||||
}
|
||||
|
||||
// generate unique filepath in temp directory
|
||||
CFUUIDRef uuidRef = CFUUIDCreate(kCFAllocatorDefault);
|
||||
CFStringRef uuidString = CFUUIDCreateString(kCFAllocatorDefault, uuidRef);
|
||||
NSString* tempBackup = [[NSTemporaryDirectory() stringByAppendingPathComponent:(__bridge NSString*)uuidString] stringByAppendingPathExtension:@"bak"];
|
||||
CFRelease(uuidString);
|
||||
CFRelease(uuidRef);
|
||||
|
||||
BOOL destExists = [fileManager fileExistsAtPath:dest];
|
||||
|
||||
// backup the dest
|
||||
if (destExists && ![fileManager copyItemAtPath:dest toPath:tempBackup error:error]) {
|
||||
return NO;
|
||||
}
|
||||
|
||||
// remove the dest
|
||||
if (destExists && ![fileManager removeItemAtPath:dest error:error]) {
|
||||
return NO;
|
||||
}
|
||||
|
||||
// create path to dest
|
||||
if (!destExists && ![fileManager createDirectoryAtPath:[dest stringByDeletingLastPathComponent] withIntermediateDirectories:YES attributes:nil error:error]) {
|
||||
return NO;
|
||||
}
|
||||
|
||||
// copy src to dest
|
||||
if ([fileManager copyItemAtPath:src toPath:dest error:error]) {
|
||||
// success - cleanup - delete the backup to the dest
|
||||
if ([fileManager fileExistsAtPath:tempBackup]) {
|
||||
[fileManager removeItemAtPath:tempBackup error:error];
|
||||
}
|
||||
return YES;
|
||||
} else {
|
||||
// failure - we restore the temp backup file to dest
|
||||
[fileManager copyItemAtPath:tempBackup toPath:dest error:error];
|
||||
// cleanup - delete the backup to the dest
|
||||
if ([fileManager fileExistsAtPath:tempBackup]) {
|
||||
[fileManager removeItemAtPath:tempBackup error:error];
|
||||
}
|
||||
return NO;
|
||||
}
|
||||
}
|
||||
|
||||
- (BOOL)shouldBackup
|
||||
{
|
||||
for (CDVBackupInfo* info in self.backupInfo) {
|
||||
if ([info shouldBackup]) {
|
||||
return YES;
|
||||
}
|
||||
}
|
||||
|
||||
return NO;
|
||||
}
|
||||
|
||||
- (BOOL)shouldRestore
|
||||
{
|
||||
for (CDVBackupInfo* info in self.backupInfo) {
|
||||
if ([info shouldRestore]) {
|
||||
return YES;
|
||||
}
|
||||
}
|
||||
|
||||
return NO;
|
||||
}
|
||||
|
||||
/* copy from webkitDbLocation to persistentDbLocation */
|
||||
- (void)backup:(CDVInvokedUrlCommand*)command
|
||||
{
|
||||
NSString* callbackId = command.callbackId;
|
||||
|
||||
NSError* __autoreleasing error = nil;
|
||||
CDVPluginResult* result = nil;
|
||||
NSString* message = nil;
|
||||
|
||||
for (CDVBackupInfo* info in self.backupInfo) {
|
||||
if ([info shouldBackup]) {
|
||||
[[self class] copyFrom:info.original to:info.backup error:&error];
|
||||
|
||||
if (callbackId) {
|
||||
if (error == nil) {
|
||||
message = [NSString stringWithFormat:@"Backed up: %@", info.label];
|
||||
NSLog(@"%@", message);
|
||||
|
||||
result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString:message];
|
||||
[self.commandDelegate sendPluginResult:result callbackId:callbackId];
|
||||
} else {
|
||||
message = [NSString stringWithFormat:@"Error in CDVLocalStorage (%@) backup: %@", info.label, [error localizedDescription]];
|
||||
NSLog(@"%@", message);
|
||||
|
||||
result = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR messageAsString:message];
|
||||
[self.commandDelegate sendPluginResult:result callbackId:callbackId];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* copy from persistentDbLocation to webkitDbLocation */
|
||||
- (void)restore:(CDVInvokedUrlCommand*)command
|
||||
{
|
||||
NSError* __autoreleasing error = nil;
|
||||
CDVPluginResult* result = nil;
|
||||
NSString* message = nil;
|
||||
|
||||
for (CDVBackupInfo* info in self.backupInfo) {
|
||||
if ([info shouldRestore]) {
|
||||
[[self class] copyFrom:info.backup to:info.original error:&error];
|
||||
|
||||
if (error == nil) {
|
||||
message = [NSString stringWithFormat:@"Restored: %@", info.label];
|
||||
NSLog(@"%@", message);
|
||||
|
||||
result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString:message];
|
||||
[self.commandDelegate sendPluginResult:result callbackId:command.callbackId];
|
||||
} else {
|
||||
message = [NSString stringWithFormat:@"Error in CDVLocalStorage (%@) restore: %@", info.label, [error localizedDescription]];
|
||||
NSLog(@"%@", message);
|
||||
|
||||
result = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR messageAsString:message];
|
||||
[self.commandDelegate sendPluginResult:result callbackId:command.callbackId];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+ (void)__fixupDatabaseLocationsWithBackupType:(NSString*)backupType
|
||||
{
|
||||
[self __verifyAndFixDatabaseLocations];
|
||||
[self __restoreLegacyDatabaseLocationsWithBackupType:backupType];
|
||||
}
|
||||
|
||||
+ (void)__verifyAndFixDatabaseLocations
|
||||
{
|
||||
NSBundle* mainBundle = [NSBundle mainBundle];
|
||||
NSString* bundlePath = [[mainBundle bundlePath] stringByDeletingLastPathComponent];
|
||||
NSString* bundleIdentifier = [[mainBundle infoDictionary] objectForKey:@"CFBundleIdentifier"];
|
||||
NSString* appPlistPath = [bundlePath stringByAppendingPathComponent:[NSString stringWithFormat:@"Library/Preferences/%@.plist", bundleIdentifier]];
|
||||
|
||||
NSMutableDictionary* appPlistDict = [NSMutableDictionary dictionaryWithContentsOfFile:appPlistPath];
|
||||
BOOL modified = [[self class] __verifyAndFixDatabaseLocationsWithAppPlistDict:appPlistDict
|
||||
bundlePath:bundlePath
|
||||
fileManager:[NSFileManager defaultManager]];
|
||||
|
||||
if (modified) {
|
||||
BOOL ok = [appPlistDict writeToFile:appPlistPath atomically:YES];
|
||||
[[NSUserDefaults standardUserDefaults] synchronize];
|
||||
NSLog(@"Fix applied for database locations?: %@", ok ? @"YES" : @"NO");
|
||||
}
|
||||
}
|
||||
|
||||
+ (BOOL)__verifyAndFixDatabaseLocationsWithAppPlistDict:(NSMutableDictionary*)appPlistDict
|
||||
bundlePath:(NSString*)bundlePath
|
||||
fileManager:(NSFileManager*)fileManager
|
||||
{
|
||||
NSString* libraryCaches = @"Library/Caches";
|
||||
NSString* libraryWebKit = @"Library/WebKit";
|
||||
|
||||
NSArray* keysToCheck = [NSArray arrayWithObjects:
|
||||
@"WebKitLocalStorageDatabasePathPreferenceKey",
|
||||
@"WebDatabaseDirectory",
|
||||
nil];
|
||||
|
||||
BOOL dirty = NO;
|
||||
|
||||
for (NSString* key in keysToCheck) {
|
||||
NSString* value = [appPlistDict objectForKey:key];
|
||||
// verify key exists, and path is in app bundle, if not - fix
|
||||
if ((value != nil) && ![value hasPrefix:bundlePath]) {
|
||||
// the pathSuffix to use may be wrong - OTA upgrades from < 5.1 to 5.1 do keep the old path Library/WebKit,
|
||||
// while Xcode synced ones do change the storage location to Library/Caches
|
||||
NSString* newBundlePath = [bundlePath stringByAppendingPathComponent:libraryCaches];
|
||||
if (![fileManager fileExistsAtPath:newBundlePath]) {
|
||||
newBundlePath = [bundlePath stringByAppendingPathComponent:libraryWebKit];
|
||||
}
|
||||
[appPlistDict setValue:newBundlePath forKey:key];
|
||||
dirty = YES;
|
||||
}
|
||||
}
|
||||
|
||||
return dirty;
|
||||
}
|
||||
|
||||
+ (void)__restoreLegacyDatabaseLocationsWithBackupType:(NSString*)backupType
|
||||
{
|
||||
// on iOS 6, if you toggle between cloud/local backup, you must move database locations. Default upgrade from iOS5.1 to iOS6 is like a toggle from local to cloud.
|
||||
NSString* appLibraryFolder = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) objectAtIndex:0];
|
||||
NSString* appDocumentsFolder = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
|
||||
|
||||
NSMutableArray* backupInfo = [NSMutableArray arrayWithCapacity:0];
|
||||
|
||||
if ([backupType isEqualToString:@"cloud"]) {
|
||||
#ifdef DEBUG
|
||||
NSLog(@"\n\nStarted backup to iCloud! Please be careful."
|
||||
"\nYour application might be rejected by Apple if you store too much data."
|
||||
"\nFor more information please read \"iOS Data Storage Guidelines\" at:"
|
||||
"\nhttps://developer.apple.com/icloud/documentation/data-storage/"
|
||||
"\nTo disable web storage backup to iCloud, set the BackupWebStorage preference to \"local\" in the Cordova config.xml file\n\n");
|
||||
#endif
|
||||
// We would like to restore old backups/caches databases to the new destination (nested in lib folder)
|
||||
[backupInfo addObjectsFromArray:[self createBackupInfoWithTargetDir:appLibraryFolder backupDir:[appDocumentsFolder stringByAppendingPathComponent:@"Backups"] targetDirNests:YES backupDirNests:NO rename:YES]];
|
||||
[backupInfo addObjectsFromArray:[self createBackupInfoWithTargetDir:appLibraryFolder backupDir:[appLibraryFolder stringByAppendingPathComponent:@"Caches"] targetDirNests:YES backupDirNests:NO rename:NO]];
|
||||
} else {
|
||||
// For ios6 local backups we also want to restore from Backups dir -- but we don't need to do that here, since the plugin will do that itself.
|
||||
[backupInfo addObjectsFromArray:[self createBackupInfoWithTargetDir:[appLibraryFolder stringByAppendingPathComponent:@"Caches"] backupDir:appLibraryFolder targetDirNests:NO backupDirNests:YES rename:NO]];
|
||||
}
|
||||
|
||||
NSFileManager* manager = [NSFileManager defaultManager];
|
||||
|
||||
for (CDVBackupInfo* info in backupInfo) {
|
||||
if ([manager fileExistsAtPath:info.backup]) {
|
||||
if ([info shouldRestore]) {
|
||||
NSLog(@"Restoring old webstorage backup. From: '%@' To: '%@'.", info.backup, info.original);
|
||||
[self copyFrom:info.backup to:info.original error:nil];
|
||||
}
|
||||
NSLog(@"Removing old webstorage backup: '%@'.", info.backup);
|
||||
[manager removeItemAtPath:info.backup error:nil];
|
||||
}
|
||||
}
|
||||
|
||||
[[NSUserDefaults standardUserDefaults] setBool:[backupType isEqualToString:@"cloud"] forKey:@"WebKitStoreWebDataForBackup"];
|
||||
}
|
||||
|
||||
#pragma mark -
|
||||
#pragma mark Notification handlers
|
||||
|
||||
- (void)onResignActive
|
||||
{
|
||||
UIDevice* device = [UIDevice currentDevice];
|
||||
NSNumber* exitsOnSuspend = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"UIApplicationExitsOnSuspend"];
|
||||
|
||||
BOOL isMultitaskingSupported = [device respondsToSelector:@selector(isMultitaskingSupported)] && [device isMultitaskingSupported];
|
||||
|
||||
if (exitsOnSuspend == nil) { // if it's missing, it should be NO (i.e. multi-tasking on by default)
|
||||
exitsOnSuspend = [NSNumber numberWithBool:NO];
|
||||
}
|
||||
|
||||
if (exitsOnSuspend) {
|
||||
[self backup:nil];
|
||||
} else if (isMultitaskingSupported) {
|
||||
__block UIBackgroundTaskIdentifier backgroundTaskID = UIBackgroundTaskInvalid;
|
||||
|
||||
backgroundTaskID = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
|
||||
[[UIApplication sharedApplication] endBackgroundTask:backgroundTaskID];
|
||||
backgroundTaskID = UIBackgroundTaskInvalid;
|
||||
NSLog(@"Background task to backup WebSQL/LocalStorage expired.");
|
||||
}];
|
||||
CDVLocalStorage __weak* weakSelf = self;
|
||||
[self.commandDelegate runInBackground:^{
|
||||
[weakSelf backup:nil];
|
||||
|
||||
[[UIApplication sharedApplication] endBackgroundTask:backgroundTaskID];
|
||||
backgroundTaskID = UIBackgroundTaskInvalid;
|
||||
}];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)onAppTerminate
|
||||
{
|
||||
[self onResignActive];
|
||||
}
|
||||
|
||||
- (void)onReset
|
||||
{
|
||||
[self restore:nil];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
#pragma mark -
|
||||
#pragma mark CDVBackupInfo implementation
|
||||
|
||||
@implementation CDVBackupInfo
|
||||
|
||||
@synthesize original, backup, label;
|
||||
|
||||
- (BOOL)file:(NSString*)aPath isNewerThanFile:(NSString*)bPath
|
||||
{
|
||||
NSFileManager* fileManager = [NSFileManager defaultManager];
|
||||
NSError* __autoreleasing error = nil;
|
||||
|
||||
NSDictionary* aPathAttribs = [fileManager attributesOfItemAtPath:aPath error:&error];
|
||||
NSDictionary* bPathAttribs = [fileManager attributesOfItemAtPath:bPath error:&error];
|
||||
|
||||
NSDate* aPathModDate = [aPathAttribs objectForKey:NSFileModificationDate];
|
||||
NSDate* bPathModDate = [bPathAttribs objectForKey:NSFileModificationDate];
|
||||
|
||||
if ((nil == aPathModDate) && (nil == bPathModDate)) {
|
||||
return NO;
|
||||
}
|
||||
|
||||
return [aPathModDate compare:bPathModDate] == NSOrderedDescending || bPathModDate == nil;
|
||||
}
|
||||
|
||||
- (BOOL)item:(NSString*)aPath isNewerThanItem:(NSString*)bPath
|
||||
{
|
||||
NSFileManager* fileManager = [NSFileManager defaultManager];
|
||||
|
||||
BOOL aPathIsDir = NO, bPathIsDir = NO;
|
||||
BOOL aPathExists = [fileManager fileExistsAtPath:aPath isDirectory:&aPathIsDir];
|
||||
|
||||
[fileManager fileExistsAtPath:bPath isDirectory:&bPathIsDir];
|
||||
|
||||
if (!aPathExists) {
|
||||
return NO;
|
||||
}
|
||||
|
||||
if (!(aPathIsDir && bPathIsDir)) { // just a file
|
||||
return [self file:aPath isNewerThanFile:bPath];
|
||||
}
|
||||
|
||||
// essentially we want rsync here, but have to settle for our poor man's implementation
|
||||
// we get the files in aPath, and see if it is newer than the file in bPath
|
||||
// (it is newer if it doesn't exist in bPath) if we encounter the FIRST file that is newer,
|
||||
// we return YES
|
||||
NSDirectoryEnumerator* directoryEnumerator = [fileManager enumeratorAtPath:aPath];
|
||||
NSString* path;
|
||||
|
||||
while ((path = [directoryEnumerator nextObject])) {
|
||||
NSString* aPathFile = [aPath stringByAppendingPathComponent:path];
|
||||
NSString* bPathFile = [bPath stringByAppendingPathComponent:path];
|
||||
|
||||
BOOL isNewer = [self file:aPathFile isNewerThanFile:bPathFile];
|
||||
if (isNewer) {
|
||||
return YES;
|
||||
}
|
||||
}
|
||||
|
||||
return NO;
|
||||
}
|
||||
|
||||
- (BOOL)shouldBackup
|
||||
{
|
||||
return [self item:self.original isNewerThanItem:self.backup];
|
||||
}
|
||||
|
||||
- (BOOL)shouldRestore
|
||||
{
|
||||
return [self item:self.backup isNewerThanItem:self.original];
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,26 @@
|
||||
/*
|
||||
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.
|
||||
*/
|
||||
|
||||
#import "CDVPlugin.h"
|
||||
|
||||
@interface CDVLogger : CDVPlugin
|
||||
|
||||
- (void)logLevel:(CDVInvokedUrlCommand*)command;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,37 @@
|
||||
/*
|
||||
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.
|
||||
*/
|
||||
|
||||
#import "CDVLogger.h"
|
||||
|
||||
@implementation CDVLogger
|
||||
|
||||
/* log a message */
|
||||
- (void)logLevel:(CDVInvokedUrlCommand*)command
|
||||
{
|
||||
id level = [command argumentAtIndex:0];
|
||||
id message = [command argumentAtIndex:1];
|
||||
|
||||
if ([level isEqualToString:@"LOG"]) {
|
||||
NSLog(@"%@", message);
|
||||
} else {
|
||||
NSLog(@"%@: %@", level, message);
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,41 @@
|
||||
/*
|
||||
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.
|
||||
*/
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
#import "CDVAvailability.h"
|
||||
|
||||
/**
|
||||
* Distinguishes top-level navigations from sub-frame navigations.
|
||||
* shouldStartLoadWithRequest is called for every request, but didStartLoad
|
||||
* and didFinishLoad is called only for top-level navigations.
|
||||
* Relevant bug: CB-2389
|
||||
*/
|
||||
@interface CDVUIWebViewDelegate : NSObject <UIWebViewDelegate>{
|
||||
__weak NSObject <UIWebViewDelegate>* _delegate;
|
||||
NSInteger _loadCount;
|
||||
NSInteger _state;
|
||||
NSInteger _curLoadToken;
|
||||
NSInteger _loadStartPollCount;
|
||||
}
|
||||
|
||||
- (id)initWithDelegate:(NSObject <UIWebViewDelegate>*)delegate;
|
||||
|
||||
- (BOOL)request:(NSURLRequest*)newRequest isEqualToRequestAfterStrippingFragments:(NSURLRequest*)originalRequest;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,399 @@
|
||||
/*
|
||||
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.
|
||||
*/
|
||||
|
||||
//
|
||||
// Testing shows:
|
||||
//
|
||||
// In all cases, webView.request.URL is the previous page's URL (or empty) during the didStartLoad callback.
|
||||
// When loading a page with a redirect:
|
||||
// 1. shouldStartLoading (requestURL is target page)
|
||||
// 2. didStartLoading
|
||||
// 3. shouldStartLoading (requestURL is redirect target)
|
||||
// 4. didFinishLoad (request.URL is redirect target)
|
||||
//
|
||||
// Note the lack of a second didStartLoading **
|
||||
//
|
||||
// When loading a page with iframes:
|
||||
// 1. shouldStartLoading (requestURL is main page)
|
||||
// 2. didStartLoading
|
||||
// 3. shouldStartLoading (requestURL is one of the iframes)
|
||||
// 4. didStartLoading
|
||||
// 5. didFinishLoad
|
||||
// 6. didFinishLoad
|
||||
//
|
||||
// Note there is no way to distinguish which didFinishLoad maps to which didStartLoad **
|
||||
//
|
||||
// Loading a page by calling window.history.go(-1):
|
||||
// 1. didStartLoading
|
||||
// 2. didFinishLoad
|
||||
//
|
||||
// Note the lack of a shouldStartLoading call **
|
||||
// Actually - this is fixed on iOS6. iOS6 has a shouldStart. **
|
||||
//
|
||||
// Loading a page by calling location.reload()
|
||||
// 1. shouldStartLoading
|
||||
// 2. didStartLoading
|
||||
// 3. didFinishLoad
|
||||
//
|
||||
// Loading a page with an iframe that fails to load:
|
||||
// 1. shouldStart (main page)
|
||||
// 2. didStart
|
||||
// 3. shouldStart (iframe)
|
||||
// 4. didStart
|
||||
// 5. didFailWithError
|
||||
// 6. didFinish
|
||||
//
|
||||
// Loading a page with an iframe that fails to load due to an invalid URL:
|
||||
// 1. shouldStart (main page)
|
||||
// 2. didStart
|
||||
// 3. shouldStart (iframe)
|
||||
// 5. didFailWithError
|
||||
// 6. didFinish
|
||||
//
|
||||
// This case breaks our logic since there is a missing didStart. To prevent this,
|
||||
// we check URLs in shouldStart and return NO if they are invalid.
|
||||
//
|
||||
// Loading a page with an invalid URL
|
||||
// 1. shouldStart (main page)
|
||||
// 2. didFailWithError
|
||||
//
|
||||
// TODO: Record order when page is re-navigated before the first navigation finishes.
|
||||
//
|
||||
|
||||
#import "CDVUIWebViewDelegate.h"
|
||||
|
||||
// #define VerboseLog NSLog
|
||||
#define VerboseLog(...) do { \
|
||||
} while (0)
|
||||
|
||||
typedef enum {
|
||||
STATE_IDLE = 0,
|
||||
STATE_WAITING_FOR_LOAD_START = 1,
|
||||
STATE_WAITING_FOR_LOAD_FINISH = 2,
|
||||
STATE_IOS5_POLLING_FOR_LOAD_START = 3,
|
||||
STATE_IOS5_POLLING_FOR_LOAD_FINISH = 4,
|
||||
STATE_CANCELLED = 5
|
||||
} State;
|
||||
|
||||
static NSString *stripFragment(NSString* url)
|
||||
{
|
||||
NSRange r = [url rangeOfString:@"#"];
|
||||
|
||||
if (r.location == NSNotFound) {
|
||||
return url;
|
||||
}
|
||||
return [url substringToIndex:r.location];
|
||||
}
|
||||
|
||||
@implementation CDVUIWebViewDelegate
|
||||
|
||||
- (id)initWithDelegate:(NSObject <UIWebViewDelegate>*)delegate
|
||||
{
|
||||
self = [super init];
|
||||
if (self != nil) {
|
||||
_delegate = delegate;
|
||||
_loadCount = -1;
|
||||
_state = STATE_IDLE;
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (BOOL)request:(NSURLRequest*)newRequest isEqualToRequestAfterStrippingFragments:(NSURLRequest*)originalRequest
|
||||
{
|
||||
if (originalRequest.URL && newRequest.URL) {
|
||||
NSString* originalRequestUrl = [originalRequest.URL absoluteString];
|
||||
NSString* newRequestUrl = [newRequest.URL absoluteString];
|
||||
|
||||
NSString* baseOriginalRequestUrl = stripFragment(originalRequestUrl);
|
||||
NSString* baseNewRequestUrl = stripFragment(newRequestUrl);
|
||||
return [baseOriginalRequestUrl isEqualToString:baseNewRequestUrl];
|
||||
}
|
||||
|
||||
return NO;
|
||||
}
|
||||
|
||||
- (BOOL)isPageLoaded:(UIWebView*)webView
|
||||
{
|
||||
NSString* readyState = [webView stringByEvaluatingJavaScriptFromString:@"document.readyState"];
|
||||
|
||||
return [readyState isEqualToString:@"loaded"] || [readyState isEqualToString:@"complete"];
|
||||
}
|
||||
|
||||
- (BOOL)isJsLoadTokenSet:(UIWebView*)webView
|
||||
{
|
||||
NSString* loadToken = [webView stringByEvaluatingJavaScriptFromString:@"window.__cordovaLoadToken"];
|
||||
|
||||
return [[NSString stringWithFormat:@"%ld", (long)_curLoadToken] isEqualToString:loadToken];
|
||||
}
|
||||
|
||||
- (void)setLoadToken:(UIWebView*)webView
|
||||
{
|
||||
_curLoadToken += 1;
|
||||
[webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"window.__cordovaLoadToken=%ld", (long)_curLoadToken]];
|
||||
}
|
||||
|
||||
- (NSString*)evalForCurrentURL:(UIWebView*)webView
|
||||
{
|
||||
return [webView stringByEvaluatingJavaScriptFromString:@"location.href"];
|
||||
}
|
||||
|
||||
- (void)pollForPageLoadStart:(UIWebView*)webView
|
||||
{
|
||||
if (_state != STATE_IOS5_POLLING_FOR_LOAD_START) {
|
||||
return;
|
||||
}
|
||||
if (![self isJsLoadTokenSet:webView]) {
|
||||
VerboseLog(@"Polled for page load start. result = YES!");
|
||||
_state = STATE_IOS5_POLLING_FOR_LOAD_FINISH;
|
||||
[self setLoadToken:webView];
|
||||
if ([_delegate respondsToSelector:@selector(webViewDidStartLoad:)]) {
|
||||
[_delegate webViewDidStartLoad:webView];
|
||||
}
|
||||
[self pollForPageLoadFinish:webView];
|
||||
} else {
|
||||
VerboseLog(@"Polled for page load start. result = NO");
|
||||
// Poll only for 1 second, and then fall back on checking only when delegate methods are called.
|
||||
++_loadStartPollCount;
|
||||
if (_loadStartPollCount < (1000 * .05)) {
|
||||
[self performSelector:@selector(pollForPageLoadStart:) withObject:webView afterDelay:.05];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
- (void)pollForPageLoadFinish:(UIWebView*)webView
|
||||
{
|
||||
if (_state != STATE_IOS5_POLLING_FOR_LOAD_FINISH) {
|
||||
return;
|
||||
}
|
||||
if ([self isPageLoaded:webView]) {
|
||||
VerboseLog(@"Polled for page load finish. result = YES!");
|
||||
_state = STATE_IDLE;
|
||||
if ([_delegate respondsToSelector:@selector(webViewDidFinishLoad:)]) {
|
||||
[_delegate webViewDidFinishLoad:webView];
|
||||
}
|
||||
} else {
|
||||
VerboseLog(@"Polled for page load finish. result = NO");
|
||||
[self performSelector:@selector(pollForPageLoadFinish:) withObject:webView afterDelay:.05];
|
||||
}
|
||||
}
|
||||
|
||||
- (BOOL)shouldLoadRequest:(NSURLRequest*)request
|
||||
{
|
||||
NSString* scheme = [[request URL] scheme];
|
||||
NSArray* allowedSchemes = [NSArray arrayWithObjects:@"mailto",@"tel",@"blob",@"sms",@"data", nil];
|
||||
if([allowedSchemes containsObject:scheme]) {
|
||||
return YES;
|
||||
}
|
||||
else {
|
||||
return [NSURLConnection canHandleRequest:request];
|
||||
}
|
||||
}
|
||||
|
||||
- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType
|
||||
{
|
||||
BOOL shouldLoad = YES;
|
||||
|
||||
if ([_delegate respondsToSelector:@selector(webView:shouldStartLoadWithRequest:navigationType:)]) {
|
||||
shouldLoad = [_delegate webView:webView shouldStartLoadWithRequest:request navigationType:navigationType];
|
||||
}
|
||||
|
||||
VerboseLog(@"webView shouldLoad=%d (before) state=%d loadCount=%d URL=%@", shouldLoad, _state, _loadCount, request.URL);
|
||||
|
||||
if (shouldLoad) {
|
||||
// When devtools refresh occurs, it blindly uses the same request object. If a history.replaceState() has occured, then
|
||||
// mainDocumentURL != URL even though it's a top-level navigation.
|
||||
BOOL isDevToolsRefresh = (request == webView.request);
|
||||
BOOL isTopLevelNavigation = isDevToolsRefresh || [request.URL isEqual:[request mainDocumentURL]];
|
||||
if (isTopLevelNavigation) {
|
||||
// Ignore hash changes that don't navigate to a different page.
|
||||
// webView.request does actually update when history.replaceState() gets called.
|
||||
if ([self request:request isEqualToRequestAfterStrippingFragments:webView.request]) {
|
||||
NSString* prevURL = [self evalForCurrentURL:webView];
|
||||
if ([prevURL isEqualToString:[request.URL absoluteString]]) {
|
||||
VerboseLog(@"Page reload detected.");
|
||||
} else {
|
||||
VerboseLog(@"Detected hash change shouldLoad");
|
||||
return shouldLoad;
|
||||
}
|
||||
}
|
||||
|
||||
switch (_state) {
|
||||
case STATE_WAITING_FOR_LOAD_FINISH:
|
||||
// Redirect case.
|
||||
// We expect loadCount == 1.
|
||||
if (_loadCount != 1) {
|
||||
NSLog(@"CDVWebViewDelegate: Detected redirect when loadCount=%ld", (long)_loadCount);
|
||||
}
|
||||
break;
|
||||
|
||||
case STATE_IDLE:
|
||||
case STATE_IOS5_POLLING_FOR_LOAD_START:
|
||||
case STATE_CANCELLED:
|
||||
// Page navigation start.
|
||||
_loadCount = 0;
|
||||
_state = STATE_WAITING_FOR_LOAD_START;
|
||||
break;
|
||||
|
||||
default:
|
||||
{
|
||||
NSString* description = [NSString stringWithFormat:@"CDVWebViewDelegate: Navigation started when state=%ld", (long)_state];
|
||||
NSLog(@"%@", description);
|
||||
_loadCount = 0;
|
||||
_state = STATE_WAITING_FOR_LOAD_START;
|
||||
|
||||
NSDictionary* errorDictionary = @{NSLocalizedDescriptionKey : description};
|
||||
NSError* error = [[NSError alloc] initWithDomain:@"CDVUIWebViewDelegate" code:1 userInfo:errorDictionary];
|
||||
[self webView:webView didFailLoadWithError:error];
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// Deny invalid URLs so that we don't get the case where we go straight from
|
||||
// webViewShouldLoad -> webViewDidFailLoad (messes up _loadCount).
|
||||
shouldLoad = shouldLoad && [self shouldLoadRequest:request];
|
||||
}
|
||||
VerboseLog(@"webView shouldLoad=%d (after) isTopLevelNavigation=%d state=%d loadCount=%d", shouldLoad, isTopLevelNavigation, _state, _loadCount);
|
||||
}
|
||||
return shouldLoad;
|
||||
}
|
||||
|
||||
- (void)webViewDidStartLoad:(UIWebView*)webView
|
||||
{
|
||||
VerboseLog(@"webView didStartLoad (before). state=%d loadCount=%d", _state, _loadCount);
|
||||
BOOL fireCallback = NO;
|
||||
switch (_state) {
|
||||
case STATE_IDLE:
|
||||
break;
|
||||
|
||||
case STATE_CANCELLED:
|
||||
fireCallback = YES;
|
||||
_state = STATE_WAITING_FOR_LOAD_FINISH;
|
||||
_loadCount += 1;
|
||||
break;
|
||||
|
||||
case STATE_WAITING_FOR_LOAD_START:
|
||||
if (_loadCount != 0) {
|
||||
NSLog(@"CDVWebViewDelegate: Unexpected loadCount in didStart. count=%ld", (long)_loadCount);
|
||||
}
|
||||
fireCallback = YES;
|
||||
_state = STATE_WAITING_FOR_LOAD_FINISH;
|
||||
_loadCount = 1;
|
||||
break;
|
||||
|
||||
case STATE_WAITING_FOR_LOAD_FINISH:
|
||||
_loadCount += 1;
|
||||
break;
|
||||
|
||||
case STATE_IOS5_POLLING_FOR_LOAD_START:
|
||||
[self pollForPageLoadStart:webView];
|
||||
break;
|
||||
|
||||
case STATE_IOS5_POLLING_FOR_LOAD_FINISH:
|
||||
[self pollForPageLoadFinish:webView];
|
||||
break;
|
||||
|
||||
default:
|
||||
NSLog(@"CDVWebViewDelegate: Unexpected didStart with state=%ld loadCount=%ld", (long)_state, (long)_loadCount);
|
||||
}
|
||||
VerboseLog(@"webView didStartLoad (after). state=%d loadCount=%d fireCallback=%d", _state, _loadCount, fireCallback);
|
||||
if (fireCallback && [_delegate respondsToSelector:@selector(webViewDidStartLoad:)]) {
|
||||
[_delegate webViewDidStartLoad:webView];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)webViewDidFinishLoad:(UIWebView*)webView
|
||||
{
|
||||
VerboseLog(@"webView didFinishLoad (before). state=%d loadCount=%d", _state, _loadCount);
|
||||
BOOL fireCallback = NO;
|
||||
switch (_state) {
|
||||
case STATE_IDLE:
|
||||
break;
|
||||
|
||||
case STATE_WAITING_FOR_LOAD_START:
|
||||
NSLog(@"CDVWebViewDelegate: Unexpected didFinish while waiting for load start.");
|
||||
break;
|
||||
|
||||
case STATE_WAITING_FOR_LOAD_FINISH:
|
||||
if (_loadCount == 1) {
|
||||
fireCallback = YES;
|
||||
_state = STATE_IDLE;
|
||||
}
|
||||
_loadCount -= 1;
|
||||
break;
|
||||
|
||||
case STATE_IOS5_POLLING_FOR_LOAD_START:
|
||||
[self pollForPageLoadStart:webView];
|
||||
break;
|
||||
|
||||
case STATE_IOS5_POLLING_FOR_LOAD_FINISH:
|
||||
[self pollForPageLoadFinish:webView];
|
||||
break;
|
||||
}
|
||||
VerboseLog(@"webView didFinishLoad (after). state=%d loadCount=%d fireCallback=%d", _state, _loadCount, fireCallback);
|
||||
if (fireCallback && [_delegate respondsToSelector:@selector(webViewDidFinishLoad:)]) {
|
||||
[_delegate webViewDidFinishLoad:webView];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)webView:(UIWebView*)webView didFailLoadWithError:(NSError*)error
|
||||
{
|
||||
VerboseLog(@"webView didFailLoad (before). state=%d loadCount=%d", _state, _loadCount);
|
||||
BOOL fireCallback = NO;
|
||||
|
||||
switch (_state) {
|
||||
case STATE_IDLE:
|
||||
break;
|
||||
|
||||
case STATE_WAITING_FOR_LOAD_START:
|
||||
if ([error code] == NSURLErrorCancelled) {
|
||||
_state = STATE_CANCELLED;
|
||||
} else {
|
||||
_state = STATE_IDLE;
|
||||
}
|
||||
fireCallback = YES;
|
||||
break;
|
||||
|
||||
case STATE_WAITING_FOR_LOAD_FINISH:
|
||||
if ([error code] != NSURLErrorCancelled) {
|
||||
if (_loadCount == 1) {
|
||||
_state = STATE_IDLE;
|
||||
fireCallback = YES;
|
||||
}
|
||||
_loadCount = -1;
|
||||
} else {
|
||||
fireCallback = YES;
|
||||
_state = STATE_CANCELLED;
|
||||
_loadCount -= 1;
|
||||
}
|
||||
break;
|
||||
|
||||
case STATE_IOS5_POLLING_FOR_LOAD_START:
|
||||
[self pollForPageLoadStart:webView];
|
||||
break;
|
||||
|
||||
case STATE_IOS5_POLLING_FOR_LOAD_FINISH:
|
||||
[self pollForPageLoadFinish:webView];
|
||||
break;
|
||||
}
|
||||
VerboseLog(@"webView didFailLoad (after). state=%d loadCount=%d, fireCallback=%d", _state, _loadCount, fireCallback);
|
||||
if (fireCallback && [_delegate respondsToSelector:@selector(webView:didFailLoadWithError:)]) {
|
||||
[_delegate webView:webView didFailLoadWithError:error];
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,27 @@
|
||||
/*
|
||||
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.
|
||||
*/
|
||||
|
||||
#import "CDVPlugin.h"
|
||||
#import "CDVWebViewEngineProtocol.h"
|
||||
|
||||
@interface CDVUIWebViewEngine : CDVPlugin <CDVWebViewEngineProtocol>
|
||||
|
||||
@property (nonatomic, strong, readonly) id <UIWebViewDelegate> uiWebViewDelegate;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,202 @@
|
||||
/*
|
||||
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.
|
||||
*/
|
||||
|
||||
#import "CDVUIWebViewEngine.h"
|
||||
#import "CDVUIWebViewDelegate.h"
|
||||
#import "CDVUIWebViewNavigationDelegate.h"
|
||||
#import "NSDictionary+CordovaPreferences.h"
|
||||
|
||||
#import <objc/message.h>
|
||||
|
||||
@interface CDVUIWebViewEngine ()
|
||||
|
||||
@property (nonatomic, strong, readwrite) UIView* engineWebView;
|
||||
@property (nonatomic, strong, readwrite) id <UIWebViewDelegate> uiWebViewDelegate;
|
||||
@property (nonatomic, strong, readwrite) CDVUIWebViewNavigationDelegate* navWebViewDelegate;
|
||||
|
||||
@end
|
||||
|
||||
@implementation CDVUIWebViewEngine
|
||||
|
||||
@synthesize engineWebView = _engineWebView;
|
||||
|
||||
- (instancetype)initWithFrame:(CGRect)frame
|
||||
{
|
||||
self = [super init];
|
||||
if (self) {
|
||||
self.engineWebView = [[UIWebView alloc] initWithFrame:frame];
|
||||
NSLog(@"Using UIWebView");
|
||||
}
|
||||
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)pluginInitialize
|
||||
{
|
||||
// viewController would be available now. we attempt to set all possible delegates to it, by default
|
||||
|
||||
UIWebView* uiWebView = (UIWebView*)_engineWebView;
|
||||
|
||||
if ([self.viewController conformsToProtocol:@protocol(UIWebViewDelegate)]) {
|
||||
self.uiWebViewDelegate = [[CDVUIWebViewDelegate alloc] initWithDelegate:(id <UIWebViewDelegate>)self.viewController];
|
||||
uiWebView.delegate = self.uiWebViewDelegate;
|
||||
} else {
|
||||
self.navWebViewDelegate = [[CDVUIWebViewNavigationDelegate alloc] initWithEnginePlugin:self];
|
||||
self.uiWebViewDelegate = [[CDVUIWebViewDelegate alloc] initWithDelegate:self.navWebViewDelegate];
|
||||
uiWebView.delegate = self.uiWebViewDelegate;
|
||||
}
|
||||
|
||||
[self updateSettings:self.commandDelegate.settings];
|
||||
}
|
||||
|
||||
- (void)evaluateJavaScript:(NSString*)javaScriptString completionHandler:(void (^)(id, NSError*))completionHandler
|
||||
{
|
||||
NSString* ret = [(UIWebView*)_engineWebView stringByEvaluatingJavaScriptFromString:javaScriptString];
|
||||
|
||||
if (completionHandler) {
|
||||
completionHandler(ret, nil);
|
||||
}
|
||||
}
|
||||
|
||||
- (id)loadRequest:(NSURLRequest*)request
|
||||
{
|
||||
[(UIWebView*)_engineWebView loadRequest:request];
|
||||
return nil;
|
||||
}
|
||||
|
||||
- (id)loadHTMLString:(NSString*)string baseURL:(NSURL*)baseURL
|
||||
{
|
||||
[(UIWebView*)_engineWebView loadHTMLString:string baseURL:baseURL];
|
||||
return nil;
|
||||
}
|
||||
|
||||
- (NSURL*)URL
|
||||
{
|
||||
return [[(UIWebView*)_engineWebView request] URL];
|
||||
}
|
||||
|
||||
- (BOOL) canLoadRequest:(NSURLRequest*)request
|
||||
{
|
||||
return (request != nil);
|
||||
}
|
||||
|
||||
- (void)updateSettings:(NSDictionary*)settings
|
||||
{
|
||||
UIWebView* uiWebView = (UIWebView*)_engineWebView;
|
||||
|
||||
uiWebView.scalesPageToFit = [settings cordovaBoolSettingForKey:@"EnableViewportScale" defaultValue:NO];
|
||||
uiWebView.allowsInlineMediaPlayback = [settings cordovaBoolSettingForKey:@"AllowInlineMediaPlayback" defaultValue:NO];
|
||||
uiWebView.mediaPlaybackRequiresUserAction = [settings cordovaBoolSettingForKey:@"MediaPlaybackRequiresUserAction" defaultValue:YES];
|
||||
uiWebView.mediaPlaybackAllowsAirPlay = [settings cordovaBoolSettingForKey:@"MediaPlaybackAllowsAirPlay" defaultValue:YES];
|
||||
uiWebView.keyboardDisplayRequiresUserAction = [settings cordovaBoolSettingForKey:@"KeyboardDisplayRequiresUserAction" defaultValue:YES];
|
||||
uiWebView.suppressesIncrementalRendering = [settings cordovaBoolSettingForKey:@"SuppressesIncrementalRendering" defaultValue:NO];
|
||||
uiWebView.gapBetweenPages = [settings cordovaFloatSettingForKey:@"GapBetweenPages" defaultValue:0.0];
|
||||
uiWebView.pageLength = [settings cordovaFloatSettingForKey:@"PageLength" defaultValue:0.0];
|
||||
|
||||
id prefObj = nil;
|
||||
|
||||
// By default, DisallowOverscroll is false (thus bounce is allowed)
|
||||
BOOL bounceAllowed = !([settings cordovaBoolSettingForKey:@"DisallowOverscroll" defaultValue:NO]);
|
||||
|
||||
// prevent webView from bouncing
|
||||
if (!bounceAllowed) {
|
||||
if ([uiWebView respondsToSelector:@selector(scrollView)]) {
|
||||
((UIScrollView*)[uiWebView scrollView]).bounces = NO;
|
||||
} else {
|
||||
for (id subview in self.webView.subviews) {
|
||||
if ([[subview class] isSubclassOfClass:[UIScrollView class]]) {
|
||||
((UIScrollView*)subview).bounces = NO;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
NSString* decelerationSetting = [settings cordovaSettingForKey:@"UIWebViewDecelerationSpeed"];
|
||||
if (![@"fast" isEqualToString:decelerationSetting]) {
|
||||
[uiWebView.scrollView setDecelerationRate:UIScrollViewDecelerationRateNormal];
|
||||
}
|
||||
|
||||
NSInteger paginationBreakingMode = 0; // default - UIWebPaginationBreakingModePage
|
||||
prefObj = [settings cordovaSettingForKey:@"PaginationBreakingMode"];
|
||||
if (prefObj != nil) {
|
||||
NSArray* validValues = @[@"page", @"column"];
|
||||
NSString* prefValue = [validValues objectAtIndex:0];
|
||||
|
||||
if ([prefObj isKindOfClass:[NSString class]]) {
|
||||
prefValue = prefObj;
|
||||
}
|
||||
|
||||
paginationBreakingMode = [validValues indexOfObject:[prefValue lowercaseString]];
|
||||
if (paginationBreakingMode == NSNotFound) {
|
||||
paginationBreakingMode = 0;
|
||||
}
|
||||
}
|
||||
uiWebView.paginationBreakingMode = paginationBreakingMode;
|
||||
|
||||
NSInteger paginationMode = 0; // default - UIWebPaginationModeUnpaginated
|
||||
prefObj = [settings cordovaSettingForKey:@"PaginationMode"];
|
||||
if (prefObj != nil) {
|
||||
NSArray* validValues = @[@"unpaginated", @"lefttoright", @"toptobottom", @"bottomtotop", @"righttoleft"];
|
||||
NSString* prefValue = [validValues objectAtIndex:0];
|
||||
|
||||
if ([prefObj isKindOfClass:[NSString class]]) {
|
||||
prefValue = prefObj;
|
||||
}
|
||||
|
||||
paginationMode = [validValues indexOfObject:[prefValue lowercaseString]];
|
||||
if (paginationMode == NSNotFound) {
|
||||
paginationMode = 0;
|
||||
}
|
||||
}
|
||||
uiWebView.paginationMode = paginationMode;
|
||||
}
|
||||
|
||||
- (void)updateWithInfo:(NSDictionary*)info
|
||||
{
|
||||
UIWebView* uiWebView = (UIWebView*)_engineWebView;
|
||||
|
||||
id <UIWebViewDelegate> uiWebViewDelegate = [info objectForKey:kCDVWebViewEngineUIWebViewDelegate];
|
||||
NSDictionary* settings = [info objectForKey:kCDVWebViewEngineWebViewPreferences];
|
||||
|
||||
if (uiWebViewDelegate &&
|
||||
[uiWebViewDelegate conformsToProtocol:@protocol(UIWebViewDelegate)]) {
|
||||
self.uiWebViewDelegate = [[CDVUIWebViewDelegate alloc] initWithDelegate:(id <UIWebViewDelegate>)self.viewController];
|
||||
uiWebView.delegate = self.uiWebViewDelegate;
|
||||
}
|
||||
|
||||
if (settings && [settings isKindOfClass:[NSDictionary class]]) {
|
||||
[self updateSettings:settings];
|
||||
}
|
||||
}
|
||||
|
||||
// This forwards the methods that are in the header that are not implemented here.
|
||||
// Both WKWebView and UIWebView implement the below:
|
||||
// loadHTMLString:baseURL:
|
||||
// loadRequest:
|
||||
- (id)forwardingTargetForSelector:(SEL)aSelector
|
||||
{
|
||||
return _engineWebView;
|
||||
}
|
||||
|
||||
- (UIView*)webView
|
||||
{
|
||||
return self.engineWebView;
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,29 @@
|
||||
/*
|
||||
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.
|
||||
*/
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
#import "CDVUIWebViewEngine.h"
|
||||
|
||||
@interface CDVUIWebViewNavigationDelegate : NSObject <UIWebViewDelegate>
|
||||
|
||||
@property (nonatomic, weak) CDVPlugin* enginePlugin;
|
||||
|
||||
- (instancetype)initWithEnginePlugin:(CDVPlugin*)enginePlugin;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,153 @@
|
||||
/*
|
||||
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.
|
||||
*/
|
||||
|
||||
#import "CDVUIWebViewNavigationDelegate.h"
|
||||
#import <Cordova/CDVViewController.h>
|
||||
#import <Cordova/CDVCommandDelegateImpl.h>
|
||||
#import <Cordova/CDVUserAgentUtil.h>
|
||||
#import <objc/message.h>
|
||||
|
||||
@implementation CDVUIWebViewNavigationDelegate
|
||||
|
||||
- (instancetype)initWithEnginePlugin:(CDVPlugin*)theEnginePlugin
|
||||
{
|
||||
self = [super init];
|
||||
if (self) {
|
||||
self.enginePlugin = theEnginePlugin;
|
||||
}
|
||||
|
||||
return self;
|
||||
}
|
||||
|
||||
/**
|
||||
When web application loads Add stuff to the DOM, mainly the user-defined settings from the Settings.plist file, and
|
||||
the device's data such as device ID, platform version, etc.
|
||||
*/
|
||||
- (void)webViewDidStartLoad:(UIWebView*)theWebView
|
||||
{
|
||||
NSLog(@"Resetting plugins due to page load.");
|
||||
CDVViewController* vc = (CDVViewController*)self.enginePlugin.viewController;
|
||||
|
||||
[vc.commandQueue resetRequestId];
|
||||
[[NSNotificationCenter defaultCenter] postNotification:[NSNotification notificationWithName:CDVPluginResetNotification object:self.enginePlugin.webView]];
|
||||
}
|
||||
|
||||
/**
|
||||
Called when the webview finishes loading. This stops the activity view.
|
||||
*/
|
||||
- (void)webViewDidFinishLoad:(UIWebView*)theWebView
|
||||
{
|
||||
NSLog(@"Finished load of: %@", theWebView.request.URL);
|
||||
CDVViewController* vc = (CDVViewController*)self.enginePlugin.viewController;
|
||||
|
||||
// It's safe to release the lock even if this is just a sub-frame that's finished loading.
|
||||
[CDVUserAgentUtil releaseLock:vc.userAgentLockToken];
|
||||
|
||||
/*
|
||||
* Hide the Top Activity THROBBER in the Battery Bar
|
||||
*/
|
||||
[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO];
|
||||
|
||||
[[NSNotificationCenter defaultCenter] postNotification:[NSNotification notificationWithName:CDVPageDidLoadNotification object:self.enginePlugin.webView]];
|
||||
}
|
||||
|
||||
- (void)webView:(UIWebView*)theWebView didFailLoadWithError:(NSError*)error
|
||||
{
|
||||
CDVViewController* vc = (CDVViewController*)self.enginePlugin.viewController;
|
||||
|
||||
[CDVUserAgentUtil releaseLock:vc.userAgentLockToken];
|
||||
|
||||
NSString* message = [NSString stringWithFormat:@"Failed to load webpage with error: %@", [error localizedDescription]];
|
||||
NSLog(@"%@", message);
|
||||
|
||||
NSURL* errorUrl = vc.errorURL;
|
||||
if (errorUrl) {
|
||||
errorUrl = [NSURL URLWithString:[NSString stringWithFormat:@"?error=%@", [message stringByAddingPercentEncodingWithAllowedCharacters:NSCharacterSet.URLPathAllowedCharacterSet]] relativeToURL:errorUrl];
|
||||
NSLog(@"%@", [errorUrl absoluteString]);
|
||||
if(error.code != NSURLErrorCancelled) {
|
||||
[theWebView loadRequest:[NSURLRequest requestWithURL:errorUrl]];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
- (BOOL)defaultResourcePolicyForURL:(NSURL*)url
|
||||
{
|
||||
/*
|
||||
* If a URL is being loaded that's a file url, just load it internally
|
||||
*/
|
||||
if ([url isFileURL]) {
|
||||
return YES;
|
||||
}
|
||||
|
||||
return NO;
|
||||
}
|
||||
|
||||
- (BOOL)webView:(UIWebView*)theWebView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType
|
||||
{
|
||||
NSURL* url = [request URL];
|
||||
CDVViewController* vc = (CDVViewController*)self.enginePlugin.viewController;
|
||||
|
||||
/*
|
||||
* Execute any commands queued with cordova.exec() on the JS side.
|
||||
* The part of the URL after gap:// is irrelevant.
|
||||
*/
|
||||
if ([[url scheme] isEqualToString:@"gap"]) {
|
||||
[vc.commandQueue fetchCommandsFromJs];
|
||||
// The delegate is called asynchronously in this case, so we don't have to use
|
||||
// flushCommandQueueWithDelayedJs (setTimeout(0)) as we do with hash changes.
|
||||
[vc.commandQueue executePending];
|
||||
return NO;
|
||||
}
|
||||
|
||||
/*
|
||||
* Give plugins the chance to handle the url
|
||||
*/
|
||||
BOOL anyPluginsResponded = NO;
|
||||
BOOL shouldAllowRequest = NO;
|
||||
|
||||
for (NSString* pluginName in vc.pluginObjects) {
|
||||
CDVPlugin* plugin = [vc.pluginObjects objectForKey:pluginName];
|
||||
SEL selector = NSSelectorFromString(@"shouldOverrideLoadWithRequest:navigationType:");
|
||||
if ([plugin respondsToSelector:selector]) {
|
||||
anyPluginsResponded = YES;
|
||||
shouldAllowRequest = (((BOOL (*)(id, SEL, id, int))objc_msgSend)(plugin, selector, request, navigationType));
|
||||
if (!shouldAllowRequest) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (anyPluginsResponded) {
|
||||
return shouldAllowRequest;
|
||||
}
|
||||
|
||||
/*
|
||||
* Handle all other types of urls (tel:, sms:), and requests to load a url in the main webview.
|
||||
*/
|
||||
BOOL shouldAllowNavigation = [self defaultResourcePolicyForURL:url];
|
||||
if (shouldAllowNavigation) {
|
||||
return YES;
|
||||
} else {
|
||||
[[NSNotificationCenter defaultCenter] postNotification:[NSNotification notificationWithName:CDVPluginHandleOpenURLNotification object:url]];
|
||||
}
|
||||
|
||||
return NO;
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,787 @@
|
||||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 46;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
28BFF9141F355A4E00DDF01A /* CDVLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 28BFF9121F355A4E00DDF01A /* CDVLogger.h */; };
|
||||
28BFF9151F355A4E00DDF01A /* CDVLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 28BFF9131F355A4E00DDF01A /* CDVLogger.m */; };
|
||||
30193A501AE6350A0069A75F /* CDVUIWebViewNavigationDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 30193A4E1AE6350A0069A75F /* CDVUIWebViewNavigationDelegate.m */; };
|
||||
30193A511AE6350A0069A75F /* CDVUIWebViewNavigationDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 30193A4F1AE6350A0069A75F /* CDVUIWebViewNavigationDelegate.h */; };
|
||||
3093E2231B16D6A3003F381A /* CDVIntentAndNavigationFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 3093E2211B16D6A3003F381A /* CDVIntentAndNavigationFilter.h */; };
|
||||
3093E2241B16D6A3003F381A /* CDVIntentAndNavigationFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 3093E2221B16D6A3003F381A /* CDVIntentAndNavigationFilter.m */; };
|
||||
7E7F69B61ABA35D8007546F4 /* CDVLocalStorage.h in Headers */ = {isa = PBXBuildFile; fileRef = 7ED95CFB1AB9028C008C4574 /* CDVLocalStorage.h */; };
|
||||
7E7F69B81ABA368F007546F4 /* CDVUIWebViewEngine.h in Headers */ = {isa = PBXBuildFile; fileRef = 7ED95D001AB9028C008C4574 /* CDVUIWebViewEngine.h */; };
|
||||
7E7F69B91ABA3692007546F4 /* CDVHandleOpenURL.h in Headers */ = {isa = PBXBuildFile; fileRef = 7ED95CF81AB9028C008C4574 /* CDVHandleOpenURL.h */; };
|
||||
7ED95D021AB9028C008C4574 /* CDVDebug.h in Headers */ = {isa = PBXBuildFile; fileRef = 7ED95CF21AB9028C008C4574 /* CDVDebug.h */; };
|
||||
7ED95D031AB9028C008C4574 /* CDVJSON_private.h in Headers */ = {isa = PBXBuildFile; fileRef = 7ED95CF31AB9028C008C4574 /* CDVJSON_private.h */; };
|
||||
7ED95D041AB9028C008C4574 /* CDVJSON_private.m in Sources */ = {isa = PBXBuildFile; fileRef = 7ED95CF41AB9028C008C4574 /* CDVJSON_private.m */; };
|
||||
7ED95D051AB9028C008C4574 /* CDVPlugin+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 7ED95CF51AB9028C008C4574 /* CDVPlugin+Private.h */; };
|
||||
7ED95D071AB9028C008C4574 /* CDVHandleOpenURL.m in Sources */ = {isa = PBXBuildFile; fileRef = 7ED95CF91AB9028C008C4574 /* CDVHandleOpenURL.m */; };
|
||||
7ED95D091AB9028C008C4574 /* CDVLocalStorage.m in Sources */ = {isa = PBXBuildFile; fileRef = 7ED95CFC1AB9028C008C4574 /* CDVLocalStorage.m */; };
|
||||
7ED95D0A1AB9028C008C4574 /* CDVUIWebViewDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 7ED95CFE1AB9028C008C4574 /* CDVUIWebViewDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
7ED95D0B1AB9028C008C4574 /* CDVUIWebViewDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 7ED95CFF1AB9028C008C4574 /* CDVUIWebViewDelegate.m */; };
|
||||
7ED95D0D1AB9028C008C4574 /* CDVUIWebViewEngine.m in Sources */ = {isa = PBXBuildFile; fileRef = 7ED95D011AB9028C008C4574 /* CDVUIWebViewEngine.m */; };
|
||||
7ED95D351AB9029B008C4574 /* CDV.h in Headers */ = {isa = PBXBuildFile; fileRef = 7ED95D0F1AB9029B008C4574 /* CDV.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
7ED95D361AB9029B008C4574 /* CDVAppDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 7ED95D101AB9029B008C4574 /* CDVAppDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
7ED95D371AB9029B008C4574 /* CDVAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 7ED95D111AB9029B008C4574 /* CDVAppDelegate.m */; };
|
||||
7ED95D381AB9029B008C4574 /* CDVAvailability.h in Headers */ = {isa = PBXBuildFile; fileRef = 7ED95D121AB9029B008C4574 /* CDVAvailability.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
7ED95D391AB9029B008C4574 /* CDVAvailabilityDeprecated.h in Headers */ = {isa = PBXBuildFile; fileRef = 7ED95D131AB9029B008C4574 /* CDVAvailabilityDeprecated.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
7ED95D3A1AB9029B008C4574 /* CDVCommandDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 7ED95D141AB9029B008C4574 /* CDVCommandDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
7ED95D3B1AB9029B008C4574 /* CDVCommandDelegateImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = 7ED95D151AB9029B008C4574 /* CDVCommandDelegateImpl.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
7ED95D3C1AB9029B008C4574 /* CDVCommandDelegateImpl.m in Sources */ = {isa = PBXBuildFile; fileRef = 7ED95D161AB9029B008C4574 /* CDVCommandDelegateImpl.m */; };
|
||||
7ED95D3D1AB9029B008C4574 /* CDVCommandQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = 7ED95D171AB9029B008C4574 /* CDVCommandQueue.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
7ED95D3E1AB9029B008C4574 /* CDVCommandQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 7ED95D181AB9029B008C4574 /* CDVCommandQueue.m */; };
|
||||
7ED95D3F1AB9029B008C4574 /* CDVConfigParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 7ED95D191AB9029B008C4574 /* CDVConfigParser.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
7ED95D401AB9029B008C4574 /* CDVConfigParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 7ED95D1A1AB9029B008C4574 /* CDVConfigParser.m */; };
|
||||
7ED95D411AB9029B008C4574 /* CDVInvokedUrlCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 7ED95D1B1AB9029B008C4574 /* CDVInvokedUrlCommand.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
7ED95D421AB9029B008C4574 /* CDVInvokedUrlCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 7ED95D1C1AB9029B008C4574 /* CDVInvokedUrlCommand.m */; };
|
||||
7ED95D431AB9029B008C4574 /* CDVPlugin+Resources.h in Headers */ = {isa = PBXBuildFile; fileRef = 7ED95D1D1AB9029B008C4574 /* CDVPlugin+Resources.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
7ED95D441AB9029B008C4574 /* CDVPlugin+Resources.m in Sources */ = {isa = PBXBuildFile; fileRef = 7ED95D1E1AB9029B008C4574 /* CDVPlugin+Resources.m */; };
|
||||
7ED95D451AB9029B008C4574 /* CDVPlugin.h in Headers */ = {isa = PBXBuildFile; fileRef = 7ED95D1F1AB9029B008C4574 /* CDVPlugin.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
7ED95D461AB9029B008C4574 /* CDVPlugin.m in Sources */ = {isa = PBXBuildFile; fileRef = 7ED95D201AB9029B008C4574 /* CDVPlugin.m */; };
|
||||
7ED95D471AB9029B008C4574 /* CDVPluginResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 7ED95D211AB9029B008C4574 /* CDVPluginResult.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
7ED95D481AB9029B008C4574 /* CDVPluginResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 7ED95D221AB9029B008C4574 /* CDVPluginResult.m */; };
|
||||
7ED95D491AB9029B008C4574 /* CDVScreenOrientationDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 7ED95D231AB9029B008C4574 /* CDVScreenOrientationDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
7ED95D4A1AB9029B008C4574 /* CDVTimer.h in Headers */ = {isa = PBXBuildFile; fileRef = 7ED95D241AB9029B008C4574 /* CDVTimer.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
7ED95D4B1AB9029B008C4574 /* CDVTimer.m in Sources */ = {isa = PBXBuildFile; fileRef = 7ED95D251AB9029B008C4574 /* CDVTimer.m */; };
|
||||
7ED95D4C1AB9029B008C4574 /* CDVURLProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 7ED95D261AB9029B008C4574 /* CDVURLProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
7ED95D4D1AB9029B008C4574 /* CDVURLProtocol.m in Sources */ = {isa = PBXBuildFile; fileRef = 7ED95D271AB9029B008C4574 /* CDVURLProtocol.m */; };
|
||||
7ED95D4E1AB9029B008C4574 /* CDVUserAgentUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 7ED95D281AB9029B008C4574 /* CDVUserAgentUtil.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
7ED95D4F1AB9029B008C4574 /* CDVUserAgentUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 7ED95D291AB9029B008C4574 /* CDVUserAgentUtil.m */; };
|
||||
7ED95D501AB9029B008C4574 /* CDVViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 7ED95D2A1AB9029B008C4574 /* CDVViewController.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
7ED95D511AB9029B008C4574 /* CDVViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 7ED95D2B1AB9029B008C4574 /* CDVViewController.m */; };
|
||||
7ED95D521AB9029B008C4574 /* CDVWebViewEngineProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 7ED95D2C1AB9029B008C4574 /* CDVWebViewEngineProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
7ED95D531AB9029B008C4574 /* CDVWhitelist.h in Headers */ = {isa = PBXBuildFile; fileRef = 7ED95D2D1AB9029B008C4574 /* CDVWhitelist.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
7ED95D541AB9029B008C4574 /* CDVWhitelist.m in Sources */ = {isa = PBXBuildFile; fileRef = 7ED95D2E1AB9029B008C4574 /* CDVWhitelist.m */; };
|
||||
7ED95D571AB9029B008C4574 /* NSDictionary+CordovaPreferences.h in Headers */ = {isa = PBXBuildFile; fileRef = 7ED95D311AB9029B008C4574 /* NSDictionary+CordovaPreferences.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
7ED95D581AB9029B008C4574 /* NSDictionary+CordovaPreferences.m in Sources */ = {isa = PBXBuildFile; fileRef = 7ED95D321AB9029B008C4574 /* NSDictionary+CordovaPreferences.m */; };
|
||||
7ED95D591AB9029B008C4574 /* NSMutableArray+QueueAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 7ED95D331AB9029B008C4574 /* NSMutableArray+QueueAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
7ED95D5A1AB9029B008C4574 /* NSMutableArray+QueueAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 7ED95D341AB9029B008C4574 /* NSMutableArray+QueueAdditions.m */; };
|
||||
A3B082D41BB15CEA00D8DC35 /* CDVGestureHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = A3B082D21BB15CEA00D8DC35 /* CDVGestureHandler.h */; };
|
||||
A3B082D51BB15CEA00D8DC35 /* CDVGestureHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = A3B082D31BB15CEA00D8DC35 /* CDVGestureHandler.m */; };
|
||||
C0C01EB61E3911D50056E6CB /* Cordova.h in Headers */ = {isa = PBXBuildFile; fileRef = C0C01EB41E3911D50056E6CB /* Cordova.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
C0C01EBA1E39120F0056E6CB /* libCordova.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 68A32D7114102E1C006B237C /* libCordova.a */; };
|
||||
C0C01EBB1E39131A0056E6CB /* CDV.h in Headers */ = {isa = PBXBuildFile; fileRef = 7ED95D0F1AB9029B008C4574 /* CDV.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
C0C01EBC1E39131A0056E6CB /* CDVAppDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 7ED95D101AB9029B008C4574 /* CDVAppDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
C0C01EBD1E39131A0056E6CB /* CDVAvailability.h in Headers */ = {isa = PBXBuildFile; fileRef = 7ED95D121AB9029B008C4574 /* CDVAvailability.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
C0C01EBE1E39131A0056E6CB /* CDVAvailabilityDeprecated.h in Headers */ = {isa = PBXBuildFile; fileRef = 7ED95D131AB9029B008C4574 /* CDVAvailabilityDeprecated.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
C0C01EBF1E39131A0056E6CB /* CDVCommandDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 7ED95D141AB9029B008C4574 /* CDVCommandDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
C0C01EC01E39131A0056E6CB /* CDVCommandDelegateImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = 7ED95D151AB9029B008C4574 /* CDVCommandDelegateImpl.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
C0C01EC11E39131A0056E6CB /* CDVCommandQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = 7ED95D171AB9029B008C4574 /* CDVCommandQueue.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
C0C01EC21E39131A0056E6CB /* CDVConfigParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 7ED95D191AB9029B008C4574 /* CDVConfigParser.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
C0C01EC31E39131A0056E6CB /* CDVInvokedUrlCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 7ED95D1B1AB9029B008C4574 /* CDVInvokedUrlCommand.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
C0C01EC41E39131A0056E6CB /* CDVPlugin+Resources.h in Headers */ = {isa = PBXBuildFile; fileRef = 7ED95D1D1AB9029B008C4574 /* CDVPlugin+Resources.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
C0C01EC51E39131A0056E6CB /* CDVPlugin.h in Headers */ = {isa = PBXBuildFile; fileRef = 7ED95D1F1AB9029B008C4574 /* CDVPlugin.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
C0C01EC61E39131A0056E6CB /* CDVPluginResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 7ED95D211AB9029B008C4574 /* CDVPluginResult.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
C0C01EC71E39131A0056E6CB /* CDVScreenOrientationDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 7ED95D231AB9029B008C4574 /* CDVScreenOrientationDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
C0C01EC81E39131A0056E6CB /* CDVTimer.h in Headers */ = {isa = PBXBuildFile; fileRef = 7ED95D241AB9029B008C4574 /* CDVTimer.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
C0C01EC91E39131A0056E6CB /* CDVURLProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 7ED95D261AB9029B008C4574 /* CDVURLProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
C0C01ECA1E39131A0056E6CB /* CDVUserAgentUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 7ED95D281AB9029B008C4574 /* CDVUserAgentUtil.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
C0C01ECB1E39131A0056E6CB /* CDVViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 7ED95D2A1AB9029B008C4574 /* CDVViewController.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
C0C01ECC1E39131A0056E6CB /* CDVWebViewEngineProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 7ED95D2C1AB9029B008C4574 /* CDVWebViewEngineProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
C0C01ECD1E39131A0056E6CB /* CDVWhitelist.h in Headers */ = {isa = PBXBuildFile; fileRef = 7ED95D2D1AB9029B008C4574 /* CDVWhitelist.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
C0C01ECE1E39131A0056E6CB /* NSDictionary+CordovaPreferences.h in Headers */ = {isa = PBXBuildFile; fileRef = 7ED95D311AB9029B008C4574 /* NSDictionary+CordovaPreferences.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
C0C01ECF1E39131A0056E6CB /* NSMutableArray+QueueAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 7ED95D331AB9029B008C4574 /* NSMutableArray+QueueAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
C0C01ED01E3913610056E6CB /* CDVUIWebViewDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 7ED95CFE1AB9028C008C4574 /* CDVUIWebViewDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXContainerItemProxy section */
|
||||
C0C01ED11E39137C0056E6CB /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = D2AAC07D0554694100DB518D;
|
||||
remoteInfo = CordovaLib;
|
||||
};
|
||||
/* End PBXContainerItemProxy section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
28BFF9121F355A4E00DDF01A /* CDVLogger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CDVLogger.h; sourceTree = "<group>"; };
|
||||
28BFF9131F355A4E00DDF01A /* CDVLogger.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CDVLogger.m; sourceTree = "<group>"; };
|
||||
30193A4E1AE6350A0069A75F /* CDVUIWebViewNavigationDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CDVUIWebViewNavigationDelegate.m; sourceTree = "<group>"; };
|
||||
30193A4F1AE6350A0069A75F /* CDVUIWebViewNavigationDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CDVUIWebViewNavigationDelegate.h; sourceTree = "<group>"; };
|
||||
30325A0B136B343700982B63 /* VERSION */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = VERSION; sourceTree = "<group>"; };
|
||||
3093E2211B16D6A3003F381A /* CDVIntentAndNavigationFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CDVIntentAndNavigationFilter.h; sourceTree = "<group>"; };
|
||||
3093E2221B16D6A3003F381A /* CDVIntentAndNavigationFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CDVIntentAndNavigationFilter.m; sourceTree = "<group>"; };
|
||||
68A32D7114102E1C006B237C /* libCordova.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libCordova.a; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
7ED95CF21AB9028C008C4574 /* CDVDebug.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CDVDebug.h; sourceTree = "<group>"; };
|
||||
7ED95CF31AB9028C008C4574 /* CDVJSON_private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CDVJSON_private.h; sourceTree = "<group>"; };
|
||||
7ED95CF41AB9028C008C4574 /* CDVJSON_private.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CDVJSON_private.m; sourceTree = "<group>"; };
|
||||
7ED95CF51AB9028C008C4574 /* CDVPlugin+Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "CDVPlugin+Private.h"; sourceTree = "<group>"; };
|
||||
7ED95CF81AB9028C008C4574 /* CDVHandleOpenURL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CDVHandleOpenURL.h; sourceTree = "<group>"; };
|
||||
7ED95CF91AB9028C008C4574 /* CDVHandleOpenURL.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CDVHandleOpenURL.m; sourceTree = "<group>"; };
|
||||
7ED95CFB1AB9028C008C4574 /* CDVLocalStorage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CDVLocalStorage.h; sourceTree = "<group>"; };
|
||||
7ED95CFC1AB9028C008C4574 /* CDVLocalStorage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CDVLocalStorage.m; sourceTree = "<group>"; };
|
||||
7ED95CFE1AB9028C008C4574 /* CDVUIWebViewDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CDVUIWebViewDelegate.h; sourceTree = "<group>"; };
|
||||
7ED95CFF1AB9028C008C4574 /* CDVUIWebViewDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CDVUIWebViewDelegate.m; sourceTree = "<group>"; };
|
||||
7ED95D001AB9028C008C4574 /* CDVUIWebViewEngine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CDVUIWebViewEngine.h; sourceTree = "<group>"; };
|
||||
7ED95D011AB9028C008C4574 /* CDVUIWebViewEngine.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CDVUIWebViewEngine.m; sourceTree = "<group>"; };
|
||||
7ED95D0F1AB9029B008C4574 /* CDV.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CDV.h; sourceTree = "<group>"; };
|
||||
7ED95D101AB9029B008C4574 /* CDVAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CDVAppDelegate.h; sourceTree = "<group>"; };
|
||||
7ED95D111AB9029B008C4574 /* CDVAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CDVAppDelegate.m; sourceTree = "<group>"; };
|
||||
7ED95D121AB9029B008C4574 /* CDVAvailability.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CDVAvailability.h; sourceTree = "<group>"; };
|
||||
7ED95D131AB9029B008C4574 /* CDVAvailabilityDeprecated.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CDVAvailabilityDeprecated.h; sourceTree = "<group>"; };
|
||||
7ED95D141AB9029B008C4574 /* CDVCommandDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CDVCommandDelegate.h; sourceTree = "<group>"; };
|
||||
7ED95D151AB9029B008C4574 /* CDVCommandDelegateImpl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CDVCommandDelegateImpl.h; sourceTree = "<group>"; };
|
||||
7ED95D161AB9029B008C4574 /* CDVCommandDelegateImpl.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CDVCommandDelegateImpl.m; sourceTree = "<group>"; };
|
||||
7ED95D171AB9029B008C4574 /* CDVCommandQueue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CDVCommandQueue.h; sourceTree = "<group>"; };
|
||||
7ED95D181AB9029B008C4574 /* CDVCommandQueue.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CDVCommandQueue.m; sourceTree = "<group>"; };
|
||||
7ED95D191AB9029B008C4574 /* CDVConfigParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CDVConfigParser.h; sourceTree = "<group>"; };
|
||||
7ED95D1A1AB9029B008C4574 /* CDVConfigParser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CDVConfigParser.m; sourceTree = "<group>"; };
|
||||
7ED95D1B1AB9029B008C4574 /* CDVInvokedUrlCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CDVInvokedUrlCommand.h; sourceTree = "<group>"; };
|
||||
7ED95D1C1AB9029B008C4574 /* CDVInvokedUrlCommand.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CDVInvokedUrlCommand.m; sourceTree = "<group>"; };
|
||||
7ED95D1D1AB9029B008C4574 /* CDVPlugin+Resources.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "CDVPlugin+Resources.h"; sourceTree = "<group>"; };
|
||||
7ED95D1E1AB9029B008C4574 /* CDVPlugin+Resources.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "CDVPlugin+Resources.m"; sourceTree = "<group>"; };
|
||||
7ED95D1F1AB9029B008C4574 /* CDVPlugin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CDVPlugin.h; sourceTree = "<group>"; };
|
||||
7ED95D201AB9029B008C4574 /* CDVPlugin.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CDVPlugin.m; sourceTree = "<group>"; };
|
||||
7ED95D211AB9029B008C4574 /* CDVPluginResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CDVPluginResult.h; sourceTree = "<group>"; };
|
||||
7ED95D221AB9029B008C4574 /* CDVPluginResult.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CDVPluginResult.m; sourceTree = "<group>"; };
|
||||
7ED95D231AB9029B008C4574 /* CDVScreenOrientationDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CDVScreenOrientationDelegate.h; sourceTree = "<group>"; };
|
||||
7ED95D241AB9029B008C4574 /* CDVTimer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CDVTimer.h; sourceTree = "<group>"; };
|
||||
7ED95D251AB9029B008C4574 /* CDVTimer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CDVTimer.m; sourceTree = "<group>"; };
|
||||
7ED95D261AB9029B008C4574 /* CDVURLProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CDVURLProtocol.h; sourceTree = "<group>"; };
|
||||
7ED95D271AB9029B008C4574 /* CDVURLProtocol.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CDVURLProtocol.m; sourceTree = "<group>"; };
|
||||
7ED95D281AB9029B008C4574 /* CDVUserAgentUtil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CDVUserAgentUtil.h; sourceTree = "<group>"; };
|
||||
7ED95D291AB9029B008C4574 /* CDVUserAgentUtil.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CDVUserAgentUtil.m; sourceTree = "<group>"; };
|
||||
7ED95D2A1AB9029B008C4574 /* CDVViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CDVViewController.h; sourceTree = "<group>"; };
|
||||
7ED95D2B1AB9029B008C4574 /* CDVViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CDVViewController.m; sourceTree = "<group>"; };
|
||||
7ED95D2C1AB9029B008C4574 /* CDVWebViewEngineProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CDVWebViewEngineProtocol.h; sourceTree = "<group>"; };
|
||||
7ED95D2D1AB9029B008C4574 /* CDVWhitelist.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CDVWhitelist.h; sourceTree = "<group>"; };
|
||||
7ED95D2E1AB9029B008C4574 /* CDVWhitelist.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CDVWhitelist.m; sourceTree = "<group>"; };
|
||||
7ED95D311AB9029B008C4574 /* NSDictionary+CordovaPreferences.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSDictionary+CordovaPreferences.h"; sourceTree = "<group>"; };
|
||||
7ED95D321AB9029B008C4574 /* NSDictionary+CordovaPreferences.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSDictionary+CordovaPreferences.m"; sourceTree = "<group>"; };
|
||||
7ED95D331AB9029B008C4574 /* NSMutableArray+QueueAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSMutableArray+QueueAdditions.h"; sourceTree = "<group>"; };
|
||||
7ED95D341AB9029B008C4574 /* NSMutableArray+QueueAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSMutableArray+QueueAdditions.m"; sourceTree = "<group>"; };
|
||||
A3B082D21BB15CEA00D8DC35 /* CDVGestureHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CDVGestureHandler.h; sourceTree = "<group>"; };
|
||||
A3B082D31BB15CEA00D8DC35 /* CDVGestureHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CDVGestureHandler.m; sourceTree = "<group>"; };
|
||||
AA747D9E0F9514B9006C5449 /* CordovaLib_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CordovaLib_Prefix.pch; sourceTree = SOURCE_ROOT; };
|
||||
C0C01EB21E3911D50056E6CB /* Cordova.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Cordova.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
C0C01EB41E3911D50056E6CB /* Cordova.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Cordova.h; sourceTree = "<group>"; };
|
||||
C0C01EB51E3911D50056E6CB /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
C0C01EAE1E3911D50056E6CB /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
C0C01EBA1E39120F0056E6CB /* libCordova.a in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
D2AAC07C0554694100DB518D /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
034768DFFF38A50411DB9C8B /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
68A32D7114102E1C006B237C /* libCordova.a */,
|
||||
C0C01EB21E3911D50056E6CB /* Cordova.framework */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = CORDOVALIB;
|
||||
};
|
||||
0867D691FE84028FC02AAC07 /* CordovaLib */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
7ED95D0E1AB9029B008C4574 /* Public */,
|
||||
7ED95CF11AB9028C008C4574 /* Private */,
|
||||
C0C01EB31E3911D50056E6CB /* Cordova */,
|
||||
034768DFFF38A50411DB9C8B /* Products */,
|
||||
30325A0B136B343700982B63 /* VERSION */,
|
||||
);
|
||||
name = CordovaLib;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
28BFF9111F355A1D00DDF01A /* CDVLogger */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
28BFF9121F355A4E00DDF01A /* CDVLogger.h */,
|
||||
28BFF9131F355A4E00DDF01A /* CDVLogger.m */,
|
||||
);
|
||||
path = CDVLogger;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
3093E2201B16D6A3003F381A /* CDVIntentAndNavigationFilter */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
3093E2211B16D6A3003F381A /* CDVIntentAndNavigationFilter.h */,
|
||||
3093E2221B16D6A3003F381A /* CDVIntentAndNavigationFilter.m */,
|
||||
);
|
||||
path = CDVIntentAndNavigationFilter;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
7ED95CF11AB9028C008C4574 /* Private */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
AA747D9E0F9514B9006C5449 /* CordovaLib_Prefix.pch */,
|
||||
7ED95CF21AB9028C008C4574 /* CDVDebug.h */,
|
||||
7ED95CF31AB9028C008C4574 /* CDVJSON_private.h */,
|
||||
7ED95CF41AB9028C008C4574 /* CDVJSON_private.m */,
|
||||
7ED95CF51AB9028C008C4574 /* CDVPlugin+Private.h */,
|
||||
7ED95CF61AB9028C008C4574 /* Plugins */,
|
||||
);
|
||||
name = Private;
|
||||
path = Classes/Private;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
7ED95CF61AB9028C008C4574 /* Plugins */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
28BFF9111F355A1D00DDF01A /* CDVLogger */,
|
||||
A3B082D11BB15CEA00D8DC35 /* CDVGestureHandler */,
|
||||
3093E2201B16D6A3003F381A /* CDVIntentAndNavigationFilter */,
|
||||
7ED95CF71AB9028C008C4574 /* CDVHandleOpenURL */,
|
||||
7ED95CFA1AB9028C008C4574 /* CDVLocalStorage */,
|
||||
7ED95CFD1AB9028C008C4574 /* CDVUIWebViewEngine */,
|
||||
);
|
||||
path = Plugins;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
7ED95CF71AB9028C008C4574 /* CDVHandleOpenURL */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
7ED95CF81AB9028C008C4574 /* CDVHandleOpenURL.h */,
|
||||
7ED95CF91AB9028C008C4574 /* CDVHandleOpenURL.m */,
|
||||
);
|
||||
path = CDVHandleOpenURL;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
7ED95CFA1AB9028C008C4574 /* CDVLocalStorage */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
7ED95CFB1AB9028C008C4574 /* CDVLocalStorage.h */,
|
||||
7ED95CFC1AB9028C008C4574 /* CDVLocalStorage.m */,
|
||||
);
|
||||
path = CDVLocalStorage;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
7ED95CFD1AB9028C008C4574 /* CDVUIWebViewEngine */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
30193A4E1AE6350A0069A75F /* CDVUIWebViewNavigationDelegate.m */,
|
||||
30193A4F1AE6350A0069A75F /* CDVUIWebViewNavigationDelegate.h */,
|
||||
7ED95CFE1AB9028C008C4574 /* CDVUIWebViewDelegate.h */,
|
||||
7ED95CFF1AB9028C008C4574 /* CDVUIWebViewDelegate.m */,
|
||||
7ED95D001AB9028C008C4574 /* CDVUIWebViewEngine.h */,
|
||||
7ED95D011AB9028C008C4574 /* CDVUIWebViewEngine.m */,
|
||||
);
|
||||
path = CDVUIWebViewEngine;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
7ED95D0E1AB9029B008C4574 /* Public */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
7ED95D0F1AB9029B008C4574 /* CDV.h */,
|
||||
7ED95D101AB9029B008C4574 /* CDVAppDelegate.h */,
|
||||
7ED95D111AB9029B008C4574 /* CDVAppDelegate.m */,
|
||||
7ED95D121AB9029B008C4574 /* CDVAvailability.h */,
|
||||
7ED95D131AB9029B008C4574 /* CDVAvailabilityDeprecated.h */,
|
||||
7ED95D141AB9029B008C4574 /* CDVCommandDelegate.h */,
|
||||
7ED95D151AB9029B008C4574 /* CDVCommandDelegateImpl.h */,
|
||||
7ED95D161AB9029B008C4574 /* CDVCommandDelegateImpl.m */,
|
||||
7ED95D171AB9029B008C4574 /* CDVCommandQueue.h */,
|
||||
7ED95D181AB9029B008C4574 /* CDVCommandQueue.m */,
|
||||
7ED95D191AB9029B008C4574 /* CDVConfigParser.h */,
|
||||
7ED95D1A1AB9029B008C4574 /* CDVConfigParser.m */,
|
||||
7ED95D1B1AB9029B008C4574 /* CDVInvokedUrlCommand.h */,
|
||||
7ED95D1C1AB9029B008C4574 /* CDVInvokedUrlCommand.m */,
|
||||
7ED95D1D1AB9029B008C4574 /* CDVPlugin+Resources.h */,
|
||||
7ED95D1E1AB9029B008C4574 /* CDVPlugin+Resources.m */,
|
||||
7ED95D1F1AB9029B008C4574 /* CDVPlugin.h */,
|
||||
7ED95D201AB9029B008C4574 /* CDVPlugin.m */,
|
||||
7ED95D211AB9029B008C4574 /* CDVPluginResult.h */,
|
||||
7ED95D221AB9029B008C4574 /* CDVPluginResult.m */,
|
||||
7ED95D231AB9029B008C4574 /* CDVScreenOrientationDelegate.h */,
|
||||
7ED95D241AB9029B008C4574 /* CDVTimer.h */,
|
||||
7ED95D251AB9029B008C4574 /* CDVTimer.m */,
|
||||
7ED95D261AB9029B008C4574 /* CDVURLProtocol.h */,
|
||||
7ED95D271AB9029B008C4574 /* CDVURLProtocol.m */,
|
||||
7ED95D281AB9029B008C4574 /* CDVUserAgentUtil.h */,
|
||||
7ED95D291AB9029B008C4574 /* CDVUserAgentUtil.m */,
|
||||
7ED95D2A1AB9029B008C4574 /* CDVViewController.h */,
|
||||
7ED95D2B1AB9029B008C4574 /* CDVViewController.m */,
|
||||
7ED95D2C1AB9029B008C4574 /* CDVWebViewEngineProtocol.h */,
|
||||
7ED95D2D1AB9029B008C4574 /* CDVWhitelist.h */,
|
||||
7ED95D2E1AB9029B008C4574 /* CDVWhitelist.m */,
|
||||
7ED95D311AB9029B008C4574 /* NSDictionary+CordovaPreferences.h */,
|
||||
7ED95D321AB9029B008C4574 /* NSDictionary+CordovaPreferences.m */,
|
||||
7ED95D331AB9029B008C4574 /* NSMutableArray+QueueAdditions.h */,
|
||||
7ED95D341AB9029B008C4574 /* NSMutableArray+QueueAdditions.m */,
|
||||
);
|
||||
name = Public;
|
||||
path = Classes/Public;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
A3B082D11BB15CEA00D8DC35 /* CDVGestureHandler */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
A3B082D21BB15CEA00D8DC35 /* CDVGestureHandler.h */,
|
||||
A3B082D31BB15CEA00D8DC35 /* CDVGestureHandler.m */,
|
||||
);
|
||||
path = CDVGestureHandler;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
C0C01EB31E3911D50056E6CB /* Cordova */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
C0C01EB41E3911D50056E6CB /* Cordova.h */,
|
||||
C0C01EB51E3911D50056E6CB /* Info.plist */,
|
||||
);
|
||||
path = Cordova;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXHeadersBuildPhase section */
|
||||
C0C01EAF1E3911D50056E6CB /* Headers */ = {
|
||||
isa = PBXHeadersBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
C0C01EC11E39131A0056E6CB /* CDVCommandQueue.h in Headers */,
|
||||
C0C01EC51E39131A0056E6CB /* CDVPlugin.h in Headers */,
|
||||
C0C01ECF1E39131A0056E6CB /* NSMutableArray+QueueAdditions.h in Headers */,
|
||||
C0C01EC21E39131A0056E6CB /* CDVConfigParser.h in Headers */,
|
||||
C0C01EC81E39131A0056E6CB /* CDVTimer.h in Headers */,
|
||||
C0C01EBB1E39131A0056E6CB /* CDV.h in Headers */,
|
||||
C0C01ECE1E39131A0056E6CB /* NSDictionary+CordovaPreferences.h in Headers */,
|
||||
C0C01EB61E3911D50056E6CB /* Cordova.h in Headers */,
|
||||
C0C01EC41E39131A0056E6CB /* CDVPlugin+Resources.h in Headers */,
|
||||
C0C01EBE1E39131A0056E6CB /* CDVAvailabilityDeprecated.h in Headers */,
|
||||
C0C01EC91E39131A0056E6CB /* CDVURLProtocol.h in Headers */,
|
||||
C0C01EBF1E39131A0056E6CB /* CDVCommandDelegate.h in Headers */,
|
||||
C0C01ECD1E39131A0056E6CB /* CDVWhitelist.h in Headers */,
|
||||
C0C01ED01E3913610056E6CB /* CDVUIWebViewDelegate.h in Headers */,
|
||||
C0C01ECA1E39131A0056E6CB /* CDVUserAgentUtil.h in Headers */,
|
||||
C0C01EBC1E39131A0056E6CB /* CDVAppDelegate.h in Headers */,
|
||||
C0C01EBD1E39131A0056E6CB /* CDVAvailability.h in Headers */,
|
||||
C0C01ECB1E39131A0056E6CB /* CDVViewController.h in Headers */,
|
||||
C0C01ECC1E39131A0056E6CB /* CDVWebViewEngineProtocol.h in Headers */,
|
||||
C0C01EC01E39131A0056E6CB /* CDVCommandDelegateImpl.h in Headers */,
|
||||
C0C01EC31E39131A0056E6CB /* CDVInvokedUrlCommand.h in Headers */,
|
||||
C0C01EC71E39131A0056E6CB /* CDVScreenOrientationDelegate.h in Headers */,
|
||||
C0C01EC61E39131A0056E6CB /* CDVPluginResult.h in Headers */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
D2AAC07A0554694100DB518D /* Headers */ = {
|
||||
isa = PBXHeadersBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
7ED95D521AB9029B008C4574 /* CDVWebViewEngineProtocol.h in Headers */,
|
||||
7ED95D491AB9029B008C4574 /* CDVScreenOrientationDelegate.h in Headers */,
|
||||
7ED95D351AB9029B008C4574 /* CDV.h in Headers */,
|
||||
A3B082D41BB15CEA00D8DC35 /* CDVGestureHandler.h in Headers */,
|
||||
7ED95D3B1AB9029B008C4574 /* CDVCommandDelegateImpl.h in Headers */,
|
||||
7ED95D3D1AB9029B008C4574 /* CDVCommandQueue.h in Headers */,
|
||||
7ED95D531AB9029B008C4574 /* CDVWhitelist.h in Headers */,
|
||||
7ED95D361AB9029B008C4574 /* CDVAppDelegate.h in Headers */,
|
||||
7ED95D431AB9029B008C4574 /* CDVPlugin+Resources.h in Headers */,
|
||||
7ED95D381AB9029B008C4574 /* CDVAvailability.h in Headers */,
|
||||
7ED95D0A1AB9028C008C4574 /* CDVUIWebViewDelegate.h in Headers */,
|
||||
7ED95D471AB9029B008C4574 /* CDVPluginResult.h in Headers */,
|
||||
7ED95D591AB9029B008C4574 /* NSMutableArray+QueueAdditions.h in Headers */,
|
||||
7ED95D411AB9029B008C4574 /* CDVInvokedUrlCommand.h in Headers */,
|
||||
7ED95D571AB9029B008C4574 /* NSDictionary+CordovaPreferences.h in Headers */,
|
||||
7ED95D451AB9029B008C4574 /* CDVPlugin.h in Headers */,
|
||||
7ED95D4C1AB9029B008C4574 /* CDVURLProtocol.h in Headers */,
|
||||
7ED95D3A1AB9029B008C4574 /* CDVCommandDelegate.h in Headers */,
|
||||
7ED95D391AB9029B008C4574 /* CDVAvailabilityDeprecated.h in Headers */,
|
||||
7ED95D4E1AB9029B008C4574 /* CDVUserAgentUtil.h in Headers */,
|
||||
7ED95D4A1AB9029B008C4574 /* CDVTimer.h in Headers */,
|
||||
7ED95D3F1AB9029B008C4574 /* CDVConfigParser.h in Headers */,
|
||||
7ED95D501AB9029B008C4574 /* CDVViewController.h in Headers */,
|
||||
7ED95D031AB9028C008C4574 /* CDVJSON_private.h in Headers */,
|
||||
7ED95D021AB9028C008C4574 /* CDVDebug.h in Headers */,
|
||||
7ED95D051AB9028C008C4574 /* CDVPlugin+Private.h in Headers */,
|
||||
7E7F69B61ABA35D8007546F4 /* CDVLocalStorage.h in Headers */,
|
||||
3093E2231B16D6A3003F381A /* CDVIntentAndNavigationFilter.h in Headers */,
|
||||
7E7F69B81ABA368F007546F4 /* CDVUIWebViewEngine.h in Headers */,
|
||||
7E7F69B91ABA3692007546F4 /* CDVHandleOpenURL.h in Headers */,
|
||||
28BFF9141F355A4E00DDF01A /* CDVLogger.h in Headers */,
|
||||
30193A511AE6350A0069A75F /* CDVUIWebViewNavigationDelegate.h in Headers */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXHeadersBuildPhase section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
C0C01EB11E3911D50056E6CB /* Cordova */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = C0C01EB91E3911D50056E6CB /* Build configuration list for PBXNativeTarget "Cordova" */;
|
||||
buildPhases = (
|
||||
C0C01EAD1E3911D50056E6CB /* Sources */,
|
||||
C0C01EAE1E3911D50056E6CB /* Frameworks */,
|
||||
C0C01EAF1E3911D50056E6CB /* Headers */,
|
||||
C0C01EB01E3911D50056E6CB /* Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
C0C01ED21E39137C0056E6CB /* PBXTargetDependency */,
|
||||
);
|
||||
name = Cordova;
|
||||
productName = Cordova;
|
||||
productReference = C0C01EB21E3911D50056E6CB /* Cordova.framework */;
|
||||
productType = "com.apple.product-type.framework";
|
||||
};
|
||||
D2AAC07D0554694100DB518D /* CordovaLib */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 1DEB921E08733DC00010E9CD /* Build configuration list for PBXNativeTarget "CordovaLib" */;
|
||||
buildPhases = (
|
||||
D2AAC07A0554694100DB518D /* Headers */,
|
||||
D2AAC07B0554694100DB518D /* Sources */,
|
||||
D2AAC07C0554694100DB518D /* Frameworks */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = CordovaLib;
|
||||
productName = CordovaLib;
|
||||
productReference = 68A32D7114102E1C006B237C /* libCordova.a */;
|
||||
productType = "com.apple.product-type.library.static";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
0867D690FE84028FC02AAC07 /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
LastUpgradeCheck = 0720;
|
||||
TargetAttributes = {
|
||||
C0C01EB11E3911D50056E6CB = {
|
||||
CreatedOnToolsVersion = 8.2;
|
||||
ProvisioningStyle = Automatic;
|
||||
};
|
||||
};
|
||||
};
|
||||
buildConfigurationList = 1DEB922208733DC00010E9CD /* Build configuration list for PBXProject "CordovaLib" */;
|
||||
compatibilityVersion = "Xcode 3.2";
|
||||
developmentRegion = English;
|
||||
hasScannedForEncodings = 1;
|
||||
knownRegions = (
|
||||
English,
|
||||
Japanese,
|
||||
French,
|
||||
German,
|
||||
en,
|
||||
);
|
||||
mainGroup = 0867D691FE84028FC02AAC07 /* CordovaLib */;
|
||||
productRefGroup = 034768DFFF38A50411DB9C8B /* Products */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
D2AAC07D0554694100DB518D /* CordovaLib */,
|
||||
C0C01EB11E3911D50056E6CB /* Cordova */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXResourcesBuildPhase section */
|
||||
C0C01EB01E3911D50056E6CB /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
C0C01EAD1E3911D50056E6CB /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
D2AAC07B0554694100DB518D /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
7ED95D511AB9029B008C4574 /* CDVViewController.m in Sources */,
|
||||
7ED95D581AB9029B008C4574 /* NSDictionary+CordovaPreferences.m in Sources */,
|
||||
7ED95D371AB9029B008C4574 /* CDVAppDelegate.m in Sources */,
|
||||
7ED95D0B1AB9028C008C4574 /* CDVUIWebViewDelegate.m in Sources */,
|
||||
7ED95D3C1AB9029B008C4574 /* CDVCommandDelegateImpl.m in Sources */,
|
||||
7ED95D041AB9028C008C4574 /* CDVJSON_private.m in Sources */,
|
||||
7ED95D541AB9029B008C4574 /* CDVWhitelist.m in Sources */,
|
||||
7ED95D421AB9029B008C4574 /* CDVInvokedUrlCommand.m in Sources */,
|
||||
7ED95D4B1AB9029B008C4574 /* CDVTimer.m in Sources */,
|
||||
7ED95D4F1AB9029B008C4574 /* CDVUserAgentUtil.m in Sources */,
|
||||
7ED95D401AB9029B008C4574 /* CDVConfigParser.m in Sources */,
|
||||
A3B082D51BB15CEA00D8DC35 /* CDVGestureHandler.m in Sources */,
|
||||
7ED95D071AB9028C008C4574 /* CDVHandleOpenURL.m in Sources */,
|
||||
30193A501AE6350A0069A75F /* CDVUIWebViewNavigationDelegate.m in Sources */,
|
||||
7ED95D5A1AB9029B008C4574 /* NSMutableArray+QueueAdditions.m in Sources */,
|
||||
7ED95D3E1AB9029B008C4574 /* CDVCommandQueue.m in Sources */,
|
||||
7ED95D481AB9029B008C4574 /* CDVPluginResult.m in Sources */,
|
||||
7ED95D441AB9029B008C4574 /* CDVPlugin+Resources.m in Sources */,
|
||||
7ED95D4D1AB9029B008C4574 /* CDVURLProtocol.m in Sources */,
|
||||
28BFF9151F355A4E00DDF01A /* CDVLogger.m in Sources */,
|
||||
7ED95D0D1AB9028C008C4574 /* CDVUIWebViewEngine.m in Sources */,
|
||||
7ED95D461AB9029B008C4574 /* CDVPlugin.m in Sources */,
|
||||
7ED95D091AB9028C008C4574 /* CDVLocalStorage.m in Sources */,
|
||||
3093E2241B16D6A3003F381A /* CDVIntentAndNavigationFilter.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXTargetDependency section */
|
||||
C0C01ED21E39137C0056E6CB /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
target = D2AAC07D0554694100DB518D /* CordovaLib */;
|
||||
targetProxy = C0C01ED11E39137C0056E6CB /* PBXContainerItemProxy */;
|
||||
};
|
||||
/* End PBXTargetDependency section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
1DEB921F08733DC00010E9CD /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
DSTROOT = "/tmp/$(PROJECT_NAME).dst";
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_MODEL_TUNING = G5;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = CordovaLib_Prefix.pch;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = "";
|
||||
GCC_THUMB_SUPPORT = NO;
|
||||
GCC_VERSION = "";
|
||||
INSTALL_PATH = /usr/local/lib;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
|
||||
PRODUCT_NAME = Cordova;
|
||||
PUBLIC_HEADERS_FOLDER_PATH = include/Cordova;
|
||||
SKIP_INSTALL = YES;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
1DEB922008733DC00010E9CD /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
DSTROOT = "/tmp/$(PROJECT_NAME).dst";
|
||||
GCC_MODEL_TUNING = G5;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = CordovaLib_Prefix.pch;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = "";
|
||||
GCC_THUMB_SUPPORT = NO;
|
||||
GCC_VERSION = "";
|
||||
INSTALL_PATH = /usr/local/lib;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
|
||||
PRODUCT_NAME = Cordova;
|
||||
PUBLIC_HEADERS_FOLDER_PATH = include/Cordova;
|
||||
SKIP_INSTALL = YES;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
1DEB922308733DC00010E9CD /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
ENABLE_TESTABILITY = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = c99;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = "";
|
||||
GCC_THUMB_SUPPORT = NO;
|
||||
GCC_VERSION = "";
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
OTHER_CFLAGS = "-DDEBUG";
|
||||
PUBLIC_HEADERS_FOLDER_PATH = include/Cordova;
|
||||
SDKROOT = iphoneos;
|
||||
SKIP_INSTALL = YES;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
USER_HEADER_SEARCH_PATHS = "";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
1DEB922408733DC00010E9CD /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = c99;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = "";
|
||||
GCC_THUMB_SUPPORT = NO;
|
||||
GCC_VERSION = "";
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
|
||||
ONLY_ACTIVE_ARCH = NO;
|
||||
PUBLIC_HEADERS_FOLDER_PATH = include/Cordova;
|
||||
SDKROOT = iphoneos;
|
||||
SKIP_INSTALL = YES;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
C0C01EB71E3911D50056E6CB /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
ARCHS = "$(ARCHS_STANDARD)";
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CODE_SIGN_IDENTITY = "";
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
DEFINES_MODULE = YES;
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 1;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"DEBUG=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
INFOPLIST_FILE = Cordova/Info.plist;
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||
MTL_ENABLE_DEBUG_INFO = YES;
|
||||
OTHER_LDFLAGS = "-all_load";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = org.apache.cordova.Cordova;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
PUBLIC_HEADERS_FOLDER_PATH = "$(CONTENTS_FOLDER_PATH)/Headers";
|
||||
SKIP_INSTALL = YES;
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
VERSION_INFO_PREFIX = "";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
C0C01EB81E3911D50056E6CB /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
ARCHS = "$(ARCHS_STANDARD)";
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CODE_SIGN_IDENTITY = "";
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
DEFINES_MODULE = YES;
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 1;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
ENABLE_NS_ASSERTIONS = NO;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
INFOPLIST_FILE = Cordova/Info.plist;
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||
MTL_ENABLE_DEBUG_INFO = NO;
|
||||
OTHER_LDFLAGS = "-all_load";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = org.apache.cordova.Cordova;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
PUBLIC_HEADERS_FOLDER_PATH = "$(CONTENTS_FOLDER_PATH)/Headers";
|
||||
SKIP_INSTALL = YES;
|
||||
VALIDATE_PRODUCT = YES;
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
VERSION_INFO_PREFIX = "";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
1DEB921E08733DC00010E9CD /* Build configuration list for PBXNativeTarget "CordovaLib" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
1DEB921F08733DC00010E9CD /* Debug */,
|
||||
1DEB922008733DC00010E9CD /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
1DEB922208733DC00010E9CD /* Build configuration list for PBXProject "CordovaLib" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
1DEB922308733DC00010E9CD /* Debug */,
|
||||
1DEB922408733DC00010E9CD /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
C0C01EB91E3911D50056E6CB /* Build configuration list for PBXNativeTarget "Cordova" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
C0C01EB71E3911D50056E6CB /* Debug */,
|
||||
C0C01EB81E3911D50056E6CB /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = 0867D690FE84028FC02AAC07 /* Project object */;
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
<?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>SchemeUserState</key>
|
||||
<dict>
|
||||
<key>Cordova.xcscheme</key>
|
||||
<dict>
|
||||
<key>orderHint</key>
|
||||
<integer>2</integer>
|
||||
</dict>
|
||||
<key>CordovaLib.xcscheme</key>
|
||||
<dict>
|
||||
<key>orderHint</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</dict>
|
||||
</plist>
|
||||
22
src/cordova/platforms/ios/CordovaLib/CordovaLib_Prefix.pch
Normal file
@@ -0,0 +1,22 @@
|
||||
/*
|
||||
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.
|
||||
*/
|
||||
|
||||
#ifdef __OBJC__
|
||||
#import <Foundation/Foundation.h>
|
||||
#endif
|
||||
1
src/cordova/platforms/ios/CordovaLib/VERSION
Normal file
@@ -0,0 +1 @@
|
||||
4.5.5
|
||||
2432
src/cordova/platforms/ios/CordovaLib/cordova.js
vendored
Normal file
27
src/cordova/platforms/ios/HelloCordova.xcarchive/Info.plist
Normal file
@@ -0,0 +1,27 @@
|
||||
<?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>ApplicationProperties</key>
|
||||
<dict>
|
||||
<key>ApplicationPath</key>
|
||||
<string>Applications/HelloCordova.app</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>io.nicco.app.fotm.cordova</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0.0</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1.0.0</string>
|
||||
<key>SigningIdentity</key>
|
||||
<string>iPhone Developer: Anja Majstorovic (SJMLKBRYM9)</string>
|
||||
</dict>
|
||||
<key>ArchiveVersion</key>
|
||||
<integer>2</integer>
|
||||
<key>CreationDate</key>
|
||||
<date>2018-09-04T11:41:02Z</date>
|
||||
<key>Name</key>
|
||||
<string>HelloCordova</string>
|
||||
<key>SchemeName</key>
|
||||
<string>HelloCordova</string>
|
||||
</dict>
|
||||
</plist>
|
||||
|
After Width: | Height: | Size: 21 KiB |
|
After Width: | Height: | Size: 3.1 KiB |
|
After Width: | Height: | Size: 3.6 KiB |
|
After Width: | Height: | Size: 4.2 KiB |
|
After Width: | Height: | Size: 60 KiB |
|
After Width: | Height: | Size: 60 KiB |
|
After Width: | Height: | Size: 54 KiB |
|
After Width: | Height: | Size: 51 KiB |
|
After Width: | Height: | Size: 62 KiB |
|
After Width: | Height: | Size: 61 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 54 KiB |
@@ -0,0 +1 @@
|
||||
APPL????
|
||||
@@ -0,0 +1,785 @@
|
||||
<?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>files</key>
|
||||
<dict>
|
||||
<key>AppIcon60x60@3x.png</key>
|
||||
<data>
|
||||
uhdLkMriLYSzKN01pc1Q8E2lGQ4=
|
||||
</data>
|
||||
<key>Assets.car</key>
|
||||
<data>
|
||||
WvJ21t9jnnbBxFAwXXHcvTH+KKo=
|
||||
</data>
|
||||
<key>CDVBarcodeScanner.bundle/beep.caf</key>
|
||||
<data>
|
||||
n1wlp+nz0IyIf+ijW5tP91UI+x0=
|
||||
</data>
|
||||
<key>CDVBarcodeScanner.bundle/torch.png</key>
|
||||
<data>
|
||||
mYWzuFJCMsJIhwSNCTbYr/pw8d0=
|
||||
</data>
|
||||
<key>CDVBarcodeScanner.bundle/torch@2x.png</key>
|
||||
<data>
|
||||
CVe1Jr1OtHA5BjC37Jmll1AI9VA=
|
||||
</data>
|
||||
<key>CDVBarcodeScanner.bundle/torch@3x.png</key>
|
||||
<data>
|
||||
oh3qPwRm+DuBEovNszjn/0P9z1U=
|
||||
</data>
|
||||
<key>CDVLaunchScreen.storyboardc/01J-lp-oVM-view-Ze5-6b-2t3.nib</key>
|
||||
<data>
|
||||
cGgCbc6ETNRF2SLoNf6vNN3sIoI=
|
||||
</data>
|
||||
<key>CDVLaunchScreen.storyboardc/Info.plist</key>
|
||||
<data>
|
||||
n2t8gsDpfE6XkhG31p7IQJRxTxU=
|
||||
</data>
|
||||
<key>CDVLaunchScreen.storyboardc/UIViewController-01J-lp-oVM.nib</key>
|
||||
<data>
|
||||
atrQXdIENkUPmUuUhovhDisCyx8=
|
||||
</data>
|
||||
<key>CDVNotification.bundle/beep.wav</key>
|
||||
<data>
|
||||
/kSUVvLLJcbtfXnxFEolil3/NRk=
|
||||
</data>
|
||||
<key>Info.plist</key>
|
||||
<data>
|
||||
WuJCXF1YUTn0iIkToyyOI8wJf4w=
|
||||
</data>
|
||||
<key>LaunchImage-568h@2x.png</key>
|
||||
<data>
|
||||
SSQaBzC8MgJWeN4IXrktab76oA0=
|
||||
</data>
|
||||
<key>LaunchImage-700-568h@2x.png</key>
|
||||
<data>
|
||||
SSQaBzC8MgJWeN4IXrktab76oA0=
|
||||
</data>
|
||||
<key>LaunchImage-700@2x.png</key>
|
||||
<data>
|
||||
qVxPqkcU+afzN+KfIxv8az4333A=
|
||||
</data>
|
||||
<key>LaunchImage-800-667h@2x.png</key>
|
||||
<data>
|
||||
KvWMTMHOVs4HE1Y5ANKMInJjb0g=
|
||||
</data>
|
||||
<key>LaunchImage-800-Landscape-736h@3x.png</key>
|
||||
<data>
|
||||
0DF7oF/7u8/6oPBlr0iKVPwOTLQ=
|
||||
</data>
|
||||
<key>LaunchImage-800-Portrait-736h@3x.png</key>
|
||||
<data>
|
||||
GYTtM/NySuwN4RG2xYrkIZKJBpE=
|
||||
</data>
|
||||
<key>LaunchImage.png</key>
|
||||
<data>
|
||||
YoZtszKfAdealzoQT3ofuk1FLDw=
|
||||
</data>
|
||||
<key>LaunchImage@2x.png</key>
|
||||
<data>
|
||||
qVxPqkcU+afzN+KfIxv8az4333A=
|
||||
</data>
|
||||
<key>MainViewController.nib</key>
|
||||
<data>
|
||||
bbN4dnJsnBrT9nROH9TEMkilHxw=
|
||||
</data>
|
||||
<key>PkgInfo</key>
|
||||
<data>
|
||||
n57qDP4tZfLD1rCS43W0B4LQjzE=
|
||||
</data>
|
||||
<key>config.xml</key>
|
||||
<data>
|
||||
unFNwF63O+6anK87PeMbaFCR8V0=
|
||||
</data>
|
||||
<key>embedded.mobileprovision</key>
|
||||
<data>
|
||||
j652HcSaeZxmyWBet/OL2KL9cIY=
|
||||
</data>
|
||||
<key>scannerOverlay.nib</key>
|
||||
<data>
|
||||
V1DFXWuoKAomSwP4kxINb5/oELM=
|
||||
</data>
|
||||
<key>www/assets/Helvetica Neue LT Std Bold.otf</key>
|
||||
<data>
|
||||
n61NzoroAqXNIutGX6ercLD7EP8=
|
||||
</data>
|
||||
<key>www/assets/Helvetica Neue LT Std Light.otf</key>
|
||||
<data>
|
||||
qrsOMhtHk4hMAur2zUh0rLNjMa4=
|
||||
</data>
|
||||
<key>www/assets/Helvetica Neue LT Std Medium.otf</key>
|
||||
<data>
|
||||
bRYYd10Eani6jBLUngUxEcCc9cg=
|
||||
</data>
|
||||
<key>www/assets/Jaapokki.otf</key>
|
||||
<data>
|
||||
TDu/soEyqTGg3cu9MwiZJjullwQ=
|
||||
</data>
|
||||
<key>www/assets/check.png</key>
|
||||
<data>
|
||||
4hfuKCFR5aOJC88qCYicSUJimrY=
|
||||
</data>
|
||||
<key>www/assets/sync.png</key>
|
||||
<data>
|
||||
KBRC2d/rQd71mdQNBIUtG1ak5DQ=
|
||||
</data>
|
||||
<key>www/bundle.css</key>
|
||||
<data>
|
||||
4W5mNZ41LwcXKQDbKkmNlJT0yeM=
|
||||
</data>
|
||||
<key>www/cordova-js-src/exec.js</key>
|
||||
<data>
|
||||
3QDPaUQrAr8Wq2XcQhqcl8DLabQ=
|
||||
</data>
|
||||
<key>www/cordova-js-src/platform.js</key>
|
||||
<data>
|
||||
ujxMgcZCzzuK4VAjaNIfsORGeNU=
|
||||
</data>
|
||||
<key>www/cordova-js-src/plugin/ios/console.js</key>
|
||||
<data>
|
||||
QiM8MHQKHSj59wvBt/HHviQ0nms=
|
||||
</data>
|
||||
<key>www/cordova-js-src/plugin/ios/logger.js</key>
|
||||
<data>
|
||||
doSoID4yQ7Z8GrTg9sMfeIjMlDU=
|
||||
</data>
|
||||
<key>www/cordova.js</key>
|
||||
<data>
|
||||
OOBAQp461BbsIcoQAkK7OFzt7Rs=
|
||||
</data>
|
||||
<key>www/cordova_plugins.js</key>
|
||||
<data>
|
||||
TolBHTMpB+WYi8rLQ4jogTOg5lg=
|
||||
</data>
|
||||
<key>www/index.html</key>
|
||||
<data>
|
||||
xI1r5K+qW+3y0tBXhrZWvmaLiGI=
|
||||
</data>
|
||||
<key>www/main.js</key>
|
||||
<data>
|
||||
DnaNaqA/G7juq8+ZK4sGogUAtco=
|
||||
</data>
|
||||
<key>www/plugins/cordova-plugin-camera/www/Camera.js</key>
|
||||
<data>
|
||||
/Tl12sGFo/UZbPqnupaaV0Hg0vU=
|
||||
</data>
|
||||
<key>www/plugins/cordova-plugin-camera/www/CameraConstants.js</key>
|
||||
<data>
|
||||
v2sA7ZeHf4g2R4hremuTEjIZPUY=
|
||||
</data>
|
||||
<key>www/plugins/cordova-plugin-camera/www/CameraPopoverOptions.js</key>
|
||||
<data>
|
||||
DFjhGlevsoLz/p7Ls+/7LBfept8=
|
||||
</data>
|
||||
<key>www/plugins/cordova-plugin-camera/www/ios/CameraPopoverHandle.js</key>
|
||||
<data>
|
||||
koRc23xo1lElHctG97l7ayo1asw=
|
||||
</data>
|
||||
<key>www/plugins/cordova-plugin-dialogs/www/notification.js</key>
|
||||
<data>
|
||||
7V/xaRgAhGL52hL5xmBfyAq3OwQ=
|
||||
</data>
|
||||
<key>www/plugins/phonegap-plugin-barcodescanner/www/barcodescanner.js</key>
|
||||
<data>
|
||||
haJXivDxwB2BCbPcMrODx5ojVqQ=
|
||||
</data>
|
||||
<key>www/plugins/phonegap-plugin-local-notification/www/notification.js</key>
|
||||
<data>
|
||||
cG1ISVy3uE5XwrkNocroK/TUKkk=
|
||||
</data>
|
||||
</dict>
|
||||
<key>files2</key>
|
||||
<dict>
|
||||
<key>AppIcon60x60@3x.png</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
uhdLkMriLYSzKN01pc1Q8E2lGQ4=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
LjqIPwZsfC9Gb3pkvXpRAOwy0vIKTDQsIKlhZSKHSf4=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Assets.car</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
WvJ21t9jnnbBxFAwXXHcvTH+KKo=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
F5NvzenCrc26QxBGinfoks9MLuFDiFk+isWvvycJKqQ=
|
||||
</data>
|
||||
</dict>
|
||||
<key>CDVBarcodeScanner.bundle/beep.caf</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
n1wlp+nz0IyIf+ijW5tP91UI+x0=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
NN7HB8+IcBwGLL11Xktd4ifwAZDSoNs8hKwROCcXamo=
|
||||
</data>
|
||||
</dict>
|
||||
<key>CDVBarcodeScanner.bundle/torch.png</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
mYWzuFJCMsJIhwSNCTbYr/pw8d0=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
YBOo9aq0DkdCyPDUfovzqb28RDxhETooGasgESTO7h8=
|
||||
</data>
|
||||
</dict>
|
||||
<key>CDVBarcodeScanner.bundle/torch@2x.png</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
CVe1Jr1OtHA5BjC37Jmll1AI9VA=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
ZJjK832+YjToJzjslWS6RFl3QAwpQ4P6Zu/+nftv9Os=
|
||||
</data>
|
||||
</dict>
|
||||
<key>CDVBarcodeScanner.bundle/torch@3x.png</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
oh3qPwRm+DuBEovNszjn/0P9z1U=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
+atwPqV7gjdNiqOUmw7i2B/yfFZFh+BVUEXDVKRMVP8=
|
||||
</data>
|
||||
</dict>
|
||||
<key>CDVLaunchScreen.storyboardc/01J-lp-oVM-view-Ze5-6b-2t3.nib</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
cGgCbc6ETNRF2SLoNf6vNN3sIoI=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
vSAO3aC8ryNSbUWEsmoHHpY3dIADWquBQb/KuSN2mX0=
|
||||
</data>
|
||||
</dict>
|
||||
<key>CDVLaunchScreen.storyboardc/Info.plist</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
n2t8gsDpfE6XkhG31p7IQJRxTxU=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
HyVdXMU7Ux4/KalAao30mpWOK/lEPT4gvYN09wf31cg=
|
||||
</data>
|
||||
</dict>
|
||||
<key>CDVLaunchScreen.storyboardc/UIViewController-01J-lp-oVM.nib</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
atrQXdIENkUPmUuUhovhDisCyx8=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
oa690xI2DmbE8mcaYW9KUjgOCbZEfCi2JnuZD0gW7Gs=
|
||||
</data>
|
||||
</dict>
|
||||
<key>CDVNotification.bundle/beep.wav</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
/kSUVvLLJcbtfXnxFEolil3/NRk=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
KfYd4hFlyPwinBGKi4ruYae1MyeQ2TKrPJvIngKdC38=
|
||||
</data>
|
||||
</dict>
|
||||
<key>LaunchImage-568h@2x.png</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
SSQaBzC8MgJWeN4IXrktab76oA0=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
6Sr8Jt/Y3s+nfYBOHJdDIMtmTtSl/YJmjSwV7Cg6XYc=
|
||||
</data>
|
||||
</dict>
|
||||
<key>LaunchImage-700-568h@2x.png</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
SSQaBzC8MgJWeN4IXrktab76oA0=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
6Sr8Jt/Y3s+nfYBOHJdDIMtmTtSl/YJmjSwV7Cg6XYc=
|
||||
</data>
|
||||
</dict>
|
||||
<key>LaunchImage-700@2x.png</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
qVxPqkcU+afzN+KfIxv8az4333A=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
yb8AiROFpHIyjWxey5In20gAVMui6Bk7ZAU4GqSYjkw=
|
||||
</data>
|
||||
</dict>
|
||||
<key>LaunchImage-800-667h@2x.png</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
KvWMTMHOVs4HE1Y5ANKMInJjb0g=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
w/e6FQ1tewAjg/u9l6VI5fQfvCkyXYZPerlELKAvPmo=
|
||||
</data>
|
||||
</dict>
|
||||
<key>LaunchImage-800-Landscape-736h@3x.png</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
0DF7oF/7u8/6oPBlr0iKVPwOTLQ=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
DO5RzCTwPjxMHiXXXLiirdwNmLeIoyJ9JxWEaRDA5NA=
|
||||
</data>
|
||||
</dict>
|
||||
<key>LaunchImage-800-Portrait-736h@3x.png</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
GYTtM/NySuwN4RG2xYrkIZKJBpE=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
C/zTY5pQ2JvhG3YSY+cfWiLeQjXr8PZspYGB5zOP6iU=
|
||||
</data>
|
||||
</dict>
|
||||
<key>LaunchImage.png</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
YoZtszKfAdealzoQT3ofuk1FLDw=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
+uHg9nDkzhowYVDkfRWp+727JZ0on9puKCSdbMn/F3s=
|
||||
</data>
|
||||
</dict>
|
||||
<key>LaunchImage@2x.png</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
qVxPqkcU+afzN+KfIxv8az4333A=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
yb8AiROFpHIyjWxey5In20gAVMui6Bk7ZAU4GqSYjkw=
|
||||
</data>
|
||||
</dict>
|
||||
<key>MainViewController.nib</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
bbN4dnJsnBrT9nROH9TEMkilHxw=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
GmUpoJXBpSKgwAepgwaKZ2rZXsgvZnuw9205P9mb6VY=
|
||||
</data>
|
||||
</dict>
|
||||
<key>config.xml</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
unFNwF63O+6anK87PeMbaFCR8V0=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
hWlx6IWET2ww1IJFvKHo0eFw+/WXFuzU69V3GbDRyBU=
|
||||
</data>
|
||||
</dict>
|
||||
<key>embedded.mobileprovision</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
j652HcSaeZxmyWBet/OL2KL9cIY=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
IROqZ6LJ0qZJ1kTGCq9+QiUQq3puZn75SrZE/Jwmpm8=
|
||||
</data>
|
||||
</dict>
|
||||
<key>scannerOverlay.nib</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
V1DFXWuoKAomSwP4kxINb5/oELM=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
h6oatrY17pzSxCkSENEjdcVEvH0Ow161/FyT2LF+tiQ=
|
||||
</data>
|
||||
</dict>
|
||||
<key>www/assets/Helvetica Neue LT Std Bold.otf</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
n61NzoroAqXNIutGX6ercLD7EP8=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
2T+9RT/uz4TmcIxc0kMZm9Fz4PX1Sq/DtB4O4PPGbD0=
|
||||
</data>
|
||||
</dict>
|
||||
<key>www/assets/Helvetica Neue LT Std Light.otf</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
qrsOMhtHk4hMAur2zUh0rLNjMa4=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
OrCzv0/aq7pEAmhEFGSkIHDprbZsiUKpIk4v6s8dOmE=
|
||||
</data>
|
||||
</dict>
|
||||
<key>www/assets/Helvetica Neue LT Std Medium.otf</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
bRYYd10Eani6jBLUngUxEcCc9cg=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
gtDyDSL+CVGZFpIf9y0P3I+lagSc1nw7eZatEad8Az0=
|
||||
</data>
|
||||
</dict>
|
||||
<key>www/assets/Jaapokki.otf</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
TDu/soEyqTGg3cu9MwiZJjullwQ=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
z4Q/PlKtp7SRGBbwi5HhtN1ehX+o914p0AyZ6Oh2zKE=
|
||||
</data>
|
||||
</dict>
|
||||
<key>www/assets/check.png</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
4hfuKCFR5aOJC88qCYicSUJimrY=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
ru51mI/55Uvvqqc7hUxPePI74fG2DliVCdmwqRuEXA0=
|
||||
</data>
|
||||
</dict>
|
||||
<key>www/assets/sync.png</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
KBRC2d/rQd71mdQNBIUtG1ak5DQ=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
u/PFQC0exjOCIWobs/aNNcgt9FkqEPHHZB9u4VDwX18=
|
||||
</data>
|
||||
</dict>
|
||||
<key>www/bundle.css</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
4W5mNZ41LwcXKQDbKkmNlJT0yeM=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
9YWjj+MK1ouOU0icdElj8Ja3xPlK9IN2Nr18fF328Wc=
|
||||
</data>
|
||||
</dict>
|
||||
<key>www/cordova-js-src/exec.js</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
3QDPaUQrAr8Wq2XcQhqcl8DLabQ=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
3k+JZ8ZeHITt5+/EQNMxMv9o6gJ7PJ7TdGiLTUKTJlU=
|
||||
</data>
|
||||
</dict>
|
||||
<key>www/cordova-js-src/platform.js</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
ujxMgcZCzzuK4VAjaNIfsORGeNU=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
S9540sctUW+dAAN5RwT1Z2yqrUaLkOatC8izY2Pe4uA=
|
||||
</data>
|
||||
</dict>
|
||||
<key>www/cordova-js-src/plugin/ios/console.js</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
QiM8MHQKHSj59wvBt/HHviQ0nms=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
KW7Ld8hLblt9xwJYLxr8zUd7zWlelJFvhG4BneBhcsc=
|
||||
</data>
|
||||
</dict>
|
||||
<key>www/cordova-js-src/plugin/ios/logger.js</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
doSoID4yQ7Z8GrTg9sMfeIjMlDU=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
NtwIycT/TLukZ1w2dwy7zov83AF/eUvKVLMOhAsQmMA=
|
||||
</data>
|
||||
</dict>
|
||||
<key>www/cordova.js</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
OOBAQp461BbsIcoQAkK7OFzt7Rs=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
fyHwzMV13VURA7gBrkMTpu06C751vkn6ni+DJujr4Y0=
|
||||
</data>
|
||||
</dict>
|
||||
<key>www/cordova_plugins.js</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
TolBHTMpB+WYi8rLQ4jogTOg5lg=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
5PPEMfHZ2pGA4JA5AcytAaRr9bNyA09fpPDFEdYPR2E=
|
||||
</data>
|
||||
</dict>
|
||||
<key>www/index.html</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
xI1r5K+qW+3y0tBXhrZWvmaLiGI=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
zLjJB63jC9KIB0c8/f8TLPxvSUlcI/QuBSBnnXQZy2E=
|
||||
</data>
|
||||
</dict>
|
||||
<key>www/main.js</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
DnaNaqA/G7juq8+ZK4sGogUAtco=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
jYGov5Cw2wOCIWC8XIOrQRm1h7UMwgjCO1NWN+76hRg=
|
||||
</data>
|
||||
</dict>
|
||||
<key>www/plugins/cordova-plugin-camera/www/Camera.js</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
/Tl12sGFo/UZbPqnupaaV0Hg0vU=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
/DpMZq7FrbVwiAPbYjr190ea8NHGPLsnbwbi8KjR3Ws=
|
||||
</data>
|
||||
</dict>
|
||||
<key>www/plugins/cordova-plugin-camera/www/CameraConstants.js</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
v2sA7ZeHf4g2R4hremuTEjIZPUY=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
wkl+aO8lHNbXrlvHUVFvZ3XWmxJ5kE3QH9Cb1DKW2i4=
|
||||
</data>
|
||||
</dict>
|
||||
<key>www/plugins/cordova-plugin-camera/www/CameraPopoverOptions.js</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
DFjhGlevsoLz/p7Ls+/7LBfept8=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
rQlfvrBqSocgsPtkPqzytzsYymwS7jJHaaatC6XG0Fo=
|
||||
</data>
|
||||
</dict>
|
||||
<key>www/plugins/cordova-plugin-camera/www/ios/CameraPopoverHandle.js</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
koRc23xo1lElHctG97l7ayo1asw=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
9IOEZkfMOskH8iiS25t1CoLQOEpPsEj4j/xUN5HLHBM=
|
||||
</data>
|
||||
</dict>
|
||||
<key>www/plugins/cordova-plugin-dialogs/www/notification.js</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
7V/xaRgAhGL52hL5xmBfyAq3OwQ=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
ynwLIwQ6aHh9kgdzGY+d1f1tHFZMZseKf+UsSRC5nTo=
|
||||
</data>
|
||||
</dict>
|
||||
<key>www/plugins/phonegap-plugin-barcodescanner/www/barcodescanner.js</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
haJXivDxwB2BCbPcMrODx5ojVqQ=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
ipGt28hFN1NR8Xi0CUelPM2biucyXPZ5M3iiW/KXQa4=
|
||||
</data>
|
||||
</dict>
|
||||
<key>www/plugins/phonegap-plugin-local-notification/www/notification.js</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
cG1ISVy3uE5XwrkNocroK/TUKkk=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
aq60rVDYlhq3ADRXI3D0uI2PTHL9RtKaRv2N8TnIUck=
|
||||
</data>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>rules</key>
|
||||
<dict>
|
||||
<key>^</key>
|
||||
<true/>
|
||||
<key>^.*\.lproj/</key>
|
||||
<dict>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>1000</real>
|
||||
</dict>
|
||||
<key>^.*\.lproj/locversion.plist$</key>
|
||||
<dict>
|
||||
<key>omit</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>1100</real>
|
||||
</dict>
|
||||
<key>^Base\.lproj/</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>1010</real>
|
||||
</dict>
|
||||
<key>^version.plist$</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>rules2</key>
|
||||
<dict>
|
||||
<key>.*\.dSYM($|/)</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>11</real>
|
||||
</dict>
|
||||
<key>^</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>20</real>
|
||||
</dict>
|
||||
<key>^(.*/)?\.DS_Store$</key>
|
||||
<dict>
|
||||
<key>omit</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>2000</real>
|
||||
</dict>
|
||||
<key>^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/</key>
|
||||
<dict>
|
||||
<key>nested</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>10</real>
|
||||
</dict>
|
||||
<key>^.*</key>
|
||||
<true/>
|
||||
<key>^.*\.lproj/</key>
|
||||
<dict>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>1000</real>
|
||||
</dict>
|
||||
<key>^.*\.lproj/locversion.plist$</key>
|
||||
<dict>
|
||||
<key>omit</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>1100</real>
|
||||
</dict>
|
||||
<key>^Base\.lproj/</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>1010</real>
|
||||
</dict>
|
||||
<key>^Info\.plist$</key>
|
||||
<dict>
|
||||
<key>omit</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>20</real>
|
||||
</dict>
|
||||
<key>^PkgInfo$</key>
|
||||
<dict>
|
||||
<key>omit</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>20</real>
|
||||
</dict>
|
||||
<key>^[^/]+$</key>
|
||||
<dict>
|
||||
<key>nested</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>10</real>
|
||||
</dict>
|
||||
<key>^embedded\.provisionprofile$</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>20</real>
|
||||
</dict>
|
||||
<key>^version\.plist$</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>20</real>
|
||||
</dict>
|
||||
</dict>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -0,0 +1,69 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<widget id="io.nicco.app.fotm.cordova" version="1.0.0" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
|
||||
<feature name="LocalStorage">
|
||||
<param name="ios-package" value="CDVLocalStorage" />
|
||||
</feature>
|
||||
<feature name="Console">
|
||||
<param name="ios-package" value="CDVLogger" />
|
||||
<param name="onload" value="true" />
|
||||
</feature>
|
||||
<feature name="HandleOpenUrl">
|
||||
<param name="ios-package" value="CDVHandleOpenURL" />
|
||||
<param name="onload" value="true" />
|
||||
</feature>
|
||||
<feature name="IntentAndNavigationFilter">
|
||||
<param name="ios-package" value="CDVIntentAndNavigationFilter" />
|
||||
<param name="onload" value="true" />
|
||||
</feature>
|
||||
<feature name="GestureHandler">
|
||||
<param name="ios-package" value="CDVGestureHandler" />
|
||||
<param name="onload" value="true" />
|
||||
</feature>
|
||||
<feature name="Camera">
|
||||
<param name="ios-package" value="CDVCamera" />
|
||||
</feature>
|
||||
<feature name="BarcodeScanner">
|
||||
<param name="ios-package" value="CDVBarcodeScanner" />
|
||||
</feature>
|
||||
<feature name="LocalNotifications">
|
||||
<param name="ios-package" value="W3CLocalNotifications" />
|
||||
</feature>
|
||||
<feature name="Notification">
|
||||
<param name="ios-package" value="CDVNotification" />
|
||||
</feature>
|
||||
<name>HelloCordova</name>
|
||||
<description>
|
||||
A sample Apache Cordova application that responds to the deviceready event.
|
||||
</description>
|
||||
<author email="dev@cordova.apache.org" href="http://cordova.io">
|
||||
Apache Cordova Team
|
||||
</author>
|
||||
<content src="index.html" />
|
||||
<access origin="*" />
|
||||
<allow-intent href="http://*/*" />
|
||||
<allow-intent href="https://*/*" />
|
||||
<allow-intent href="tel:*" />
|
||||
<allow-intent href="sms:*" />
|
||||
<allow-intent href="mailto:*" />
|
||||
<allow-intent href="geo:*" />
|
||||
<edit-config file="*-Info.plist" mode="merge" target="NSCameraUsageDescription">
|
||||
<string>need camera access to take pictures</string>
|
||||
</edit-config>
|
||||
<allow-intent href="itms:*" />
|
||||
<allow-intent href="itms-apps:*" />
|
||||
<preference name="AllowInlineMediaPlayback" value="false" />
|
||||
<preference name="BackupWebStorage" value="cloud" />
|
||||
<preference name="DisallowOverscroll" value="false" />
|
||||
<preference name="EnableViewportScale" value="false" />
|
||||
<preference name="KeyboardDisplayRequiresUserAction" value="true" />
|
||||
<preference name="MediaPlaybackRequiresUserAction" value="false" />
|
||||
<preference name="SuppressesIncrementalRendering" value="false" />
|
||||
<preference name="SuppressesLongPressGesture" value="false" />
|
||||
<preference name="Suppresses3DTouchGesture" value="false" />
|
||||
<preference name="GapBetweenPages" value="0" />
|
||||
<preference name="PageLength" value="0" />
|
||||
<preference name="PaginationBreakingMode" value="page" />
|
||||
<preference name="PaginationMode" value="unpaginated" />
|
||||
<preference name="CameraUsesGeolocation" value="false" />
|
||||
<preference name="FullScreen" value="true" />
|
||||
</widget>
|
||||
|
After Width: | Height: | Size: 3.0 KiB |
|
After Width: | Height: | Size: 6.1 KiB |
@@ -0,0 +1,129 @@
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
html,
|
||||
body {
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
overflow: hidden;
|
||||
}
|
||||
img {
|
||||
object-fit: contain;
|
||||
}
|
||||
.spinning {
|
||||
animation: rotation 2s infinite linear;
|
||||
}
|
||||
@keyframes rotation {
|
||||
from {
|
||||
-webkit-transform: rotate(0deg);
|
||||
}
|
||||
to {
|
||||
-webkit-transform: rotate(359deg);
|
||||
}
|
||||
}
|
||||
.fill {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
.column {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
.row {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
}
|
||||
.center {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
.abs {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
.button {
|
||||
border: 1px solid #000;
|
||||
height: 45px;
|
||||
width: 180px;
|
||||
border-radius: 50px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
.bold {
|
||||
font-weight: bold;
|
||||
}
|
||||
#app {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
font-family: 'Helvetica Neue';
|
||||
}
|
||||
#app .bg {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
z-index: 0;
|
||||
background-image: linear-gradient(135deg, #6FABFF, #E4FF71);
|
||||
}
|
||||
#app .content {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
z-index: 1;
|
||||
}
|
||||
.Logo {
|
||||
position: relative;
|
||||
font-family: 'Jaapokki';
|
||||
}
|
||||
.Logo .title {
|
||||
font-size: 30px;
|
||||
}
|
||||
.Logo .badge {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
position: absolute;
|
||||
right: -20px;
|
||||
top: -5px;
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
background-color: #f00;
|
||||
border-radius: 20px;
|
||||
}
|
||||
.Logo .badge div {
|
||||
font-size: 10px;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Jaapokki';
|
||||
src: url(assets/Jaapokki.otf);
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Helvetiva Neue';
|
||||
font-weight: lighter;
|
||||
font-style: normal;
|
||||
src: url("assets/Helvetica Neue LT Std Light.otf") format('opentype');
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Helvetiva Neue';
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
src: url("assets/Helvetica Neue LT Std Medium.otf") format('opentype');
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Helvetiva Neue';
|
||||
font-weight: bold;
|
||||
font-style: normal;
|
||||
src: url("assets/Helvetica Neue LT Std Bold.otf") format('opentype');
|
||||
}
|
||||
|
||||
@@ -0,0 +1,262 @@
|
||||
/*
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
*/
|
||||
|
||||
/*global require, module, atob, document */
|
||||
|
||||
/**
|
||||
* Creates a gap bridge iframe used to notify the native code about queued
|
||||
* commands.
|
||||
*/
|
||||
var cordova = require('cordova'),
|
||||
utils = require('cordova/utils'),
|
||||
base64 = require('cordova/base64'),
|
||||
execIframe,
|
||||
commandQueue = [], // Contains pending JS->Native messages.
|
||||
isInContextOfEvalJs = 0,
|
||||
failSafeTimerId = 0;
|
||||
|
||||
function massageArgsJsToNative(args) {
|
||||
if (!args || utils.typeName(args) != 'Array') {
|
||||
return args;
|
||||
}
|
||||
var ret = [];
|
||||
args.forEach(function(arg, i) {
|
||||
if (utils.typeName(arg) == 'ArrayBuffer') {
|
||||
ret.push({
|
||||
'CDVType': 'ArrayBuffer',
|
||||
'data': base64.fromArrayBuffer(arg)
|
||||
});
|
||||
} else {
|
||||
ret.push(arg);
|
||||
}
|
||||
});
|
||||
return ret;
|
||||
}
|
||||
|
||||
function massageMessageNativeToJs(message) {
|
||||
if (message.CDVType == 'ArrayBuffer') {
|
||||
var stringToArrayBuffer = function(str) {
|
||||
var ret = new Uint8Array(str.length);
|
||||
for (var i = 0; i < str.length; i++) {
|
||||
ret[i] = str.charCodeAt(i);
|
||||
}
|
||||
return ret.buffer;
|
||||
};
|
||||
var base64ToArrayBuffer = function(b64) {
|
||||
return stringToArrayBuffer(atob(b64));
|
||||
};
|
||||
message = base64ToArrayBuffer(message.data);
|
||||
}
|
||||
return message;
|
||||
}
|
||||
|
||||
function convertMessageToArgsNativeToJs(message) {
|
||||
var args = [];
|
||||
if (!message || !message.hasOwnProperty('CDVType')) {
|
||||
args.push(message);
|
||||
} else if (message.CDVType == 'MultiPart') {
|
||||
message.messages.forEach(function(e) {
|
||||
args.push(massageMessageNativeToJs(e));
|
||||
});
|
||||
} else {
|
||||
args.push(massageMessageNativeToJs(message));
|
||||
}
|
||||
return args;
|
||||
}
|
||||
|
||||
function iOSExec() {
|
||||
|
||||
var successCallback, failCallback, service, action, actionArgs;
|
||||
var callbackId = null;
|
||||
if (typeof arguments[0] !== 'string') {
|
||||
// FORMAT ONE
|
||||
successCallback = arguments[0];
|
||||
failCallback = arguments[1];
|
||||
service = arguments[2];
|
||||
action = arguments[3];
|
||||
actionArgs = arguments[4];
|
||||
|
||||
// Since we need to maintain backwards compatibility, we have to pass
|
||||
// an invalid callbackId even if no callback was provided since plugins
|
||||
// will be expecting it. The Cordova.exec() implementation allocates
|
||||
// an invalid callbackId and passes it even if no callbacks were given.
|
||||
callbackId = 'INVALID';
|
||||
} else {
|
||||
throw new Error('The old format of this exec call has been removed (deprecated since 2.1). Change to: ' +
|
||||
'cordova.exec(null, null, \'Service\', \'action\', [ arg1, arg2 ]);'
|
||||
);
|
||||
}
|
||||
|
||||
// If actionArgs is not provided, default to an empty array
|
||||
actionArgs = actionArgs || [];
|
||||
|
||||
// Register the callbacks and add the callbackId to the positional
|
||||
// arguments if given.
|
||||
if (successCallback || failCallback) {
|
||||
callbackId = service + cordova.callbackId++;
|
||||
cordova.callbacks[callbackId] =
|
||||
{success:successCallback, fail:failCallback};
|
||||
}
|
||||
|
||||
actionArgs = massageArgsJsToNative(actionArgs);
|
||||
|
||||
var command = [callbackId, service, action, actionArgs];
|
||||
|
||||
// Stringify and queue the command. We stringify to command now to
|
||||
// effectively clone the command arguments in case they are mutated before
|
||||
// the command is executed.
|
||||
commandQueue.push(JSON.stringify(command));
|
||||
|
||||
// If we're in the context of a stringByEvaluatingJavaScriptFromString call,
|
||||
// then the queue will be flushed when it returns; no need for a poke.
|
||||
// Also, if there is already a command in the queue, then we've already
|
||||
// poked the native side, so there is no reason to do so again.
|
||||
if (!isInContextOfEvalJs && commandQueue.length == 1) {
|
||||
pokeNative();
|
||||
}
|
||||
}
|
||||
|
||||
// CB-10530
|
||||
function proxyChanged() {
|
||||
var cexec = cordovaExec();
|
||||
|
||||
return (execProxy !== cexec && // proxy objects are different
|
||||
iOSExec !== cexec // proxy object is not the current iOSExec
|
||||
);
|
||||
}
|
||||
|
||||
// CB-10106
|
||||
function handleBridgeChange() {
|
||||
if (proxyChanged()) {
|
||||
var commandString = commandQueue.shift();
|
||||
while(commandString) {
|
||||
var command = JSON.parse(commandString);
|
||||
var callbackId = command[0];
|
||||
var service = command[1];
|
||||
var action = command[2];
|
||||
var actionArgs = command[3];
|
||||
var callbacks = cordova.callbacks[callbackId] || {};
|
||||
|
||||
execProxy(callbacks.success, callbacks.fail, service, action, actionArgs);
|
||||
|
||||
commandString = commandQueue.shift();
|
||||
};
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
function pokeNative() {
|
||||
// CB-5488 - Don't attempt to create iframe before document.body is available.
|
||||
if (!document.body) {
|
||||
setTimeout(pokeNative);
|
||||
return;
|
||||
}
|
||||
|
||||
// Check if they've removed it from the DOM, and put it back if so.
|
||||
if (execIframe && execIframe.contentWindow) {
|
||||
execIframe.contentWindow.location = 'gap://ready';
|
||||
} else {
|
||||
execIframe = document.createElement('iframe');
|
||||
execIframe.style.display = 'none';
|
||||
execIframe.src = 'gap://ready';
|
||||
document.body.appendChild(execIframe);
|
||||
}
|
||||
// Use a timer to protect against iframe being unloaded during the poke (CB-7735).
|
||||
// This makes the bridge ~ 7% slower, but works around the poke getting lost
|
||||
// when the iframe is removed from the DOM.
|
||||
// An onunload listener could be used in the case where the iframe has just been
|
||||
// created, but since unload events fire only once, it doesn't work in the normal
|
||||
// case of iframe reuse (where unload will have already fired due to the attempted
|
||||
// navigation of the page).
|
||||
failSafeTimerId = setTimeout(function() {
|
||||
if (commandQueue.length) {
|
||||
// CB-10106 - flush the queue on bridge change
|
||||
if (!handleBridgeChange()) {
|
||||
pokeNative();
|
||||
}
|
||||
}
|
||||
}, 50); // Making this > 0 improves performance (marginally) in the normal case (where it doesn't fire).
|
||||
}
|
||||
|
||||
iOSExec.nativeFetchMessages = function() {
|
||||
// Stop listing for window detatch once native side confirms poke.
|
||||
if (failSafeTimerId) {
|
||||
clearTimeout(failSafeTimerId);
|
||||
failSafeTimerId = 0;
|
||||
}
|
||||
// Each entry in commandQueue is a JSON string already.
|
||||
if (!commandQueue.length) {
|
||||
return '';
|
||||
}
|
||||
var json = '[' + commandQueue.join(',') + ']';
|
||||
commandQueue.length = 0;
|
||||
return json;
|
||||
};
|
||||
|
||||
iOSExec.nativeCallback = function(callbackId, status, message, keepCallback, debug) {
|
||||
return iOSExec.nativeEvalAndFetch(function() {
|
||||
var success = status === 0 || status === 1;
|
||||
var args = convertMessageToArgsNativeToJs(message);
|
||||
function nc2() {
|
||||
cordova.callbackFromNative(callbackId, success, status, args, keepCallback);
|
||||
}
|
||||
setTimeout(nc2, 0);
|
||||
});
|
||||
};
|
||||
|
||||
iOSExec.nativeEvalAndFetch = function(func) {
|
||||
// This shouldn't be nested, but better to be safe.
|
||||
isInContextOfEvalJs++;
|
||||
try {
|
||||
func();
|
||||
return iOSExec.nativeFetchMessages();
|
||||
} finally {
|
||||
isInContextOfEvalJs--;
|
||||
}
|
||||
};
|
||||
|
||||
// Proxy the exec for bridge changes. See CB-10106
|
||||
|
||||
function cordovaExec() {
|
||||
var cexec = require('cordova/exec');
|
||||
var cexec_valid = (typeof cexec.nativeFetchMessages === 'function') && (typeof cexec.nativeEvalAndFetch === 'function') && (typeof cexec.nativeCallback === 'function');
|
||||
return (cexec_valid && execProxy !== cexec)? cexec : iOSExec;
|
||||
}
|
||||
|
||||
function execProxy() {
|
||||
cordovaExec().apply(null, arguments);
|
||||
};
|
||||
|
||||
execProxy.nativeFetchMessages = function() {
|
||||
return cordovaExec().nativeFetchMessages.apply(null, arguments);
|
||||
};
|
||||
|
||||
execProxy.nativeEvalAndFetch = function() {
|
||||
return cordovaExec().nativeEvalAndFetch.apply(null, arguments);
|
||||
};
|
||||
|
||||
execProxy.nativeCallback = function() {
|
||||
return cordovaExec().nativeCallback.apply(null, arguments);
|
||||
};
|
||||
|
||||
module.exports = execProxy;
|
||||
@@ -0,0 +1,31 @@
|
||||
/*
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
*/
|
||||
|
||||
module.exports = {
|
||||
id: 'ios',
|
||||
bootstrap: function () {
|
||||
// Attach the console polyfill that is iOS-only to window.console
|
||||
// see the file under plugin/ios/console.js
|
||||
require('cordova/modulemapper').clobbers('cordova/plugin/ios/console', 'window.console');
|
||||
|
||||
require('cordova/channel').onNativeReady.fire();
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,186 @@
|
||||
/*
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
*/
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
var logger = require('cordova/plugin/ios/logger');
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// object that we're exporting
|
||||
//------------------------------------------------------------------------------
|
||||
var console = module.exports;
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// copy of the original console object
|
||||
//------------------------------------------------------------------------------
|
||||
var WinConsole = window.console;
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// whether to use the logger
|
||||
//------------------------------------------------------------------------------
|
||||
var UseLogger = false;
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Timers
|
||||
//------------------------------------------------------------------------------
|
||||
var Timers = {};
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// used for unimplemented methods
|
||||
//------------------------------------------------------------------------------
|
||||
function noop() {}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// used for unimplemented methods
|
||||
//------------------------------------------------------------------------------
|
||||
console.useLogger = function (value) {
|
||||
if (arguments.length) UseLogger = !!value;
|
||||
|
||||
if (UseLogger) {
|
||||
if (logger.useConsole()) {
|
||||
throw new Error("console and logger are too intertwingly");
|
||||
}
|
||||
}
|
||||
|
||||
return UseLogger;
|
||||
};
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
console.log = function() {
|
||||
if (logger.useConsole()) return;
|
||||
logger.log.apply(logger, [].slice.call(arguments));
|
||||
};
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
console.error = function() {
|
||||
if (logger.useConsole()) return;
|
||||
logger.error.apply(logger, [].slice.call(arguments));
|
||||
};
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
console.warn = function() {
|
||||
if (logger.useConsole()) return;
|
||||
logger.warn.apply(logger, [].slice.call(arguments));
|
||||
};
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
console.info = function() {
|
||||
if (logger.useConsole()) return;
|
||||
logger.info.apply(logger, [].slice.call(arguments));
|
||||
};
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
console.debug = function() {
|
||||
if (logger.useConsole()) return;
|
||||
logger.debug.apply(logger, [].slice.call(arguments));
|
||||
};
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
console.assert = function(expression) {
|
||||
if (expression) return;
|
||||
|
||||
var message = logger.format.apply(logger.format, [].slice.call(arguments, 1));
|
||||
console.log("ASSERT: " + message);
|
||||
};
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
console.clear = function() {};
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
console.dir = function(object) {
|
||||
console.log("%o", object);
|
||||
};
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
console.dirxml = function(node) {
|
||||
console.log(node.innerHTML);
|
||||
};
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
console.trace = noop;
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
console.group = console.log;
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
console.groupCollapsed = console.log;
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
console.groupEnd = noop;
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
console.time = function(name) {
|
||||
Timers[name] = new Date().valueOf();
|
||||
};
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
console.timeEnd = function(name) {
|
||||
var timeStart = Timers[name];
|
||||
if (!timeStart) {
|
||||
console.warn("unknown timer: " + name);
|
||||
return;
|
||||
}
|
||||
|
||||
var timeElapsed = new Date().valueOf() - timeStart;
|
||||
console.log(name + ": " + timeElapsed + "ms");
|
||||
};
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
console.timeStamp = noop;
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
console.profile = noop;
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
console.profileEnd = noop;
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
console.count = noop;
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
console.exception = console.log;
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
console.table = function(data, columns) {
|
||||
console.log("%o", data);
|
||||
};
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// return a new function that calls both functions passed as args
|
||||
//------------------------------------------------------------------------------
|
||||
function wrappedOrigCall(orgFunc, newFunc) {
|
||||
return function() {
|
||||
var args = [].slice.call(arguments);
|
||||
try { orgFunc.apply(WinConsole, args); } catch (e) {}
|
||||
try { newFunc.apply(console, args); } catch (e) {}
|
||||
};
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// For every function that exists in the original console object, that
|
||||
// also exists in the new console object, wrap the new console method
|
||||
// with one that calls both
|
||||
//------------------------------------------------------------------------------
|
||||
for (var key in console) {
|
||||
if (typeof WinConsole[key] == "function") {
|
||||
console[key] = wrappedOrigCall(WinConsole[key], console[key]);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,354 @@
|
||||
/*
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
*/
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// The logger module exports the following properties/functions:
|
||||
//
|
||||
// LOG - constant for the level LOG
|
||||
// ERROR - constant for the level ERROR
|
||||
// WARN - constant for the level WARN
|
||||
// INFO - constant for the level INFO
|
||||
// DEBUG - constant for the level DEBUG
|
||||
// logLevel() - returns current log level
|
||||
// logLevel(value) - sets and returns a new log level
|
||||
// useConsole() - returns whether logger is using console
|
||||
// useConsole(value) - sets and returns whether logger is using console
|
||||
// log(message,...) - logs a message at level LOG
|
||||
// error(message,...) - logs a message at level ERROR
|
||||
// warn(message,...) - logs a message at level WARN
|
||||
// info(message,...) - logs a message at level INFO
|
||||
// debug(message,...) - logs a message at level DEBUG
|
||||
// logLevel(level,message,...) - logs a message specified level
|
||||
//
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
var logger = exports;
|
||||
|
||||
var exec = require('cordova/exec');
|
||||
|
||||
var UseConsole = false;
|
||||
var UseLogger = true;
|
||||
var Queued = [];
|
||||
var DeviceReady = false;
|
||||
var CurrentLevel;
|
||||
|
||||
var originalConsole = console;
|
||||
|
||||
/**
|
||||
* Logging levels
|
||||
*/
|
||||
|
||||
var Levels = [
|
||||
"LOG",
|
||||
"ERROR",
|
||||
"WARN",
|
||||
"INFO",
|
||||
"DEBUG"
|
||||
];
|
||||
|
||||
/*
|
||||
* add the logging levels to the logger object and
|
||||
* to a separate levelsMap object for testing
|
||||
*/
|
||||
|
||||
var LevelsMap = {};
|
||||
for (var i=0; i<Levels.length; i++) {
|
||||
var level = Levels[i];
|
||||
LevelsMap[level] = i;
|
||||
logger[level] = level;
|
||||
}
|
||||
|
||||
CurrentLevel = LevelsMap.WARN;
|
||||
|
||||
/**
|
||||
* Getter/Setter for the logging level
|
||||
*
|
||||
* Returns the current logging level.
|
||||
*
|
||||
* When a value is passed, sets the logging level to that value.
|
||||
* The values should be one of the following constants:
|
||||
* logger.LOG
|
||||
* logger.ERROR
|
||||
* logger.WARN
|
||||
* logger.INFO
|
||||
* logger.DEBUG
|
||||
*
|
||||
* The value used determines which messages get printed. The logging
|
||||
* values above are in order, and only messages logged at the logging
|
||||
* level or above will actually be displayed to the user. E.g., the
|
||||
* default level is WARN, so only messages logged with LOG, ERROR, or
|
||||
* WARN will be displayed; INFO and DEBUG messages will be ignored.
|
||||
*/
|
||||
logger.level = function (value) {
|
||||
if (arguments.length) {
|
||||
if (LevelsMap[value] === null) {
|
||||
throw new Error("invalid logging level: " + value);
|
||||
}
|
||||
CurrentLevel = LevelsMap[value];
|
||||
}
|
||||
|
||||
return Levels[CurrentLevel];
|
||||
};
|
||||
|
||||
/**
|
||||
* Getter/Setter for the useConsole functionality
|
||||
*
|
||||
* When useConsole is true, the logger will log via the
|
||||
* browser 'console' object.
|
||||
*/
|
||||
logger.useConsole = function (value) {
|
||||
if (arguments.length) UseConsole = !!value;
|
||||
|
||||
if (UseConsole) {
|
||||
if (typeof console == "undefined") {
|
||||
throw new Error("global console object is not defined");
|
||||
}
|
||||
|
||||
if (typeof console.log != "function") {
|
||||
throw new Error("global console object does not have a log function");
|
||||
}
|
||||
|
||||
if (typeof console.useLogger == "function") {
|
||||
if (console.useLogger()) {
|
||||
throw new Error("console and logger are too intertwingly");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return UseConsole;
|
||||
};
|
||||
|
||||
/**
|
||||
* Getter/Setter for the useLogger functionality
|
||||
*
|
||||
* When useLogger is true, the logger will log via the
|
||||
* native Logger plugin.
|
||||
*/
|
||||
logger.useLogger = function (value) {
|
||||
// Enforce boolean
|
||||
if (arguments.length) UseLogger = !!value;
|
||||
return UseLogger;
|
||||
};
|
||||
|
||||
/**
|
||||
* Logs a message at the LOG level.
|
||||
*
|
||||
* Parameters passed after message are used applied to
|
||||
* the message with utils.format()
|
||||
*/
|
||||
logger.log = function(message) { logWithArgs("LOG", arguments); };
|
||||
|
||||
/**
|
||||
* Logs a message at the ERROR level.
|
||||
*
|
||||
* Parameters passed after message are used applied to
|
||||
* the message with utils.format()
|
||||
*/
|
||||
logger.error = function(message) { logWithArgs("ERROR", arguments); };
|
||||
|
||||
/**
|
||||
* Logs a message at the WARN level.
|
||||
*
|
||||
* Parameters passed after message are used applied to
|
||||
* the message with utils.format()
|
||||
*/
|
||||
logger.warn = function(message) { logWithArgs("WARN", arguments); };
|
||||
|
||||
/**
|
||||
* Logs a message at the INFO level.
|
||||
*
|
||||
* Parameters passed after message are used applied to
|
||||
* the message with utils.format()
|
||||
*/
|
||||
logger.info = function(message) { logWithArgs("INFO", arguments); };
|
||||
|
||||
/**
|
||||
* Logs a message at the DEBUG level.
|
||||
*
|
||||
* Parameters passed after message are used applied to
|
||||
* the message with utils.format()
|
||||
*/
|
||||
logger.debug = function(message) { logWithArgs("DEBUG", arguments); };
|
||||
|
||||
// log at the specified level with args
|
||||
function logWithArgs(level, args) {
|
||||
args = [level].concat([].slice.call(args));
|
||||
logger.logLevel.apply(logger, args);
|
||||
}
|
||||
|
||||
// return the correct formatString for an object
|
||||
function formatStringForMessage(message) {
|
||||
return (typeof message === "string") ? "" : "%o";
|
||||
}
|
||||
|
||||
/**
|
||||
* Logs a message at the specified level.
|
||||
*
|
||||
* Parameters passed after message are used applied to
|
||||
* the message with utils.format()
|
||||
*/
|
||||
logger.logLevel = function(level /* , ... */) {
|
||||
// format the message with the parameters
|
||||
var formatArgs = [].slice.call(arguments, 1);
|
||||
var fmtString = formatStringForMessage(formatArgs[0]);
|
||||
if (fmtString.length > 0){
|
||||
formatArgs.unshift(fmtString); // add formatString
|
||||
}
|
||||
|
||||
var message = logger.format.apply(logger.format, formatArgs);
|
||||
|
||||
if (LevelsMap[level] === null) {
|
||||
throw new Error("invalid logging level: " + level);
|
||||
}
|
||||
|
||||
if (LevelsMap[level] > CurrentLevel) return;
|
||||
|
||||
// queue the message if not yet at deviceready
|
||||
if (!DeviceReady && !UseConsole) {
|
||||
Queued.push([level, message]);
|
||||
return;
|
||||
}
|
||||
|
||||
// Log using the native logger if that is enabled
|
||||
if (UseLogger) {
|
||||
exec(null, null, "Console", "logLevel", [level, message]);
|
||||
}
|
||||
|
||||
// Log using the console if that is enabled
|
||||
if (UseConsole) {
|
||||
// make sure console is not using logger
|
||||
if (console.useLogger()) {
|
||||
throw new Error("console and logger are too intertwingly");
|
||||
}
|
||||
|
||||
// log to the console
|
||||
switch (level) {
|
||||
case logger.LOG: originalConsole.log(message); break;
|
||||
case logger.ERROR: originalConsole.log("ERROR: " + message); break;
|
||||
case logger.WARN: originalConsole.log("WARN: " + message); break;
|
||||
case logger.INFO: originalConsole.log("INFO: " + message); break;
|
||||
case logger.DEBUG: originalConsole.log("DEBUG: " + message); break;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Formats a string and arguments following it ala console.log()
|
||||
*
|
||||
* Any remaining arguments will be appended to the formatted string.
|
||||
*
|
||||
* for rationale, see FireBug's Console API:
|
||||
* http://getfirebug.com/wiki/index.php/Console_API
|
||||
*/
|
||||
logger.format = function(formatString, args) {
|
||||
return __format(arguments[0], [].slice.call(arguments,1)).join(' ');
|
||||
};
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
/**
|
||||
* Formats a string and arguments following it ala vsprintf()
|
||||
*
|
||||
* format chars:
|
||||
* %j - format arg as JSON
|
||||
* %o - format arg as JSON
|
||||
* %c - format arg as ''
|
||||
* %% - replace with '%'
|
||||
* any other char following % will format it's
|
||||
* arg via toString().
|
||||
*
|
||||
* Returns an array containing the formatted string and any remaining
|
||||
* arguments.
|
||||
*/
|
||||
function __format(formatString, args) {
|
||||
if (formatString === null || formatString === undefined) return [""];
|
||||
if (arguments.length == 1) return [formatString.toString()];
|
||||
|
||||
if (typeof formatString != "string")
|
||||
formatString = formatString.toString();
|
||||
|
||||
var pattern = /(.*?)%(.)(.*)/;
|
||||
var rest = formatString;
|
||||
var result = [];
|
||||
|
||||
while (args.length) {
|
||||
var match = pattern.exec(rest);
|
||||
if (!match) break;
|
||||
|
||||
var arg = args.shift();
|
||||
rest = match[3];
|
||||
result.push(match[1]);
|
||||
|
||||
if (match[2] == '%') {
|
||||
result.push('%');
|
||||
args.unshift(arg);
|
||||
continue;
|
||||
}
|
||||
|
||||
result.push(__formatted(arg, match[2]));
|
||||
}
|
||||
|
||||
result.push(rest);
|
||||
|
||||
var remainingArgs = [].slice.call(args);
|
||||
remainingArgs.unshift(result.join(''));
|
||||
return remainingArgs;
|
||||
}
|
||||
|
||||
function __formatted(object, formatChar) {
|
||||
|
||||
try {
|
||||
switch(formatChar) {
|
||||
case 'j':
|
||||
case 'o': return JSON.stringify(object);
|
||||
case 'c': return '';
|
||||
}
|
||||
}
|
||||
catch (e) {
|
||||
return "error JSON.stringify()ing argument: " + e;
|
||||
}
|
||||
|
||||
if ((object === null) || (object === undefined)) {
|
||||
return Object.prototype.toString.call(object);
|
||||
}
|
||||
|
||||
return object.toString();
|
||||
}
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// when deviceready fires, log queued messages
|
||||
logger.__onDeviceReady = function() {
|
||||
if (DeviceReady) return;
|
||||
|
||||
DeviceReady = true;
|
||||
|
||||
for (var i=0; i<Queued.length; i++) {
|
||||
var messageArgs = Queued[i];
|
||||
logger.logLevel(messageArgs[0], messageArgs[1]);
|
||||
}
|
||||
|
||||
Queued = null;
|
||||
};
|
||||
|
||||
// add a deviceready event to log queued messages
|
||||
document.addEventListener("deviceready", logger.__onDeviceReady, false);
|
||||
2432
src/cordova/platforms/ios/HelloCordova.xcarchive/Products/Applications/HelloCordova.app/www/cordova.js
vendored
Normal file
@@ -0,0 +1,70 @@
|
||||
cordova.define('cordova/plugin_list', function(require, exports, module) {
|
||||
module.exports = [
|
||||
{
|
||||
"id": "cordova-plugin-camera.Camera",
|
||||
"file": "plugins/cordova-plugin-camera/www/CameraConstants.js",
|
||||
"pluginId": "cordova-plugin-camera",
|
||||
"clobbers": [
|
||||
"Camera"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "cordova-plugin-camera.CameraPopoverOptions",
|
||||
"file": "plugins/cordova-plugin-camera/www/CameraPopoverOptions.js",
|
||||
"pluginId": "cordova-plugin-camera",
|
||||
"clobbers": [
|
||||
"CameraPopoverOptions"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "cordova-plugin-camera.camera",
|
||||
"file": "plugins/cordova-plugin-camera/www/Camera.js",
|
||||
"pluginId": "cordova-plugin-camera",
|
||||
"clobbers": [
|
||||
"navigator.camera"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "cordova-plugin-camera.CameraPopoverHandle",
|
||||
"file": "plugins/cordova-plugin-camera/www/ios/CameraPopoverHandle.js",
|
||||
"pluginId": "cordova-plugin-camera",
|
||||
"clobbers": [
|
||||
"CameraPopoverHandle"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "phonegap-plugin-barcodescanner.BarcodeScanner",
|
||||
"file": "plugins/phonegap-plugin-barcodescanner/www/barcodescanner.js",
|
||||
"pluginId": "phonegap-plugin-barcodescanner",
|
||||
"clobbers": [
|
||||
"cordova.plugins.barcodeScanner"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "phonegap-plugin-local-notification.Notification",
|
||||
"file": "plugins/phonegap-plugin-local-notification/www/notification.js",
|
||||
"pluginId": "phonegap-plugin-local-notification",
|
||||
"clobbers": [
|
||||
"Notification"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "cordova-plugin-dialogs.notification",
|
||||
"file": "plugins/cordova-plugin-dialogs/www/notification.js",
|
||||
"pluginId": "cordova-plugin-dialogs",
|
||||
"merges": [
|
||||
"navigator.notification"
|
||||
]
|
||||
}
|
||||
];
|
||||
module.exports.metadata =
|
||||
// TOP OF METADATA
|
||||
{
|
||||
"cordova-plugin-whitelist": "1.3.3",
|
||||
"cordova-plugin-camera": "4.0.3",
|
||||
"phonegap-plugin-barcodescanner": "8.0.0",
|
||||
"phonegap-plugin-local-notification": "1.0.1",
|
||||
"cordova-plugin-dialogs": "2.0.1"
|
||||
};
|
||||
// BOTTOM OF METADATA
|
||||
});
|
||||
@@ -0,0 +1,15 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<title>Basic Setup</title>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<script src="cordova.js"></script>
|
||||
<link href="bundle.css" rel="stylesheet"></head>
|
||||
|
||||
<body>
|
||||
<div id="root"></div>
|
||||
<script type="text/javascript" src="main.js"></script></body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,188 @@
|
||||
cordova.define("cordova-plugin-camera.camera", function(require, exports, module) {
|
||||
/*
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
*/
|
||||
|
||||
var argscheck = require('cordova/argscheck');
|
||||
var exec = require('cordova/exec');
|
||||
var Camera = require('./Camera');
|
||||
// XXX: commented out
|
||||
// CameraPopoverHandle = require('./CameraPopoverHandle');
|
||||
|
||||
/**
|
||||
* @namespace navigator
|
||||
*/
|
||||
|
||||
/**
|
||||
* @exports camera
|
||||
*/
|
||||
var cameraExport = {};
|
||||
|
||||
// Tack on the Camera Constants to the base camera plugin.
|
||||
for (var key in Camera) {
|
||||
cameraExport[key] = Camera[key];
|
||||
}
|
||||
|
||||
/**
|
||||
* Callback function that provides an error message.
|
||||
* @callback module:camera.onError
|
||||
* @param {string} message - The message is provided by the device's native code.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Callback function that provides the image data.
|
||||
* @callback module:camera.onSuccess
|
||||
* @param {string} imageData - Base64 encoding of the image data, _or_ the image file URI, depending on [`cameraOptions`]{@link module:camera.CameraOptions} in effect.
|
||||
* @example
|
||||
* // Show image
|
||||
* //
|
||||
* function cameraCallback(imageData) {
|
||||
* var image = document.getElementById('myImage');
|
||||
* image.src = "data:image/jpeg;base64," + imageData;
|
||||
* }
|
||||
*/
|
||||
|
||||
/**
|
||||
* Optional parameters to customize the camera settings.
|
||||
* * [Quirks](#CameraOptions-quirks)
|
||||
* @typedef module:camera.CameraOptions
|
||||
* @type {Object}
|
||||
* @property {number} [quality=50] - Quality of the saved image, expressed as a range of 0-100, where 100 is typically full resolution with no loss from file compression. (Note that information about the camera's resolution is unavailable.)
|
||||
* @property {module:Camera.DestinationType} [destinationType=FILE_URI] - Choose the format of the return value.
|
||||
* @property {module:Camera.PictureSourceType} [sourceType=CAMERA] - Set the source of the picture.
|
||||
* @property {Boolean} [allowEdit=false] - Allow simple editing of image before selection.
|
||||
* @property {module:Camera.EncodingType} [encodingType=JPEG] - Choose the returned image file's encoding.
|
||||
* @property {number} [targetWidth] - Width in pixels to scale image. Must be used with `targetHeight`. Aspect ratio remains constant.
|
||||
* @property {number} [targetHeight] - Height in pixels to scale image. Must be used with `targetWidth`. Aspect ratio remains constant.
|
||||
* @property {module:Camera.MediaType} [mediaType=PICTURE] - Set the type of media to select from. Only works when `PictureSourceType` is `PHOTOLIBRARY` or `SAVEDPHOTOALBUM`.
|
||||
* @property {Boolean} [correctOrientation] - Rotate the image to correct for the orientation of the device during capture.
|
||||
* @property {Boolean} [saveToPhotoAlbum] - Save the image to the photo album on the device after capture.
|
||||
* @property {module:CameraPopoverOptions} [popoverOptions] - iOS-only options that specify popover location in iPad.
|
||||
* @property {module:Camera.Direction} [cameraDirection=BACK] - Choose the camera to use (front- or back-facing).
|
||||
*/
|
||||
|
||||
/**
|
||||
* @description Takes a photo using the camera, or retrieves a photo from the device's
|
||||
* image gallery. The image is passed to the success callback as a
|
||||
* Base64-encoded `String`, or as the URI for the image file.
|
||||
*
|
||||
* The `camera.getPicture` function opens the device's default camera
|
||||
* application that allows users to snap pictures by default - this behavior occurs,
|
||||
* when `Camera.sourceType` equals [`Camera.PictureSourceType.CAMERA`]{@link module:Camera.PictureSourceType}.
|
||||
* Once the user snaps the photo, the camera application closes and the application is restored.
|
||||
*
|
||||
* If `Camera.sourceType` is `Camera.PictureSourceType.PHOTOLIBRARY` or
|
||||
* `Camera.PictureSourceType.SAVEDPHOTOALBUM`, then a dialog displays
|
||||
* that allows users to select an existing image.
|
||||
*
|
||||
* The return value is sent to the [`cameraSuccess`]{@link module:camera.onSuccess} callback function, in
|
||||
* one of the following formats, depending on the specified
|
||||
* `cameraOptions`:
|
||||
*
|
||||
* - A `String` containing the Base64-encoded photo image.
|
||||
* - A `String` representing the image file location on local storage (default).
|
||||
*
|
||||
* You can do whatever you want with the encoded image or URI, for
|
||||
* example:
|
||||
*
|
||||
* - Render the image in an `<img>` tag, as in the example below
|
||||
* - Save the data locally (`LocalStorage`, [Lawnchair](http://brianleroux.github.com/lawnchair/), etc.)
|
||||
* - Post the data to a remote server
|
||||
*
|
||||
* __NOTE__: Photo resolution on newer devices is quite good. Photos
|
||||
* selected from the device's gallery are not downscaled to a lower
|
||||
* quality, even if a `quality` parameter is specified. To avoid common
|
||||
* memory problems, set `Camera.destinationType` to `FILE_URI` rather
|
||||
* than `DATA_URL`.
|
||||
*
|
||||
* __Supported Platforms__
|
||||
*
|
||||
* - Android
|
||||
* - BlackBerry
|
||||
* - Browser
|
||||
* - Firefox
|
||||
* - FireOS
|
||||
* - iOS
|
||||
* - Windows
|
||||
* - WP8
|
||||
* - Ubuntu
|
||||
*
|
||||
* More examples [here](#camera-getPicture-examples). Quirks [here](#camera-getPicture-quirks).
|
||||
*
|
||||
* @example
|
||||
* navigator.camera.getPicture(cameraSuccess, cameraError, cameraOptions);
|
||||
* @param {module:camera.onSuccess} successCallback
|
||||
* @param {module:camera.onError} errorCallback
|
||||
* @param {module:camera.CameraOptions} options CameraOptions
|
||||
*/
|
||||
cameraExport.getPicture = function (successCallback, errorCallback, options) {
|
||||
argscheck.checkArgs('fFO', 'Camera.getPicture', arguments);
|
||||
options = options || {};
|
||||
var getValue = argscheck.getValue;
|
||||
|
||||
var quality = getValue(options.quality, 50);
|
||||
var destinationType = getValue(options.destinationType, Camera.DestinationType.FILE_URI);
|
||||
var sourceType = getValue(options.sourceType, Camera.PictureSourceType.CAMERA);
|
||||
var targetWidth = getValue(options.targetWidth, -1);
|
||||
var targetHeight = getValue(options.targetHeight, -1);
|
||||
var encodingType = getValue(options.encodingType, Camera.EncodingType.JPEG);
|
||||
var mediaType = getValue(options.mediaType, Camera.MediaType.PICTURE);
|
||||
var allowEdit = !!options.allowEdit;
|
||||
var correctOrientation = !!options.correctOrientation;
|
||||
var saveToPhotoAlbum = !!options.saveToPhotoAlbum;
|
||||
var popoverOptions = getValue(options.popoverOptions, null);
|
||||
var cameraDirection = getValue(options.cameraDirection, Camera.Direction.BACK);
|
||||
|
||||
var args = [quality, destinationType, sourceType, targetWidth, targetHeight, encodingType,
|
||||
mediaType, allowEdit, correctOrientation, saveToPhotoAlbum, popoverOptions, cameraDirection];
|
||||
|
||||
exec(successCallback, errorCallback, 'Camera', 'takePicture', args);
|
||||
// XXX: commented out
|
||||
// return new CameraPopoverHandle();
|
||||
};
|
||||
|
||||
/**
|
||||
* Removes intermediate image files that are kept in temporary storage
|
||||
* after calling [`camera.getPicture`]{@link module:camera.getPicture}. Applies only when the value of
|
||||
* `Camera.sourceType` equals `Camera.PictureSourceType.CAMERA` and the
|
||||
* `Camera.destinationType` equals `Camera.DestinationType.FILE_URI`.
|
||||
*
|
||||
* __Supported Platforms__
|
||||
*
|
||||
* - iOS
|
||||
*
|
||||
* @example
|
||||
* navigator.camera.cleanup(onSuccess, onFail);
|
||||
*
|
||||
* function onSuccess() {
|
||||
* console.log("Camera cleanup success.")
|
||||
* }
|
||||
*
|
||||
* function onFail(message) {
|
||||
* alert('Failed because: ' + message);
|
||||
* }
|
||||
*/
|
||||
cameraExport.cleanup = function (successCallback, errorCallback) {
|
||||
exec(successCallback, errorCallback, 'Camera', 'cleanup', []);
|
||||
};
|
||||
|
||||
module.exports = cameraExport;
|
||||
|
||||
});
|
||||
@@ -0,0 +1,104 @@
|
||||
cordova.define("cordova-plugin-camera.Camera", function(require, exports, module) {
|
||||
/*
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @module Camera
|
||||
*/
|
||||
module.exports = {
|
||||
/**
|
||||
* @description
|
||||
* Defines the output format of `Camera.getPicture` call.
|
||||
* _Note:_ On iOS passing `DestinationType.NATIVE_URI` along with
|
||||
* `PictureSourceType.PHOTOLIBRARY` or `PictureSourceType.SAVEDPHOTOALBUM` will
|
||||
* disable any image modifications (resize, quality change, cropping, etc.) due
|
||||
* to implementation specific.
|
||||
*
|
||||
* @enum {number}
|
||||
*/
|
||||
DestinationType: {
|
||||
/** Return base64 encoded string. DATA_URL can be very memory intensive and cause app crashes or out of memory errors. Use FILE_URI or NATIVE_URI if possible */
|
||||
DATA_URL: 0,
|
||||
/** Return file uri (content://media/external/images/media/2 for Android) */
|
||||
FILE_URI: 1,
|
||||
/** Return native uri (eg. asset-library://... for iOS) */
|
||||
NATIVE_URI: 2
|
||||
},
|
||||
/**
|
||||
* @enum {number}
|
||||
*/
|
||||
EncodingType: {
|
||||
/** Return JPEG encoded image */
|
||||
JPEG: 0,
|
||||
/** Return PNG encoded image */
|
||||
PNG: 1
|
||||
},
|
||||
/**
|
||||
* @enum {number}
|
||||
*/
|
||||
MediaType: {
|
||||
/** Allow selection of still pictures only. DEFAULT. Will return format specified via DestinationType */
|
||||
PICTURE: 0,
|
||||
/** Allow selection of video only, ONLY RETURNS URL */
|
||||
VIDEO: 1,
|
||||
/** Allow selection from all media types */
|
||||
ALLMEDIA: 2
|
||||
},
|
||||
/**
|
||||
* @description
|
||||
* Defines the output format of `Camera.getPicture` call.
|
||||
* _Note:_ On iOS passing `PictureSourceType.PHOTOLIBRARY` or `PictureSourceType.SAVEDPHOTOALBUM`
|
||||
* along with `DestinationType.NATIVE_URI` will disable any image modifications (resize, quality
|
||||
* change, cropping, etc.) due to implementation specific.
|
||||
*
|
||||
* @enum {number}
|
||||
*/
|
||||
PictureSourceType: {
|
||||
/** Choose image from the device's photo library (same as SAVEDPHOTOALBUM for Android) */
|
||||
PHOTOLIBRARY: 0,
|
||||
/** Take picture from camera */
|
||||
CAMERA: 1,
|
||||
/** Choose image only from the device's Camera Roll album (same as PHOTOLIBRARY for Android) */
|
||||
SAVEDPHOTOALBUM: 2
|
||||
},
|
||||
/**
|
||||
* Matches iOS UIPopoverArrowDirection constants to specify arrow location on popover.
|
||||
* @enum {number}
|
||||
*/
|
||||
PopoverArrowDirection: {
|
||||
ARROW_UP: 1,
|
||||
ARROW_DOWN: 2,
|
||||
ARROW_LEFT: 4,
|
||||
ARROW_RIGHT: 8,
|
||||
ARROW_ANY: 15
|
||||
},
|
||||
/**
|
||||
* @enum {number}
|
||||
*/
|
||||
Direction: {
|
||||
/** Use the back-facing camera */
|
||||
BACK: 0,
|
||||
/** Use the front-facing camera */
|
||||
FRONT: 1
|
||||
}
|
||||
};
|
||||
|
||||
});
|
||||
@@ -0,0 +1,55 @@
|
||||
cordova.define("cordova-plugin-camera.CameraPopoverOptions", function(require, exports, module) {
|
||||
/*
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
*/
|
||||
|
||||
var Camera = require('./Camera');
|
||||
|
||||
/**
|
||||
* @namespace navigator
|
||||
*/
|
||||
|
||||
/**
|
||||
* iOS-only parameters that specify the anchor element location and arrow
|
||||
* direction of the popover when selecting images from an iPad's library
|
||||
* or album.
|
||||
* Note that the size of the popover may change to adjust to the
|
||||
* direction of the arrow and orientation of the screen. Make sure to
|
||||
* account for orientation changes when specifying the anchor element
|
||||
* location.
|
||||
* @module CameraPopoverOptions
|
||||
* @param {Number} [x=0] - x pixel coordinate of screen element onto which to anchor the popover.
|
||||
* @param {Number} [y=32] - y pixel coordinate of screen element onto which to anchor the popover.
|
||||
* @param {Number} [width=320] - width, in pixels, of the screen element onto which to anchor the popover.
|
||||
* @param {Number} [height=480] - height, in pixels, of the screen element onto which to anchor the popover.
|
||||
* @param {module:Camera.PopoverArrowDirection} [arrowDir=ARROW_ANY] - Direction the arrow on the popover should point.
|
||||
*/
|
||||
var CameraPopoverOptions = function (x, y, width, height, arrowDir) {
|
||||
// information of rectangle that popover should be anchored to
|
||||
this.x = x || 0;
|
||||
this.y = y || 32;
|
||||
this.width = width || 320;
|
||||
this.height = height || 480;
|
||||
this.arrowDir = arrowDir || Camera.PopoverArrowDirection.ARROW_ANY;
|
||||
};
|
||||
|
||||
module.exports = CameraPopoverOptions;
|
||||
|
||||
});
|
||||
@@ -0,0 +1,69 @@
|
||||
cordova.define("cordova-plugin-camera.CameraPopoverHandle", function(require, exports, module) {
|
||||
/*
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
*/
|
||||
|
||||
var exec = require('cordova/exec');
|
||||
|
||||
/**
|
||||
* @namespace navigator
|
||||
*/
|
||||
|
||||
/**
|
||||
* A handle to an image picker popover.
|
||||
*
|
||||
* __Supported Platforms__
|
||||
*
|
||||
* - iOS
|
||||
*
|
||||
* @example
|
||||
* navigator.camera.getPicture(onSuccess, onFail,
|
||||
* {
|
||||
* destinationType: Camera.DestinationType.FILE_URI,
|
||||
* sourceType: Camera.PictureSourceType.PHOTOLIBRARY,
|
||||
* popoverOptions: new CameraPopoverOptions(300, 300, 100, 100, Camera.PopoverArrowDirection.ARROW_ANY)
|
||||
* });
|
||||
*
|
||||
* // Reposition the popover if the orientation changes.
|
||||
* window.onorientationchange = function() {
|
||||
* var cameraPopoverHandle = new CameraPopoverHandle();
|
||||
* var cameraPopoverOptions = new CameraPopoverOptions(0, 0, 100, 100, Camera.PopoverArrowDirection.ARROW_ANY);
|
||||
* cameraPopoverHandle.setPosition(cameraPopoverOptions);
|
||||
* }
|
||||
* @module CameraPopoverHandle
|
||||
*/
|
||||
var CameraPopoverHandle = function () {
|
||||
/**
|
||||
* Can be used to reposition the image selection dialog,
|
||||
* for example, when the device orientation changes.
|
||||
* @memberof CameraPopoverHandle
|
||||
* @instance
|
||||
* @method setPosition
|
||||
* @param {module:CameraPopoverOptions} popoverOptions
|
||||
*/
|
||||
this.setPosition = function (popoverOptions) {
|
||||
var args = [ popoverOptions ];
|
||||
exec(null, null, 'Camera', 'repositionPopover', args);
|
||||
};
|
||||
};
|
||||
|
||||
module.exports = CameraPopoverHandle;
|
||||
|
||||
});
|
||||
@@ -0,0 +1,133 @@
|
||||
cordova.define("cordova-plugin-dialogs.notification", function(require, exports, module) {
|
||||
/*
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
*/
|
||||
|
||||
var exec = require('cordova/exec');
|
||||
var platform = require('cordova/platform');
|
||||
|
||||
/**
|
||||
* Provides access to notifications on the device.
|
||||
*/
|
||||
|
||||
module.exports = {
|
||||
|
||||
/**
|
||||
* Open a native alert dialog, with a customizable title and button text.
|
||||
*
|
||||
* @param {String} message Message to print in the body of the alert
|
||||
* @param {Function} completeCallback The callback that is called when user clicks on a button.
|
||||
* @param {String} title Title of the alert dialog (default: Alert)
|
||||
* @param {String} buttonLabel Label of the close button (default: OK)
|
||||
*/
|
||||
alert: function (message, completeCallback, title, buttonLabel) {
|
||||
var _message = (typeof message === 'string' ? message : JSON.stringify(message));
|
||||
var _title = (typeof title === 'string' ? title : 'Alert');
|
||||
var _buttonLabel = (buttonLabel && typeof buttonLabel === 'string' ? buttonLabel : 'OK');
|
||||
exec(completeCallback, null, 'Notification', 'alert', [_message, _title, _buttonLabel]);
|
||||
},
|
||||
|
||||
/**
|
||||
* Open a native confirm dialog, with a customizable title and button text.
|
||||
* The result that the user selects is returned to the result callback.
|
||||
*
|
||||
* @param {String} message Message to print in the body of the alert
|
||||
* @param {Function} resultCallback The callback that is called when user clicks on a button.
|
||||
* @param {String} title Title of the alert dialog (default: Confirm)
|
||||
* @param {Array} buttonLabels Array of the labels of the buttons (default: ['OK', 'Cancel'])
|
||||
*/
|
||||
confirm: function (message, resultCallback, title, buttonLabels) {
|
||||
var _message = (typeof message === 'string' ? message : JSON.stringify(message));
|
||||
var _title = (typeof title === 'string' ? title : 'Confirm');
|
||||
var _buttonLabels = (buttonLabels || ['OK', 'Cancel']);
|
||||
|
||||
// Strings are deprecated!
|
||||
if (typeof _buttonLabels === 'string') {
|
||||
console.log('Notification.confirm(string, function, string, string) is deprecated. Use Notification.confirm(string, function, string, array).');
|
||||
}
|
||||
|
||||
_buttonLabels = convertButtonLabels(_buttonLabels);
|
||||
|
||||
exec(resultCallback, null, 'Notification', 'confirm', [_message, _title, _buttonLabels]);
|
||||
},
|
||||
|
||||
/**
|
||||
* Open a native prompt dialog, with a customizable title and button text.
|
||||
* The following results are returned to the result callback:
|
||||
* buttonIndex Index number of the button selected.
|
||||
* input1 The text entered in the prompt dialog box.
|
||||
*
|
||||
* @param {String} message Dialog message to display (default: "Prompt message")
|
||||
* @param {Function} resultCallback The callback that is called when user clicks on a button.
|
||||
* @param {String} title Title of the dialog (default: "Prompt")
|
||||
* @param {Array} buttonLabels Array of strings for the button labels (default: ["OK","Cancel"])
|
||||
* @param {String} defaultText Textbox input value (default: empty string)
|
||||
*/
|
||||
prompt: function (message, resultCallback, title, buttonLabels, defaultText) {
|
||||
var _message = (typeof message === 'string' ? message : JSON.stringify(message));
|
||||
var _title = (typeof title === 'string' ? title : 'Prompt');
|
||||
var _buttonLabels = (buttonLabels || ['OK', 'Cancel']);
|
||||
|
||||
// Strings are deprecated!
|
||||
if (typeof _buttonLabels === 'string') {
|
||||
console.log('Notification.prompt(string, function, string, string) is deprecated. Use Notification.confirm(string, function, string, array).');
|
||||
}
|
||||
|
||||
_buttonLabels = convertButtonLabels(_buttonLabels);
|
||||
|
||||
var _defaultText = (defaultText || '');
|
||||
exec(resultCallback, null, 'Notification', 'prompt', [_message, _title, _buttonLabels, _defaultText]);
|
||||
},
|
||||
|
||||
/**
|
||||
* Causes the device to beep.
|
||||
* On Android, the default notification ringtone is played "count" times.
|
||||
*
|
||||
* @param {Integer} count The number of beeps.
|
||||
*/
|
||||
beep: function (count) {
|
||||
var defaultedCount = count || 1;
|
||||
exec(null, null, 'Notification', 'beep', [ defaultedCount ]);
|
||||
}
|
||||
};
|
||||
|
||||
function convertButtonLabels (buttonLabels) {
|
||||
|
||||
// Some platforms take an array of button label names.
|
||||
// Other platforms take a comma separated list.
|
||||
// For compatibility, we convert to the desired type based on the platform.
|
||||
if (platform.id === 'amazon-fireos' || platform.id === 'android' || platform.id === 'ios' ||
|
||||
platform.id === 'windowsphone' || platform.id === 'firefoxos' || platform.id === 'ubuntu' ||
|
||||
platform.id === 'windows8' || platform.id === 'windows') {
|
||||
|
||||
if (typeof buttonLabels === 'string') {
|
||||
buttonLabels = buttonLabels.split(','); // not crazy about changing the var type here
|
||||
}
|
||||
} else {
|
||||
if (Array.isArray(buttonLabels)) {
|
||||
var buttonLabelArray = buttonLabels;
|
||||
buttonLabels = buttonLabelArray.toString();
|
||||
}
|
||||
}
|
||||
|
||||
return buttonLabels;
|
||||
}
|
||||
|
||||
});
|
||||
@@ -0,0 +1,159 @@
|
||||
cordova.define("phonegap-plugin-barcodescanner.BarcodeScanner", function(require, exports, module) {
|
||||
/**
|
||||
* cordova is available under the MIT License (2008).
|
||||
* See http://opensource.org/licenses/alphabetical for full text.
|
||||
*
|
||||
* Copyright (c) Matt Kane 2010
|
||||
* Copyright (c) 2011, IBM Corporation
|
||||
* Copyright (c) 2012-2017, Adobe Systems
|
||||
*/
|
||||
|
||||
|
||||
var exec = cordova.require("cordova/exec");
|
||||
|
||||
var scanInProgress = false;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @returns {BarcodeScanner}
|
||||
*/
|
||||
function BarcodeScanner() {
|
||||
|
||||
/**
|
||||
* Encoding constants.
|
||||
*
|
||||
* @type Object
|
||||
*/
|
||||
this.Encode = {
|
||||
TEXT_TYPE: "TEXT_TYPE",
|
||||
EMAIL_TYPE: "EMAIL_TYPE",
|
||||
PHONE_TYPE: "PHONE_TYPE",
|
||||
SMS_TYPE: "SMS_TYPE"
|
||||
// CONTACT_TYPE: "CONTACT_TYPE", // TODO: not implemented, requires passing a Bundle class from Javascript to Java
|
||||
// LOCATION_TYPE: "LOCATION_TYPE" // TODO: not implemented, requires passing a Bundle class from Javascript to Java
|
||||
};
|
||||
|
||||
/**
|
||||
* Barcode format constants, defined in ZXing library.
|
||||
*
|
||||
* @type Object
|
||||
*/
|
||||
this.format = {
|
||||
"all_1D": 61918,
|
||||
"aztec": 1,
|
||||
"codabar": 2,
|
||||
"code_128": 16,
|
||||
"code_39": 4,
|
||||
"code_93": 8,
|
||||
"data_MATRIX": 32,
|
||||
"ean_13": 128,
|
||||
"ean_8": 64,
|
||||
"itf": 256,
|
||||
"maxicode": 512,
|
||||
"msi": 131072,
|
||||
"pdf_417": 1024,
|
||||
"plessey": 262144,
|
||||
"qr_CODE": 2048,
|
||||
"rss_14": 4096,
|
||||
"rss_EXPANDED": 8192,
|
||||
"upc_A": 16384,
|
||||
"upc_E": 32768,
|
||||
"upc_EAN_EXTENSION": 65536
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Read code from scanner.
|
||||
*
|
||||
* @param {Function} successCallback This function will recieve a result object: {
|
||||
* text : '12345-mock', // The code that was scanned.
|
||||
* format : 'FORMAT_NAME', // Code format.
|
||||
* cancelled : true/false, // Was canceled.
|
||||
* }
|
||||
* @param {Function} errorCallback
|
||||
* @param config
|
||||
*/
|
||||
BarcodeScanner.prototype.scan = function (successCallback, errorCallback, config) {
|
||||
|
||||
if (config instanceof Array) {
|
||||
// do nothing
|
||||
} else {
|
||||
if (typeof(config) === 'object') {
|
||||
// string spaces between formats, ZXing does not like that
|
||||
if (config.formats) {
|
||||
config.formats = config.formats.replace(/\s+/g, '');
|
||||
}
|
||||
config = [ config ];
|
||||
} else {
|
||||
config = [];
|
||||
}
|
||||
}
|
||||
|
||||
if (errorCallback == null) {
|
||||
errorCallback = function () {
|
||||
};
|
||||
}
|
||||
|
||||
if (typeof errorCallback != "function") {
|
||||
console.log("BarcodeScanner.scan failure: failure parameter not a function");
|
||||
return;
|
||||
}
|
||||
|
||||
if (typeof successCallback != "function") {
|
||||
console.log("BarcodeScanner.scan failure: success callback parameter must be a function");
|
||||
return;
|
||||
}
|
||||
|
||||
if (scanInProgress) {
|
||||
errorCallback('Scan is already in progress');
|
||||
return;
|
||||
}
|
||||
|
||||
scanInProgress = true;
|
||||
|
||||
exec(
|
||||
function(result) {
|
||||
scanInProgress = false;
|
||||
// work around bug in ZXing library
|
||||
if (result.format === 'UPC_A' && result.text.length === 13) {
|
||||
result.text = result.text.substring(1);
|
||||
}
|
||||
successCallback(result);
|
||||
},
|
||||
function(error) {
|
||||
scanInProgress = false;
|
||||
errorCallback(error);
|
||||
},
|
||||
'BarcodeScanner',
|
||||
'scan',
|
||||
config
|
||||
);
|
||||
};
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
BarcodeScanner.prototype.encode = function (type, data, successCallback, errorCallback, options) {
|
||||
if (errorCallback == null) {
|
||||
errorCallback = function () {
|
||||
};
|
||||
}
|
||||
|
||||
if (typeof errorCallback != "function") {
|
||||
console.log("BarcodeScanner.encode failure: failure parameter not a function");
|
||||
return;
|
||||
}
|
||||
|
||||
if (typeof successCallback != "function") {
|
||||
console.log("BarcodeScanner.encode failure: success callback parameter must be a function");
|
||||
return;
|
||||
}
|
||||
|
||||
exec(successCallback, errorCallback, 'BarcodeScanner', 'encode', [
|
||||
{"type": type, "data": data, "options": options}
|
||||
]);
|
||||
};
|
||||
|
||||
var barcodeScanner = new BarcodeScanner();
|
||||
module.exports = barcodeScanner;
|
||||
|
||||
});
|
||||
@@ -0,0 +1,108 @@
|
||||
cordova.define("phonegap-plugin-local-notification.Notification", function(require, exports, module) {
|
||||
/* global cordova:false */
|
||||
/* globals window */
|
||||
|
||||
var argscheck = cordova.require('cordova/argscheck'),
|
||||
exec = cordova.require('cordova/exec'),
|
||||
utils = cordova.require('cordova/utils');
|
||||
|
||||
/**
|
||||
* @description A global object that lets you interact with the Notification API.
|
||||
* @global
|
||||
* @param {!string} title of the local notification.
|
||||
* @param {?Options} options An object containing optional property/value pairs.
|
||||
*/
|
||||
var Notification = function(title, options) {
|
||||
// require title parameter
|
||||
if (typeof title === 'undefined') {
|
||||
throw new Error('The title argument is required.');
|
||||
}
|
||||
|
||||
options = options || {};
|
||||
var getValue = argscheck.getValue;
|
||||
|
||||
this.permission = 'granted';
|
||||
this.title = getValue(title, '');
|
||||
this.dir = getValue(options.dir, 'auto');
|
||||
this.lang = getValue(options.lang, '');
|
||||
this.body = getValue(options.body, '');
|
||||
this.tag = getValue(options.tag, '');
|
||||
this.icon = getValue(options.icon, '');
|
||||
this.onclick = function() {};
|
||||
this.onshow = function() {};
|
||||
this.onerror = function() {};
|
||||
this.onclose = function() {};
|
||||
|
||||
// triggered on click, show, error and close
|
||||
var that = this;
|
||||
var success = function(result) {
|
||||
if (!result) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (result === 'show') {
|
||||
that.onshow();
|
||||
} else if (result === 'click') {
|
||||
that.onclick();
|
||||
}
|
||||
};
|
||||
|
||||
var failure = function() {
|
||||
that.onerror();
|
||||
};
|
||||
|
||||
exec(success, failure, 'LocalNotifications', 'show', [this.title, this.dir, this.lang, this.body, this.tag, this.icon]);
|
||||
};
|
||||
|
||||
/**
|
||||
* @description requests permission from the user to show a local notification.
|
||||
* @function requestPermission
|
||||
* @memberof Notification
|
||||
* @param {!callback} callback - See type definition.
|
||||
*/
|
||||
Notification.requestPermission = function(callback) {
|
||||
if (!callback) { callback = function() {}; }
|
||||
|
||||
if (typeof callback !== 'function') {
|
||||
console.log('Notification.requestPermission failure: callback parameter not a function');
|
||||
return;
|
||||
}
|
||||
|
||||
exec(callback, function() {
|
||||
console.log('requestPermission error');
|
||||
}, 'LocalNotifications', 'requestPermission', []);
|
||||
};
|
||||
|
||||
/**
|
||||
* @description closes an open notification.
|
||||
* @function close
|
||||
* @memberof Notification
|
||||
*/
|
||||
Notification.prototype.close = function() {
|
||||
var that = this;
|
||||
exec(function() {
|
||||
that.onclose();
|
||||
}, function() {
|
||||
that.onerror();
|
||||
}, 'LocalNotifications', 'close', [this.tag]);
|
||||
};
|
||||
|
||||
/**
|
||||
* @description A callback to be used when the requestPermission method returns a value.
|
||||
*
|
||||
* @callback callback
|
||||
* @param {string} permission - one of "default", "denied" or "granted"
|
||||
*/
|
||||
|
||||
/*
|
||||
* @typedef {Object} Options - An object for configuring Notification behavior.
|
||||
* @property {string} [dir='auto'] - Sets the direction of the notification. One of "auto", "ltr" or "rtl"
|
||||
* @property {string} [lang=''] - Sets the language of the notification
|
||||
* @property {string} [body=''] - Sets the body of the notification
|
||||
* @property {string} [tag=''] - Sets the identifying tag of the notification
|
||||
* @property {string} [icon=''] - Sets the icon of the notification
|
||||
*/
|
||||
|
||||
module.exports = Notification;
|
||||
|
||||
});
|
||||
509
src/cordova/platforms/ios/HelloCordova.xcodeproj/project.pbxproj
Executable file
@@ -0,0 +1,509 @@
|
||||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 46;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
0207DA581B56EA530066E2B4 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0207DA571B56EA530066E2B4 /* Images.xcassets */; };
|
||||
1D3623260D0F684500981E51 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D3623250D0F684500981E51 /* AppDelegate.m */; };
|
||||
1D60589B0D05DD56006BFB54 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; };
|
||||
301BF552109A68D80062928A /* libCordova.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 301BF535109A57CC0062928A /* libCordova.a */; };
|
||||
302D95F114D2391D003F00A1 /* MainViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 302D95EF14D2391D003F00A1 /* MainViewController.m */; };
|
||||
302D95F214D2391D003F00A1 /* MainViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 302D95F014D2391D003F00A1 /* MainViewController.xib */; };
|
||||
50AA7C9856A04715938C6377 /* UIImage+CropScaleOrientation.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B0891B3D16146F58D40025A /* UIImage+CropScaleOrientation.m */; };
|
||||
51EACB27D4DB4A438E7E7118 /* CDVCamera.m in Sources */ = {isa = PBXBuildFile; fileRef = 519C80DE5679421CA7B0157A /* CDVCamera.m */; };
|
||||
56A2A3545C594CDD94B70C20 /* ImageIO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8FE4D423B10E4A9AB3A482D2 /* ImageIO.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
|
||||
6AFF5BF91D6E424B00AB3073 /* CDVLaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 6AFF5BF81D6E424B00AB3073 /* CDVLaunchScreen.storyboard */; };
|
||||
6DF8A7BE6D3945F5A64D24ED /* scannerOverlay.xib in Resources */ = {isa = PBXBuildFile; fileRef = FEB172AACC504ABEAD48B156 /* scannerOverlay.xib */; };
|
||||
83154919FBF643948AF738EE /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 46355EEB2CD44B8094D1AA4F /* AVFoundation.framework */; };
|
||||
8D58E6DB708B424D96CB666F /* W3CLocalNotifications.m in Sources */ = {isa = PBXBuildFile; fileRef = 248D145424464C0E8A7B617F /* W3CLocalNotifications.m */; };
|
||||
9A0519CEEA85446F9CCC6756 /* CDVNotification.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C8D1351736D4D02BF2173EE /* CDVNotification.m */; };
|
||||
A36BC231FB7147A48EA60F38 /* CDVNotification.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 7E7CAE5135684C9E8F55B871 /* CDVNotification.bundle */; };
|
||||
CB90A54B6FAE4BB683285BAE /* AppDelegate+LocalNotification.m in Sources */ = {isa = PBXBuildFile; fileRef = E08D682570F74D978ACE6968 /* AppDelegate+LocalNotification.m */; };
|
||||
CF367892BF0C44CC885E9580 /* CDVJpegHeaderWriter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8561F096299C43408FD7228F /* CDVJpegHeaderWriter.m */; };
|
||||
D6171A38BA2147518CD7FD58 /* CDVBarcodeScanner.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 51698BD997C6413681D4EC7C /* CDVBarcodeScanner.bundle */; };
|
||||
E15DE8BB4CC94553B97E04DE /* CoreLocation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7F1AA69C36704771ACA394C2 /* CoreLocation.framework */; };
|
||||
F042B670A0B94083946D894B /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9ACBB83208024B0995FCA42C /* AudioToolbox.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
|
||||
FCDCBD8361A44BA4926626AE /* CDVBarcodeScanner.mm in Sources */ = {isa = PBXBuildFile; fileRef = 6E2501EEB0A347CABCB38DA7 /* CDVBarcodeScanner.mm */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXContainerItemProxy section */
|
||||
301BF534109A57CC0062928A /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 301BF52D109A57CC0062928A /* CordovaLib/CordovaLib.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = D2AAC07E0554694100DB518D;
|
||||
remoteInfo = CordovaLib;
|
||||
};
|
||||
301BF550109A68C00062928A /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 301BF52D109A57CC0062928A /* CordovaLib/CordovaLib.xcodeproj */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = D2AAC07D0554694100DB518D;
|
||||
remoteInfo = CordovaLib;
|
||||
};
|
||||
E5863C77213E93E3002ED9B6 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 301BF52D109A57CC0062928A /* CordovaLib/CordovaLib.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = C0C01EB21E3911D50056E6CB;
|
||||
remoteInfo = Cordova;
|
||||
};
|
||||
/* End PBXContainerItemProxy section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
0207DA571B56EA530066E2B4 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = HelloCordova/Images.xcassets; sourceTree = SOURCE_ROOT; };
|
||||
1495F0B6136D4841A59F3D2C /* AppDelegate+LocalNotification.h */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = sourcecode.c.h; name = "AppDelegate+LocalNotification.h"; path = "phonegap-plugin-local-notification/AppDelegate+LocalNotification.h"; sourceTree = "<group>"; };
|
||||
1D3623240D0F684500981E51 /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
|
||||
1D3623250D0F684500981E51 /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
|
||||
1D6058910D05DD3D006BFB54 /* HelloCordova.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = HelloCordova.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
248D145424464C0E8A7B617F /* W3CLocalNotifications.m */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = sourcecode.c.objc; name = W3CLocalNotifications.m; path = "phonegap-plugin-local-notification/W3CLocalNotifications.m"; sourceTree = "<group>"; };
|
||||
29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
|
||||
2B32F063BBC24CAB9FF8EC11 /* CDVExif.h */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = sourcecode.c.h; name = CDVExif.h; path = "cordova-plugin-camera/CDVExif.h"; sourceTree = "<group>"; };
|
||||
301BF52D109A57CC0062928A /* CordovaLib/CordovaLib.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; path = CordovaLib/CordovaLib.xcodeproj; sourceTree = "<group>"; };
|
||||
301BF56E109A69640062928A /* www */ = {isa = PBXFileReference; lastKnownFileType = folder; path = www; sourceTree = SOURCE_ROOT; };
|
||||
302D95EE14D2391D003F00A1 /* MainViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MainViewController.h; sourceTree = "<group>"; };
|
||||
302D95EF14D2391D003F00A1 /* MainViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MainViewController.m; sourceTree = "<group>"; };
|
||||
302D95F014D2391D003F00A1 /* MainViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MainViewController.xib; sourceTree = "<group>"; };
|
||||
3047A50F1AB8059700498E2A /* build-debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = "build-debug.xcconfig"; path = "cordova/build-debug.xcconfig"; sourceTree = SOURCE_ROOT; };
|
||||
3047A5101AB8059700498E2A /* build-release.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = "build-release.xcconfig"; path = "cordova/build-release.xcconfig"; sourceTree = SOURCE_ROOT; };
|
||||
3047A5111AB8059700498E2A /* build.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = build.xcconfig; path = cordova/build.xcconfig; sourceTree = SOURCE_ROOT; };
|
||||
32CA4F630368D1EE00C91783 /* HelloCordova-Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "HelloCordova-Prefix.pch"; sourceTree = "<group>"; };
|
||||
46355EEB2CD44B8094D1AA4F /* AVFoundation.framework */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; };
|
||||
51698BD997C6413681D4EC7C /* CDVBarcodeScanner.bundle */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.plug-in"; path = CDVBarcodeScanner.bundle; sourceTree = "<group>"; };
|
||||
519C80DE5679421CA7B0157A /* CDVCamera.m */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = sourcecode.c.objc; name = CDVCamera.m; path = "cordova-plugin-camera/CDVCamera.m"; sourceTree = "<group>"; };
|
||||
5AF77BDA69074A7FAE83AD1C /* CDVJpegHeaderWriter.h */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = sourcecode.c.h; name = CDVJpegHeaderWriter.h; path = "cordova-plugin-camera/CDVJpegHeaderWriter.h"; sourceTree = "<group>"; };
|
||||
5B0891B3D16146F58D40025A /* UIImage+CropScaleOrientation.m */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = sourcecode.c.objc; name = "UIImage+CropScaleOrientation.m"; path = "cordova-plugin-camera/UIImage+CropScaleOrientation.m"; sourceTree = "<group>"; };
|
||||
6AFF5BF81D6E424B00AB3073 /* CDVLaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = CDVLaunchScreen.storyboard; path = HelloCordova/CDVLaunchScreen.storyboard; sourceTree = SOURCE_ROOT; };
|
||||
6E2501EEB0A347CABCB38DA7 /* CDVBarcodeScanner.mm */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = CDVBarcodeScanner.mm; path = "phonegap-plugin-barcodescanner/CDVBarcodeScanner.mm"; sourceTree = "<group>"; };
|
||||
7E7CAE5135684C9E8F55B871 /* CDVNotification.bundle */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.plug-in"; path = CDVNotification.bundle; sourceTree = "<group>"; };
|
||||
7F1AA69C36704771ACA394C2 /* CoreLocation.framework */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = wrapper.framework; name = CoreLocation.framework; path = System/Library/Frameworks/CoreLocation.framework; sourceTree = SDKROOT; };
|
||||
8561F096299C43408FD7228F /* CDVJpegHeaderWriter.m */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = sourcecode.c.objc; name = CDVJpegHeaderWriter.m; path = "cordova-plugin-camera/CDVJpegHeaderWriter.m"; sourceTree = "<group>"; };
|
||||
8D1107310486CEB800E47090 /* HelloCordova-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = "HelloCordova-Info.plist"; path = "HelloCordova/HelloCordova-Info.plist"; plistStructureDefinitionIdentifier = "com.apple.xcode.plist.structure-definition.iphone.info-plist"; sourceTree = SOURCE_ROOT; };
|
||||
8D131388274847E8A82F3187 /* CDVNotification.h */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = sourcecode.c.h; name = CDVNotification.h; path = "cordova-plugin-dialogs/CDVNotification.h"; sourceTree = "<group>"; };
|
||||
8FE4D423B10E4A9AB3A482D2 /* ImageIO.framework */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = wrapper.framework; name = ImageIO.framework; path = System/Library/Frameworks/ImageIO.framework; sourceTree = SDKROOT; };
|
||||
993EADB1FB1249DCA77FC170 /* W3CLocalNotifications.h */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = sourcecode.c.h; name = W3CLocalNotifications.h; path = "phonegap-plugin-local-notification/W3CLocalNotifications.h"; sourceTree = "<group>"; };
|
||||
9ACBB83208024B0995FCA42C /* AudioToolbox.framework */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; };
|
||||
9C8D1351736D4D02BF2173EE /* CDVNotification.m */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = sourcecode.c.objc; name = CDVNotification.m; path = "cordova-plugin-dialogs/CDVNotification.m"; sourceTree = "<group>"; };
|
||||
B0B71B53613B4F7A9AC795FD /* UIImage+CropScaleOrientation.h */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = sourcecode.c.h; name = "UIImage+CropScaleOrientation.h"; path = "cordova-plugin-camera/UIImage+CropScaleOrientation.h"; sourceTree = "<group>"; };
|
||||
E08D682570F74D978ACE6968 /* AppDelegate+LocalNotification.m */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = sourcecode.c.objc; name = "AppDelegate+LocalNotification.m"; path = "phonegap-plugin-local-notification/AppDelegate+LocalNotification.m"; sourceTree = "<group>"; };
|
||||
E84FD003B07F498390CED53C /* CDVCamera.h */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = sourcecode.c.h; name = CDVCamera.h; path = "cordova-plugin-camera/CDVCamera.h"; sourceTree = "<group>"; };
|
||||
EB87FDF31871DA8E0020F90C /* www */ = {isa = PBXFileReference; lastKnownFileType = folder; name = www; path = ../../www; sourceTree = "<group>"; };
|
||||
EB87FDF41871DAF40020F90C /* config.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; name = config.xml; path = ../../config.xml; sourceTree = "<group>"; };
|
||||
ED33DF2A687741AEAF9F8254 /* Bridging-Header.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "Bridging-Header.h"; sourceTree = "<group>"; };
|
||||
F840E1F0165FE0F500CFE078 /* config.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; name = config.xml; path = HelloCordova/config.xml; sourceTree = "<group>"; };
|
||||
FEB172AACC504ABEAD48B156 /* scannerOverlay.xib */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = file.xib; path = scannerOverlay.xib; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
1D60588F0D05DD3D006BFB54 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
301BF552109A68D80062928A /* libCordova.a in Frameworks */,
|
||||
56A2A3545C594CDD94B70C20 /* ImageIO.framework in Frameworks */,
|
||||
E15DE8BB4CC94553B97E04DE /* CoreLocation.framework in Frameworks */,
|
||||
83154919FBF643948AF738EE /* AVFoundation.framework in Frameworks */,
|
||||
F042B670A0B94083946D894B /* AudioToolbox.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
080E96DDFE201D6D7F000001 /* Classes */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
302D95EE14D2391D003F00A1 /* MainViewController.h */,
|
||||
302D95EF14D2391D003F00A1 /* MainViewController.m */,
|
||||
302D95F014D2391D003F00A1 /* MainViewController.xib */,
|
||||
1D3623240D0F684500981E51 /* AppDelegate.h */,
|
||||
1D3623250D0F684500981E51 /* AppDelegate.m */,
|
||||
);
|
||||
name = Classes;
|
||||
path = HelloCordova/Classes;
|
||||
sourceTree = SOURCE_ROOT;
|
||||
};
|
||||
19C28FACFE9D520D11CA2CBB /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
1D6058910D05DD3D006BFB54 /* HelloCordova.app */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
29B97314FDCFA39411CA2CEA /* CustomTemplate */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
EB87FDF41871DAF40020F90C /* config.xml */,
|
||||
EB87FDF31871DA8E0020F90C /* www */,
|
||||
EB87FDF11871DA420020F90C /* Staging */,
|
||||
301BF52D109A57CC0062928A /* CordovaLib/CordovaLib.xcodeproj */,
|
||||
080E96DDFE201D6D7F000001 /* Classes */,
|
||||
307C750510C5A3420062BCA9 /* Plugins */,
|
||||
29B97315FDCFA39411CA2CEA /* Other Sources */,
|
||||
29B97317FDCFA39411CA2CEA /* Resources */,
|
||||
29B97323FDCFA39411CA2CEA /* Frameworks */,
|
||||
19C28FACFE9D520D11CA2CBB /* Products */,
|
||||
);
|
||||
name = CustomTemplate;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
29B97315FDCFA39411CA2CEA /* Other Sources */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
32CA4F630368D1EE00C91783 /* HelloCordova-Prefix.pch */,
|
||||
29B97316FDCFA39411CA2CEA /* main.m */,
|
||||
ED33DF2A687741AEAF9F8254 /* Bridging-Header.h */,
|
||||
);
|
||||
name = "Other Sources";
|
||||
path = HelloCordova;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
29B97317FDCFA39411CA2CEA /* Resources */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
0207DA571B56EA530066E2B4 /* Images.xcassets */,
|
||||
3047A50E1AB8057F00498E2A /* config */,
|
||||
8D1107310486CEB800E47090 /* HelloCordova-Info.plist */,
|
||||
6AFF5BF81D6E424B00AB3073 /* CDVLaunchScreen.storyboard */,
|
||||
FEB172AACC504ABEAD48B156 /* scannerOverlay.xib */,
|
||||
51698BD997C6413681D4EC7C /* CDVBarcodeScanner.bundle */,
|
||||
7E7CAE5135684C9E8F55B871 /* CDVNotification.bundle */,
|
||||
);
|
||||
name = Resources;
|
||||
path = HelloCordova/Resources;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
29B97323FDCFA39411CA2CEA /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
8FE4D423B10E4A9AB3A482D2 /* ImageIO.framework */,
|
||||
7F1AA69C36704771ACA394C2 /* CoreLocation.framework */,
|
||||
46355EEB2CD44B8094D1AA4F /* AVFoundation.framework */,
|
||||
9ACBB83208024B0995FCA42C /* AudioToolbox.framework */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
301BF52E109A57CC0062928A /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
301BF535109A57CC0062928A /* libCordova.a */,
|
||||
E5863C78213E93E3002ED9B6 /* Cordova.framework */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
3047A50E1AB8057F00498E2A /* config */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
3047A50F1AB8059700498E2A /* build-debug.xcconfig */,
|
||||
3047A5101AB8059700498E2A /* build-release.xcconfig */,
|
||||
3047A5111AB8059700498E2A /* build.xcconfig */,
|
||||
);
|
||||
name = config;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
307C750510C5A3420062BCA9 /* Plugins */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
5B0891B3D16146F58D40025A /* UIImage+CropScaleOrientation.m */,
|
||||
519C80DE5679421CA7B0157A /* CDVCamera.m */,
|
||||
8561F096299C43408FD7228F /* CDVJpegHeaderWriter.m */,
|
||||
B0B71B53613B4F7A9AC795FD /* UIImage+CropScaleOrientation.h */,
|
||||
E84FD003B07F498390CED53C /* CDVCamera.h */,
|
||||
5AF77BDA69074A7FAE83AD1C /* CDVJpegHeaderWriter.h */,
|
||||
2B32F063BBC24CAB9FF8EC11 /* CDVExif.h */,
|
||||
6E2501EEB0A347CABCB38DA7 /* CDVBarcodeScanner.mm */,
|
||||
E08D682570F74D978ACE6968 /* AppDelegate+LocalNotification.m */,
|
||||
248D145424464C0E8A7B617F /* W3CLocalNotifications.m */,
|
||||
1495F0B6136D4841A59F3D2C /* AppDelegate+LocalNotification.h */,
|
||||
993EADB1FB1249DCA77FC170 /* W3CLocalNotifications.h */,
|
||||
9C8D1351736D4D02BF2173EE /* CDVNotification.m */,
|
||||
8D131388274847E8A82F3187 /* CDVNotification.h */,
|
||||
);
|
||||
name = Plugins;
|
||||
path = HelloCordova/Plugins;
|
||||
sourceTree = SOURCE_ROOT;
|
||||
};
|
||||
EB87FDF11871DA420020F90C /* Staging */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
F840E1F0165FE0F500CFE078 /* config.xml */,
|
||||
301BF56E109A69640062928A /* www */,
|
||||
);
|
||||
name = Staging;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
1D6058900D05DD3D006BFB54 /* HelloCordova */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "HelloCordova" */;
|
||||
buildPhases = (
|
||||
304B58A110DAC018002A0835 /* Copy www directory */,
|
||||
1D60588D0D05DD3D006BFB54 /* Resources */,
|
||||
1D60588E0D05DD3D006BFB54 /* Sources */,
|
||||
1D60588F0D05DD3D006BFB54 /* Frameworks */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
301BF551109A68C00062928A /* PBXTargetDependency */,
|
||||
);
|
||||
name = HelloCordova;
|
||||
productName = HelloCordova;
|
||||
productReference = 1D6058910D05DD3D006BFB54 /* HelloCordova.app */;
|
||||
productType = "com.apple.product-type.application";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
29B97313FDCFA39411CA2CEA /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
LastUpgradeCheck = 510;
|
||||
TargetAttributes = {
|
||||
1D6058900D05DD3D006BFB54 = {
|
||||
DevelopmentTeam = 44JUGMFH4U;
|
||||
ProvisioningStyle = Automatic;
|
||||
};
|
||||
};
|
||||
};
|
||||
buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "HelloCordova" */;
|
||||
compatibilityVersion = "Xcode 3.2";
|
||||
developmentRegion = English;
|
||||
hasScannedForEncodings = 1;
|
||||
knownRegions = (
|
||||
en,
|
||||
);
|
||||
mainGroup = 29B97314FDCFA39411CA2CEA /* CustomTemplate */;
|
||||
projectDirPath = "";
|
||||
projectReferences = (
|
||||
{
|
||||
ProductGroup = 301BF52E109A57CC0062928A /* Products */;
|
||||
ProjectRef = 301BF52D109A57CC0062928A /* CordovaLib/CordovaLib.xcodeproj */;
|
||||
},
|
||||
);
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
1D6058900D05DD3D006BFB54 /* HelloCordova */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXReferenceProxy section */
|
||||
301BF535109A57CC0062928A /* libCordova.a */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = archive.ar;
|
||||
path = libCordova.a;
|
||||
remoteRef = 301BF534109A57CC0062928A /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
E5863C78213E93E3002ED9B6 /* Cordova.framework */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = wrapper.framework;
|
||||
path = Cordova.framework;
|
||||
remoteRef = E5863C77213E93E3002ED9B6 /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
/* End PBXReferenceProxy section */
|
||||
|
||||
/* Begin PBXResourcesBuildPhase section */
|
||||
1D60588D0D05DD3D006BFB54 /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
302D95F214D2391D003F00A1 /* MainViewController.xib in Resources */,
|
||||
0207DA581B56EA530066E2B4 /* Images.xcassets in Resources */,
|
||||
6AFF5BF91D6E424B00AB3073 /* CDVLaunchScreen.storyboard in Resources */,
|
||||
6DF8A7BE6D3945F5A64D24ED /* scannerOverlay.xib in Resources */,
|
||||
D6171A38BA2147518CD7FD58 /* CDVBarcodeScanner.bundle in Resources */,
|
||||
A36BC231FB7147A48EA60F38 /* CDVNotification.bundle in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXShellScriptBuildPhase section */
|
||||
304B58A110DAC018002A0835 /* Copy www directory */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
);
|
||||
name = "Copy www directory";
|
||||
outputPaths = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "NODEJS_PATH=/usr/local/bin; NVM_NODE_PATH=~/.nvm/versions/node/`nvm version 2>/dev/null`/bin; N_NODE_PATH=`find /usr/local/n/versions/node/* -maxdepth 0 -type d 2>/dev/null | tail -1`/bin; XCODE_NODE_PATH=`xcode-select --print-path`/usr/share/xcs/Node/bin; PATH=$NODEJS_PATH:$NVM_NODE_PATH:$N_NODE_PATH:$XCODE_NODE_PATH:$PATH && node cordova/lib/copy-www-build-step.js";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
/* End PBXShellScriptBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
1D60588E0D05DD3D006BFB54 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
1D60589B0D05DD56006BFB54 /* main.m in Sources */,
|
||||
1D3623260D0F684500981E51 /* AppDelegate.m in Sources */,
|
||||
302D95F114D2391D003F00A1 /* MainViewController.m in Sources */,
|
||||
50AA7C9856A04715938C6377 /* UIImage+CropScaleOrientation.m in Sources */,
|
||||
51EACB27D4DB4A438E7E7118 /* CDVCamera.m in Sources */,
|
||||
CF367892BF0C44CC885E9580 /* CDVJpegHeaderWriter.m in Sources */,
|
||||
FCDCBD8361A44BA4926626AE /* CDVBarcodeScanner.mm in Sources */,
|
||||
CB90A54B6FAE4BB683285BAE /* AppDelegate+LocalNotification.m in Sources */,
|
||||
8D58E6DB708B424D96CB666F /* W3CLocalNotifications.m in Sources */,
|
||||
9A0519CEEA85446F9CCC6756 /* CDVNotification.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXTargetDependency section */
|
||||
301BF551109A68C00062928A /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
name = CordovaLib;
|
||||
targetProxy = 301BF550109A68C00062928A /* PBXContainerItemProxy */;
|
||||
};
|
||||
/* End PBXTargetDependency section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
1D6058940D05DD3E006BFB54 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 3047A50F1AB8059700498E2A /* build-debug.xcconfig */;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
DEVELOPMENT_TEAM = 44JUGMFH4U;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = "HelloCordova/HelloCordova-Prefix.pch";
|
||||
GCC_THUMB_SUPPORT = NO;
|
||||
GCC_VERSION = "";
|
||||
INFOPLIST_FILE = "HelloCordova/HelloCordova-Info.plist";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = "@executable_path/Frameworks";
|
||||
PRODUCT_NAME = HelloCordova;
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
TARGETED_DEVICE_FAMILY = 1;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
1D6058950D05DD3E006BFB54 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 3047A5101AB8059700498E2A /* build-release.xcconfig */;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
COPY_PHASE_STRIP = YES;
|
||||
DEVELOPMENT_TEAM = 44JUGMFH4U;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = "HelloCordova/HelloCordova-Prefix.pch";
|
||||
GCC_THUMB_SUPPORT = NO;
|
||||
GCC_VERSION = "";
|
||||
INFOPLIST_FILE = "HelloCordova/HelloCordova-Info.plist";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = "@executable_path/Frameworks";
|
||||
PRODUCT_NAME = HelloCordova;
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
TARGETED_DEVICE_FAMILY = 1;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
C01FCF4F08A954540054247B /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 3047A5111AB8059700498E2A /* build.xcconfig */;
|
||||
buildSettings = {
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = c99;
|
||||
GCC_THUMB_SUPPORT = NO;
|
||||
GCC_VERSION = "";
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
SDKROOT = iphoneos;
|
||||
SKIP_INSTALL = NO;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
C01FCF5008A954540054247B /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 3047A5111AB8059700498E2A /* build.xcconfig */;
|
||||
buildSettings = {
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = c99;
|
||||
GCC_THUMB_SUPPORT = NO;
|
||||
GCC_VERSION = "";
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
SDKROOT = iphoneos;
|
||||
SKIP_INSTALL = NO;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "HelloCordova" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
1D6058940D05DD3E006BFB54 /* Debug */,
|
||||
1D6058950D05DD3E006BFB54 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
C01FCF4E08A954540054247B /* Build configuration list for PBXProject "HelloCordova" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
C01FCF4F08A954540054247B /* Debug */,
|
||||
C01FCF5008A954540054247B /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = 29B97313FDCFA39411CA2CEA /* Project object */;
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
<?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>SchemeUserState</key>
|
||||
<dict>
|
||||
<key>HelloCordova.xcscheme</key>
|
||||
<dict>
|
||||
<key>orderHint</key>
|
||||
<integer>2</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</dict>
|
||||
</plist>
|
||||
7
src/cordova/platforms/ios/HelloCordova.xcworkspace/contents.xcworkspacedata
generated
Normal file
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Workspace
|
||||
version = "1.0">
|
||||
<FileRef
|
||||
location = "group:HelloCordova.xcodeproj">
|
||||
</FileRef>
|
||||
</Workspace>
|
||||
@@ -0,0 +1,8 @@
|
||||
<?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>IDEDidComputeMac32BitWarning</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -0,0 +1,91 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "0730"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
buildImplicitDependencies = "YES">
|
||||
<BuildActionEntries>
|
||||
<BuildActionEntry
|
||||
buildForTesting = "YES"
|
||||
buildForRunning = "YES"
|
||||
buildForProfiling = "YES"
|
||||
buildForArchiving = "YES"
|
||||
buildForAnalyzing = "YES">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "1D6058900D05DD3D006BFB54"
|
||||
BuildableName = "HelloCordova.app"
|
||||
BlueprintName = "HelloCordova"
|
||||
ReferencedContainer = "container:HelloCordova.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildActionEntry>
|
||||
</BuildActionEntries>
|
||||
</BuildAction>
|
||||
<TestAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||
<Testables>
|
||||
</Testables>
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "1D6058900D05DD3D006BFB54"
|
||||
BuildableName = "HelloCordova.app"
|
||||
BlueprintName = "HelloCordova"
|
||||
ReferencedContainer = "container:HelloCordova.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</TestAction>
|
||||
<LaunchAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
launchStyle = "0"
|
||||
useCustomWorkingDirectory = "NO"
|
||||
ignoresPersistentStateOnLaunch = "NO"
|
||||
debugDocumentVersioning = "YES"
|
||||
debugServiceExtension = "internal"
|
||||
allowLocationSimulation = "YES">
|
||||
<BuildableProductRunnable
|
||||
runnableDebuggingMode = "0">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "1D6058900D05DD3D006BFB54"
|
||||
BuildableName = "HelloCordova.app"
|
||||
BlueprintName = "HelloCordova"
|
||||
ReferencedContainer = "container:HelloCordova.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</LaunchAction>
|
||||
<ProfileAction
|
||||
buildConfiguration = "Release"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||
savedToolIdentifier = ""
|
||||
useCustomWorkingDirectory = "NO"
|
||||
debugDocumentVersioning = "YES">
|
||||
<BuildableProductRunnable
|
||||
runnableDebuggingMode = "0">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "1D6058900D05DD3D006BFB54"
|
||||
BuildableName = "HelloCordova.app"
|
||||
BlueprintName = "HelloCordova"
|
||||
ReferencedContainer = "container:HelloCordova.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
</ProfileAction>
|
||||
<AnalyzeAction
|
||||
buildConfiguration = "Debug">
|
||||
</AnalyzeAction>
|
||||
<ArchiveAction
|
||||
buildConfiguration = "Release"
|
||||
revealArchiveInOrganizer = "YES">
|
||||
</ArchiveAction>
|
||||
</Scheme>
|
||||
@@ -0,0 +1,14 @@
|
||||
<?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>SchemeUserState</key>
|
||||
<dict>
|
||||
<key>HelloCordova.xcscheme_^#shared#^_</key>
|
||||
<dict>
|
||||
<key>orderHint</key>
|
||||
<integer>0</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</dict>
|
||||
</plist>
|
||||
5
src/cordova/platforms/ios/HelloCordova/.gitignore
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
*.mode1v3
|
||||
*.perspectivev3
|
||||
*.pbxuser
|
||||
.DS_Store
|
||||
build/
|
||||
28
src/cordova/platforms/ios/HelloCordova/Bridging-Header.h
Normal file
@@ -0,0 +1,28 @@
|
||||
/*
|
||||
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.
|
||||
*/
|
||||
//
|
||||
// Bridging-Header.h
|
||||
// __PROJECT_NAME__
|
||||
//
|
||||
// Created by ___FULLUSERNAME___ on ___DATE___.
|
||||
// Copyright ___ORGANIZATIONNAME___ ___YEAR___. All rights reserved.
|
||||
//
|
||||
//
|
||||
// Use this file to import your target's public headers that you would like to expose to Swift.
|
||||
//
|
||||
|
||||
#import <Cordova/CDV.h>
|
||||
@@ -0,0 +1,60 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!--
|
||||
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.
|
||||
-->
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="10117" systemVersion="15G1004" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" initialViewController="01J-lp-oVM">
|
||||
<dependencies>
|
||||
<deployment identifier="iOS"/>
|
||||
<development version="6100" identifier="xcode"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="10085"/>
|
||||
</dependencies>
|
||||
<scenes>
|
||||
<!--View Controller-->
|
||||
<scene sceneID="EHf-IW-A2E">
|
||||
<objects>
|
||||
<viewController id="01J-lp-oVM" sceneMemberID="viewController">
|
||||
<layoutGuides>
|
||||
<viewControllerLayoutGuide type="top" id="Llm-lL-Icb"/>
|
||||
<viewControllerLayoutGuide type="bottom" id="xb3-aO-Qok"/>
|
||||
</layoutGuides>
|
||||
<view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
|
||||
<rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<imageView userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="LaunchStoryboard" translatesAutoresizingMaskIntoConstraints="NO" id="2ns-9I-Qjs">
|
||||
<rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
|
||||
</imageView>
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="trailing" secondItem="2ns-9I-Qjs" secondAttribute="trailing" id="FZL-3Z-NFz"/>
|
||||
<constraint firstItem="2ns-9I-Qjs" firstAttribute="bottom" secondItem="Ze5-6b-2t3" secondAttribute="bottom" id="L9l-pw-wXj"/>
|
||||
<constraint firstItem="2ns-9I-Qjs" firstAttribute="top" secondItem="Ze5-6b-2t3" secondAttribute="top" id="oGN-hc-Uzj"/>
|
||||
<constraint firstItem="2ns-9I-Qjs" firstAttribute="leading" secondItem="Ze5-6b-2t3" secondAttribute="leading" id="rS9-Wd-zY4"/>
|
||||
</constraints>
|
||||
</view>
|
||||
</viewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="53" y="375"/>
|
||||
</scene>
|
||||
</scenes>
|
||||
<resources>
|
||||
<image name="LaunchStoryboard" width="1366" height="1366"/>
|
||||
</resources>
|
||||
</document>
|
||||
33
src/cordova/platforms/ios/HelloCordova/Classes/AppDelegate.h
Normal file
@@ -0,0 +1,33 @@
|
||||
/*
|
||||
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.
|
||||
*/
|
||||
|
||||
//
|
||||
// AppDelegate.h
|
||||
// HelloCordova
|
||||
//
|
||||
// Created by ___FULLUSERNAME___ on ___DATE___.
|
||||
// Copyright ___ORGANIZATIONNAME___ ___YEAR___. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Cordova/CDVViewController.h>
|
||||
#import <Cordova/CDVAppDelegate.h>
|
||||
|
||||
@interface AppDelegate : CDVAppDelegate {}
|
||||
|
||||
@end
|
||||
39
src/cordova/platforms/ios/HelloCordova/Classes/AppDelegate.m
Normal file
@@ -0,0 +1,39 @@
|
||||
/*
|
||||
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.
|
||||
*/
|
||||
|
||||
//
|
||||
// AppDelegate.m
|
||||
// HelloCordova
|
||||
//
|
||||
// Created by ___FULLUSERNAME___ on ___DATE___.
|
||||
// Copyright ___ORGANIZATIONNAME___ ___YEAR___. All rights reserved.
|
||||
//
|
||||
|
||||
#import "AppDelegate.h"
|
||||
#import "MainViewController.h"
|
||||
|
||||
@implementation AppDelegate
|
||||
|
||||
- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions
|
||||
{
|
||||
self.viewController = [[MainViewController alloc] init];
|
||||
return [super application:application didFinishLaunchingWithOptions:launchOptions];
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,40 @@
|
||||
/*
|
||||
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.
|
||||
*/
|
||||
|
||||
//
|
||||
// MainViewController.h
|
||||
// HelloCordova
|
||||
//
|
||||
// Created by ___FULLUSERNAME___ on ___DATE___.
|
||||
// Copyright ___ORGANIZATIONNAME___ ___YEAR___. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Cordova/CDVViewController.h>
|
||||
#import <Cordova/CDVCommandDelegateImpl.h>
|
||||
#import <Cordova/CDVCommandQueue.h>
|
||||
|
||||
@interface MainViewController : CDVViewController
|
||||
|
||||
@end
|
||||
|
||||
@interface MainCommandDelegate : CDVCommandDelegateImpl
|
||||
@end
|
||||
|
||||
@interface MainCommandQueue : CDVCommandQueue
|
||||
@end
|
||||
@@ -0,0 +1,148 @@
|
||||
/*
|
||||
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.
|
||||
*/
|
||||
|
||||
//
|
||||
// MainViewController.h
|
||||
// HelloCordova
|
||||
//
|
||||
// Created by ___FULLUSERNAME___ on ___DATE___.
|
||||
// Copyright ___ORGANIZATIONNAME___ ___YEAR___. All rights reserved.
|
||||
//
|
||||
|
||||
#import "MainViewController.h"
|
||||
|
||||
@implementation MainViewController
|
||||
|
||||
- (id)initWithNibName:(NSString*)nibNameOrNil bundle:(NSBundle*)nibBundleOrNil
|
||||
{
|
||||
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
|
||||
if (self) {
|
||||
// Uncomment to override the CDVCommandDelegateImpl used
|
||||
// _commandDelegate = [[MainCommandDelegate alloc] initWithViewController:self];
|
||||
// Uncomment to override the CDVCommandQueue used
|
||||
// _commandQueue = [[MainCommandQueue alloc] initWithViewController:self];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (id)init
|
||||
{
|
||||
self = [super init];
|
||||
if (self) {
|
||||
// Uncomment to override the CDVCommandDelegateImpl used
|
||||
// _commandDelegate = [[MainCommandDelegate alloc] initWithViewController:self];
|
||||
// Uncomment to override the CDVCommandQueue used
|
||||
// _commandQueue = [[MainCommandQueue alloc] initWithViewController:self];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)didReceiveMemoryWarning
|
||||
{
|
||||
// Releases the view if it doesn't have a superview.
|
||||
[super didReceiveMemoryWarning];
|
||||
|
||||
// Release any cached data, images, etc that aren't in use.
|
||||
}
|
||||
|
||||
#pragma mark View lifecycle
|
||||
|
||||
- (void)viewWillAppear:(BOOL)animated
|
||||
{
|
||||
// View defaults to full size. If you want to customize the view's size, or its subviews (e.g. webView),
|
||||
// you can do so here.
|
||||
|
||||
[super viewWillAppear:animated];
|
||||
}
|
||||
|
||||
- (void)viewDidLoad
|
||||
{
|
||||
[super viewDidLoad];
|
||||
// Do any additional setup after loading the view from its nib.
|
||||
}
|
||||
|
||||
- (void)viewDidUnload
|
||||
{
|
||||
[super viewDidUnload];
|
||||
// Release any retained subviews of the main view.
|
||||
// e.g. self.myOutlet = nil;
|
||||
}
|
||||
|
||||
/* Comment out the block below to over-ride */
|
||||
|
||||
/*
|
||||
- (UIWebView*) newCordovaViewWithFrame:(CGRect)bounds
|
||||
{
|
||||
return[super newCordovaViewWithFrame:bounds];
|
||||
}
|
||||
|
||||
// CB-12098
|
||||
#if __IPHONE_OS_VERSION_MAX_ALLOWED < 90000
|
||||
- (NSUInteger)supportedInterfaceOrientations
|
||||
#else
|
||||
- (UIInterfaceOrientationMask)supportedInterfaceOrientations
|
||||
#endif
|
||||
{
|
||||
return [super supportedInterfaceOrientations];
|
||||
}
|
||||
|
||||
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
|
||||
{
|
||||
return [super shouldAutorotateToInterfaceOrientation:interfaceOrientation];
|
||||
}
|
||||
|
||||
- (BOOL)shouldAutorotate
|
||||
{
|
||||
return [super shouldAutorotate];
|
||||
}
|
||||
*/
|
||||
|
||||
@end
|
||||
|
||||
@implementation MainCommandDelegate
|
||||
|
||||
/* To override the methods, uncomment the line in the init function(s)
|
||||
in MainViewController.m
|
||||
*/
|
||||
|
||||
#pragma mark CDVCommandDelegate implementation
|
||||
|
||||
- (id)getCommandInstance:(NSString*)className
|
||||
{
|
||||
return [super getCommandInstance:className];
|
||||
}
|
||||
|
||||
- (NSString*)pathForResource:(NSString*)resourcepath
|
||||
{
|
||||
return [super pathForResource:resourcepath];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@implementation MainCommandQueue
|
||||
|
||||
/* To override, uncomment the line in the init function(s)
|
||||
in MainViewController.m
|
||||
*/
|
||||
- (BOOL)execute:(CDVInvokedUrlCommand*)command
|
||||
{
|
||||
return [super execute:command];
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,138 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
-->
|
||||
<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="8.00">
|
||||
<data>
|
||||
<int key="IBDocument.SystemTarget">1280</int>
|
||||
<string key="IBDocument.SystemVersion">11C25</string>
|
||||
<string key="IBDocument.InterfaceBuilderVersion">1919</string>
|
||||
<string key="IBDocument.AppKitVersion">1138.11</string>
|
||||
<string key="IBDocument.HIToolboxVersion">566.00</string>
|
||||
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
|
||||
<string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string key="NS.object.0">916</string>
|
||||
</object>
|
||||
<array key="IBDocument.IntegratedClassDependencies">
|
||||
<string>IBProxyObject</string>
|
||||
<string>IBUIView</string>
|
||||
</array>
|
||||
<array key="IBDocument.PluginDependencies">
|
||||
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
</array>
|
||||
<object class="NSMutableDictionary" key="IBDocument.Metadata">
|
||||
<string key="NS.key.0">PluginDependencyRecalculationVersion</string>
|
||||
<integer value="1" key="NS.object.0"/>
|
||||
</object>
|
||||
<array class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
|
||||
<object class="IBProxyObject" id="372490531">
|
||||
<string key="IBProxiedObjectIdentifier">IBFilesOwner</string>
|
||||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
</object>
|
||||
<object class="IBProxyObject" id="975951072">
|
||||
<string key="IBProxiedObjectIdentifier">IBFirstResponder</string>
|
||||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
</object>
|
||||
<object class="IBUIView" id="191373211">
|
||||
<reference key="NSNextResponder"/>
|
||||
<int key="NSvFlags">274</int>
|
||||
<string key="NSFrame">{{0, 20}, {320, 460}}</string>
|
||||
<reference key="NSSuperview"/>
|
||||
<reference key="NSWindow"/>
|
||||
<object class="NSColor" key="IBUIBackgroundColor">
|
||||
<int key="NSColorSpace">3</int>
|
||||
<bytes key="NSWhite">MQA</bytes>
|
||||
<object class="NSColorSpace" key="NSCustomColorSpace">
|
||||
<int key="NSID">2</int>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBUISimulatedStatusBarMetrics" key="IBUISimulatedStatusBarMetrics"/>
|
||||
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
</object>
|
||||
</array>
|
||||
<object class="IBObjectContainer" key="IBDocument.Objects">
|
||||
<array class="NSMutableArray" key="connectionRecords">
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBCocoaTouchOutletConnection" key="connection">
|
||||
<string key="label">view</string>
|
||||
<reference key="source" ref="372490531"/>
|
||||
<reference key="destination" ref="191373211"/>
|
||||
</object>
|
||||
<int key="connectionID">3</int>
|
||||
</object>
|
||||
</array>
|
||||
<object class="IBMutableOrderedSet" key="objectRecords">
|
||||
<array key="orderedObjects">
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">0</int>
|
||||
<array key="object" id="0"/>
|
||||
<reference key="children" ref="1000"/>
|
||||
<nil key="parent"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">1</int>
|
||||
<reference key="object" ref="191373211"/>
|
||||
<reference key="parent" ref="0"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">-1</int>
|
||||
<reference key="object" ref="372490531"/>
|
||||
<reference key="parent" ref="0"/>
|
||||
<string key="objectName">File's Owner</string>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">-2</int>
|
||||
<reference key="object" ref="975951072"/>
|
||||
<reference key="parent" ref="0"/>
|
||||
</object>
|
||||
</array>
|
||||
</object>
|
||||
<dictionary class="NSMutableDictionary" key="flattenedProperties">
|
||||
<string key="-1.CustomClassName">MainViewController</string>
|
||||
<string key="-1.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string key="-2.CustomClassName">UIResponder</string>
|
||||
<string key="-2.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string key="1.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
</dictionary>
|
||||
<dictionary class="NSMutableDictionary" key="unlocalizedProperties"/>
|
||||
<nil key="activeLocalization"/>
|
||||
<dictionary class="NSMutableDictionary" key="localizations"/>
|
||||
<nil key="sourceID"/>
|
||||
<int key="maxID">3</int>
|
||||
</object>
|
||||
<object class="IBClassDescriber" key="IBDocument.Classes">
|
||||
<array class="NSMutableArray" key="referencedPartialClassDescriptions">
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">MainViewController</string>
|
||||
<string key="superclassName">UIViewController</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBProjectSource</string>
|
||||
<string key="minorKey">./Classes/MainViewController.h</string>
|
||||
</object>
|
||||
</object>
|
||||
</array>
|
||||
</object>
|
||||
<int key="IBDocument.localizationMode">0</int>
|
||||
<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaTouchFramework</string>
|
||||
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
|
||||
<int key="IBDocument.defaultPropertyAccessControl">3</int>
|
||||
<string key="IBCocoaTouchPluginVersion">916</string>
|
||||
</data>
|
||||
</archive>
|
||||
@@ -0,0 +1,24 @@
|
||||
<?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.
|
||||
-->
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -0,0 +1,24 @@
|
||||
<?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.
|
||||
-->
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -0,0 +1,56 @@
|
||||
<?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>CFBundleDevelopmentRegion</key>
|
||||
<string>English</string>
|
||||
<key>CFBundleDisplayName</key>
|
||||
<string>HelloCordova</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>${EXECUTABLE_NAME}</string>
|
||||
<key>CFBundleIcons</key>
|
||||
<dict/>
|
||||
<key>CFBundleIcons~ipad</key>
|
||||
<dict/>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>io.nicco.app.fotm.cordova</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>${PRODUCT_NAME}</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1.0.0</string>
|
||||
<key>LSRequiresIPhoneOS</key>
|
||||
<true/>
|
||||
<key>NSAppTransportSecurity</key>
|
||||
<dict>
|
||||
<key>NSAllowsArbitraryLoads</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>NSMainNibFile</key>
|
||||
<string/>
|
||||
<key>NSMainNibFile~ipad</key>
|
||||
<string/>
|
||||
<key>UIRequiresFullScreen</key>
|
||||
<true/>
|
||||
<key>UISupportedInterfaceOrientations</key>
|
||||
<array>
|
||||
<string>UIInterfaceOrientationPortrait</string>
|
||||
</array>
|
||||
<key>UISupportedInterfaceOrientations~ipad</key>
|
||||
<array>
|
||||
<string>UIInterfaceOrientationPortrait</string>
|
||||
<string>UIInterfaceOrientationLandscapeLeft</string>
|
||||
<string>UIInterfaceOrientationPortraitUpsideDown</string>
|
||||
<string>UIInterfaceOrientationLandscapeRight</string>
|
||||
</array>
|
||||
<key>NSCameraUsageDescription</key>
|
||||
<string>need camera access to take pictures</string>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -0,0 +1,26 @@
|
||||
/*
|
||||
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.
|
||||
*/
|
||||
//
|
||||
// Prefix header for all source files of the 'HelloCordova' target in the 'HelloCordova' project
|
||||
//
|
||||
|
||||
#ifdef __OBJC__
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <UIKit/UIKit.h>
|
||||
#endif
|
||||
@@ -0,0 +1,194 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "20x20",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "20x20",
|
||||
"scale" : "3x"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "29x29",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "29x29",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "29x29",
|
||||
"scale" : "3x"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "40x40",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "40x40",
|
||||
"scale" : "3x"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "57x57",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "57x57",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "60x60",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"size" : "60x60",
|
||||
"idiom" : "iphone",
|
||||
"filename" : "Logo x3.png",
|
||||
"scale" : "3x"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"size" : "20x20",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"size" : "20x20",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"size" : "29x29",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"size" : "29x29",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"size" : "40x40",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"size" : "40x40",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"size" : "50x50",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"size" : "50x50",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"size" : "72x72",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"size" : "72x72",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"size" : "76x76",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"size" : "76x76",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"size" : "83.5x83.5",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"size" : "1024x1024",
|
||||
"idiom" : "ios-marketing",
|
||||
"filename" : "Logo App Store.png",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"size" : "24x24",
|
||||
"idiom" : "watch",
|
||||
"scale" : "2x",
|
||||
"role" : "notificationCenter",
|
||||
"subtype" : "38mm"
|
||||
},
|
||||
{
|
||||
"size" : "27.5x27.5",
|
||||
"idiom" : "watch",
|
||||
"scale" : "2x",
|
||||
"role" : "notificationCenter",
|
||||
"subtype" : "42mm"
|
||||
},
|
||||
{
|
||||
"size" : "29x29",
|
||||
"idiom" : "watch",
|
||||
"role" : "companionSettings",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"size" : "29x29",
|
||||
"idiom" : "watch",
|
||||
"role" : "companionSettings",
|
||||
"scale" : "3x"
|
||||
},
|
||||
{
|
||||
"size" : "40x40",
|
||||
"idiom" : "watch",
|
||||
"scale" : "2x",
|
||||
"role" : "appLauncher",
|
||||
"subtype" : "38mm"
|
||||
},
|
||||
{
|
||||
"size" : "44x44",
|
||||
"idiom" : "watch",
|
||||
"scale" : "2x",
|
||||
"role" : "longLook",
|
||||
"subtype" : "42mm"
|
||||
},
|
||||
{
|
||||
"size" : "86x86",
|
||||
"idiom" : "watch",
|
||||
"scale" : "2x",
|
||||
"role" : "quickLook",
|
||||
"subtype" : "38mm"
|
||||
},
|
||||
{
|
||||
"size" : "98x98",
|
||||
"idiom" : "watch",
|
||||
"scale" : "2x",
|
||||
"role" : "quickLook",
|
||||
"subtype" : "42mm"
|
||||
},
|
||||
{
|
||||
"idiom" : "watch-marketing",
|
||||
"size" : "1024x1024",
|
||||
"scale" : "1x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 435 KiB |
|
After Width: | Height: | Size: 25 KiB |
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,176 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"extent": "full-screen",
|
||||
"idiom": "iphone",
|
||||
"subtype": "2436h",
|
||||
"filename": "Default-2436h.png",
|
||||
"minimum-system-version": "11.0",
|
||||
"orientation": "portrait",
|
||||
"scale": "3x"
|
||||
},
|
||||
{
|
||||
"extent": "full-screen",
|
||||
"idiom": "iphone",
|
||||
"subtype": "2436h",
|
||||
"filename": "Default-Landscape-2436h.png",
|
||||
"minimum-system-version": "11.0",
|
||||
"orientation": "landscape",
|
||||
"scale": "3x"
|
||||
},
|
||||
{
|
||||
"extent" : "full-screen",
|
||||
"idiom" : "iphone",
|
||||
"subtype" : "736h",
|
||||
"filename" : "Default-736h.png",
|
||||
"minimum-system-version" : "8.0",
|
||||
"orientation" : "portrait",
|
||||
"scale" : "3x"
|
||||
},
|
||||
{
|
||||
"extent" : "full-screen",
|
||||
"idiom" : "iphone",
|
||||
"subtype" : "736h",
|
||||
"filename" : "Default-Landscape-736h.png",
|
||||
"minimum-system-version" : "8.0",
|
||||
"orientation" : "landscape",
|
||||
"scale" : "3x"
|
||||
},
|
||||
{
|
||||
"extent" : "full-screen",
|
||||
"idiom" : "iphone",
|
||||
"subtype" : "667h",
|
||||
"filename" : "Default-667h.png",
|
||||
"minimum-system-version" : "8.0",
|
||||
"orientation" : "portrait",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"orientation" : "portrait",
|
||||
"idiom" : "iphone",
|
||||
"filename" : "Default@2x~iphone.png",
|
||||
"extent" : "full-screen",
|
||||
"minimum-system-version" : "7.0",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"extent" : "full-screen",
|
||||
"idiom" : "iphone",
|
||||
"subtype" : "retina4",
|
||||
"filename" : "Default-568h@2x~iphone.png",
|
||||
"minimum-system-version" : "7.0",
|
||||
"orientation" : "portrait",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"orientation" : "portrait",
|
||||
"idiom" : "ipad",
|
||||
"filename" : "Default-Portrait~ipad.png",
|
||||
"extent" : "full-screen",
|
||||
"minimum-system-version" : "7.0",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"orientation" : "landscape",
|
||||
"idiom" : "ipad",
|
||||
"filename" : "Default-Landscape~ipad.png",
|
||||
"extent" : "full-screen",
|
||||
"minimum-system-version" : "7.0",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"orientation" : "portrait",
|
||||
"idiom" : "ipad",
|
||||
"filename" : "Default-Portrait@2x~ipad.png",
|
||||
"extent" : "full-screen",
|
||||
"minimum-system-version" : "7.0",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"orientation" : "landscape",
|
||||
"idiom" : "ipad",
|
||||
"filename" : "Default-Landscape@2x~ipad.png",
|
||||
"extent" : "full-screen",
|
||||
"minimum-system-version" : "7.0",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"orientation" : "portrait",
|
||||
"idiom" : "iphone",
|
||||
"filename" : "Default~iphone.png",
|
||||
"extent" : "full-screen",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"orientation" : "portrait",
|
||||
"idiom" : "iphone",
|
||||
"filename" : "Default@2x~iphone.png",
|
||||
"extent" : "full-screen",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"orientation" : "portrait",
|
||||
"idiom" : "iphone",
|
||||
"filename" : "Default-568h@2x~iphone.png",
|
||||
"extent" : "full-screen",
|
||||
"subtype" : "retina4",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"orientation" : "portrait",
|
||||
"idiom" : "ipad",
|
||||
"extent" : "to-status-bar",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"orientation" : "portrait",
|
||||
"idiom" : "ipad",
|
||||
"filename" : "Default-Portrait~ipad.png",
|
||||
"extent" : "full-screen",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"orientation" : "landscape",
|
||||
"idiom" : "ipad",
|
||||
"extent" : "to-status-bar",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"orientation" : "landscape",
|
||||
"idiom" : "ipad",
|
||||
"filename": "Default-Landscape~ipad.png",
|
||||
"extent" : "full-screen",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"orientation" : "portrait",
|
||||
"idiom" : "ipad",
|
||||
"extent" : "to-status-bar",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"orientation" : "portrait",
|
||||
"idiom" : "ipad",
|
||||
"filename" : "Default-Portrait@2x~ipad.png",
|
||||
"extent" : "full-screen",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"orientation" : "landscape",
|
||||
"idiom" : "ipad",
|
||||
"extent" : "to-status-bar",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"orientation" : "landscape",
|
||||
"idiom" : "ipad",
|
||||
"filename": "Default-Landscape@2x~ipad.png",
|
||||
"extent" : "full-screen",
|
||||
"scale" : "2x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 33 KiB |
|
After Width: | Height: | Size: 56 KiB |