From a1c17ac3d58e955bf1c653dffdfd1faaba0173fd Mon Sep 17 00:00:00 2001 From: user91572 Date: Fri, 12 Dec 2014 13:10:24 -0800 Subject: [PATCH 1/3] Upgraded phonegap version, fixed error in Splash and upgraded Splash plugin --- cordova/platforms/ios/CordovaLib/.npmignore | 6 + .../ios/CordovaLib/Classes/CDVAvailability.h | 5 +- .../CordovaLib/Classes/CDVCommandDelegate.h | 4 - .../Classes/CDVCommandDelegateImpl.h | 2 +- .../Classes/CDVCommandDelegateImpl.m | 14 +- .../ios/CordovaLib/Classes/CDVLocalStorage.m | 8 +- .../ios/CordovaLib/Classes/CDVPlugin.h | 9 +- .../ios/CordovaLib/Classes/CDVPluginResult.h | 9 +- .../ios/CordovaLib/Classes/CDVPluginResult.m | 2 +- .../ios/CordovaLib/Classes/CDVShared.h | 15 +- .../ios/CordovaLib/Classes/CDVShared.m | 59 -- .../ios/CordovaLib/Classes/CDVURLProtocol.m | 29 +- .../CordovaLib/Classes/CDVViewController.m | 14 +- .../CordovaLib/Classes/CDVWebViewDelegate.h | 4 +- .../ios/CordovaLib/Classes/CDVWhitelist.m | 3 +- .../ios/CordovaLib/Classes/NSData+Base64.h | 19 +- .../ios/CordovaLib/Classes/NSData+Base64.m | 87 ++- .../CordovaLib.xcodeproj/project.pbxproj | 4 - .../xcschemes/xcschememanagement.plist | 22 - .../xcschemes/xcschememanagement.plist | 22 - cordova/platforms/ios/CordovaLib/VERSION | 2 +- cordova/platforms/ios/CordovaLib/cordova.js | 55 +- .../ios/Hive.xcodeproj/project.pbxproj | 25 +- .../xcshareddata/Hive.xccheckout | 16 +- .../ios/Hive/Classes/MainViewController.m | 4 +- cordova/platforms/ios/Hive/Hive-Info.plist | 2 +- .../CDVSplashScreen.h | 10 + .../CDVSplashScreen.m | 111 ++- .../platforms/ios/cordova/apple_ios_version | 24 - .../platforms/ios/cordova/apple_osx_version | 24 - .../platforms/ios/cordova/apple_xcode_version | 24 - cordova/platforms/ios/cordova/build.xcconfig | 0 cordova/platforms/ios/cordova/defaults.xml | 0 cordova/platforms/ios/cordova/version | 15 +- cordova/platforms/ios/platform_www/cordova.js | 55 +- cordova/platforms/ios/www/cordova.js | 55 +- cordova/platforms/ios/www/cordova_plugins.js | 18 +- cordova/plugins/ios.json | 14 +- .../.fetch.json | 2 +- .../RELEASENOTES.md | 27 + .../doc/de/index.md | 31 +- .../doc/es/index.md | 29 +- .../doc/fr/index.md | 33 +- .../doc/index.md | 12 +- .../doc/it/index.md | 27 +- .../doc/ja/index.md | 26 +- .../doc/ko/index.md | 23 +- .../doc/pl/index.md | 35 +- .../doc/ru/index.md | 75 ++ .../doc/zh/index.md | 30 +- .../package.json | 4 +- .../plugin.xml | 2 +- .../src/ios/CDVSplashScreen.h | 10 + .../src/ios/CDVSplashScreen.m | 111 ++- .../src/wp/SplashScreen.cs | 20 +- .../contents.xcworkspacedata | 7 + .../CDVSplashScreenTest.xccheckout | 41 + .../xcschemes/CordovaLib.xcscheme | 22 +- .../CDVSplashScreenLibTests/ImageNameTest.m | 702 ++++++++++++++++++ .../ImageNameTestDelegates.h | 57 ++ .../ImageNameTestDelegates.m | 200 +++++ .../CDVSplashScreenLibTests/Info.plist | 24 + .../project.pbxproj | 505 +++++++++++++ .../contents.xcworkspacedata | 7 + .../CDVSplashScreenTest.xccheckout | 41 + .../xcschemes/CDVSplashScreenLib.xcscheme} | 28 +- .../CDVSplashScreenLibTests.xcscheme | 96 +++ .../tests/ios/README.md | 21 + .../tests/ios/package.json | 13 + .../tests/plugin.xml | 29 + .../tests/tests.js | 62 ++ 71 files changed, 2517 insertions(+), 626 deletions(-) create mode 100644 cordova/platforms/ios/CordovaLib/.npmignore delete mode 100644 cordova/platforms/ios/CordovaLib/Classes/CDVShared.m delete mode 100644 cordova/platforms/ios/CordovaLib/CordovaLib.xcodeproj/xcuserdata/benjennings.xcuserdatad/xcschemes/xcschememanagement.plist delete mode 100644 cordova/platforms/ios/CordovaLib/CordovaLib.xcodeproj/xcuserdata/mattlenz.xcuserdatad/xcschemes/xcschememanagement.plist delete mode 100755 cordova/platforms/ios/cordova/apple_ios_version delete mode 100755 cordova/platforms/ios/cordova/apple_osx_version delete mode 100755 cordova/platforms/ios/cordova/apple_xcode_version mode change 100644 => 100755 cordova/platforms/ios/cordova/build.xcconfig mode change 100644 => 100755 cordova/platforms/ios/cordova/defaults.xml create mode 100644 cordova/plugins/org.apache.cordova.splashscreen/doc/ru/index.md create mode 100644 cordova/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest.xcworkspace/contents.xcworkspacedata create mode 100644 cordova/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest.xcworkspace/xcshareddata/CDVSplashScreenTest.xccheckout rename cordova/{platforms/ios/CordovaLib/CordovaLib.xcodeproj/xcuserdata/benjennings.xcuserdatad => plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest.xcworkspace/xcshareddata}/xcschemes/CordovaLib.xcscheme (67%) create mode 100644 cordova/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenLibTests/ImageNameTest.m create mode 100644 cordova/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenLibTests/ImageNameTestDelegates.h create mode 100644 cordova/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenLibTests/ImageNameTestDelegates.m create mode 100644 cordova/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenLibTests/Info.plist create mode 100644 cordova/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/project.pbxproj create mode 100644 cordova/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 cordova/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/project.xcworkspace/xcshareddata/CDVSplashScreenTest.xccheckout rename cordova/{platforms/ios/CordovaLib/CordovaLib.xcodeproj/xcuserdata/mattlenz.xcuserdatad/xcschemes/CordovaLib.xcscheme => plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/xcshareddata/xcschemes/CDVSplashScreenLib.xcscheme} (62%) create mode 100644 cordova/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/xcshareddata/xcschemes/CDVSplashScreenLibTests.xcscheme create mode 100644 cordova/plugins/org.apache.cordova.splashscreen/tests/ios/README.md create mode 100644 cordova/plugins/org.apache.cordova.splashscreen/tests/ios/package.json create mode 100644 cordova/plugins/org.apache.cordova.splashscreen/tests/plugin.xml create mode 100644 cordova/plugins/org.apache.cordova.splashscreen/tests/tests.js diff --git a/cordova/platforms/ios/CordovaLib/.npmignore b/cordova/platforms/ios/CordovaLib/.npmignore new file mode 100644 index 0000000..c946984 --- /dev/null +++ b/cordova/platforms/ios/CordovaLib/.npmignore @@ -0,0 +1,6 @@ +build/* +*.pbxuser +*.perspectivev3 +*.mode1v3 +javascripts/cordova-*.js + diff --git a/cordova/platforms/ios/CordovaLib/Classes/CDVAvailability.h b/cordova/platforms/ios/CordovaLib/Classes/CDVAvailability.h index 7f25336..6c711c8 100644 --- a/cordova/platforms/ios/CordovaLib/Classes/CDVAvailability.h +++ b/cordova/platforms/ios/CordovaLib/Classes/CDVAvailability.h @@ -50,6 +50,9 @@ #define __CORDOVA_3_4_0 30400 #define __CORDOVA_3_4_1 30401 #define __CORDOVA_3_5_0 30500 +#define __CORDOVA_3_6_0 30600 +#define __CORDOVA_3_6_1 30601 +#define __CORDOVA_3_6_3 30603 #define __CORDOVA_NA 99999 /* not available */ /* @@ -60,7 +63,7 @@ #endif */ #ifndef CORDOVA_VERSION_MIN_REQUIRED - #define CORDOVA_VERSION_MIN_REQUIRED __CORDOVA_3_5_0 + #define CORDOVA_VERSION_MIN_REQUIRED __CORDOVA_3_6_3 #endif /* diff --git a/cordova/platforms/ios/CordovaLib/Classes/CDVCommandDelegate.h b/cordova/platforms/ios/CordovaLib/Classes/CDVCommandDelegate.h index 0401136..04df6bc 100644 --- a/cordova/platforms/ios/CordovaLib/Classes/CDVCommandDelegate.h +++ b/cordova/platforms/ios/CordovaLib/Classes/CDVCommandDelegate.h @@ -31,10 +31,6 @@ - (NSString*)pathForResource:(NSString*)resourcepath; - (id)getCommandInstance:(NSString*)pluginName; -// Plugins should not be using this interface to call other plugins since it -// will result in bogus callbacks being made. -- (BOOL)execute:(CDVInvokedUrlCommand*)command CDV_DEPRECATED(2.2, "Use direct method calls instead."); - // Sends a plugin result to the JS. This is thread-safe. - (void)sendPluginResult:(CDVPluginResult*)result callbackId:(NSString*)callbackId; // Evaluates the given JS. This is thread-safe. diff --git a/cordova/platforms/ios/CordovaLib/Classes/CDVCommandDelegateImpl.h b/cordova/platforms/ios/CordovaLib/Classes/CDVCommandDelegateImpl.h index 7b41df7..0531134 100644 --- a/cordova/platforms/ios/CordovaLib/Classes/CDVCommandDelegateImpl.h +++ b/cordova/platforms/ios/CordovaLib/Classes/CDVCommandDelegateImpl.h @@ -26,7 +26,7 @@ @interface CDVCommandDelegateImpl : NSObject { @private __weak CDVViewController* _viewController; - NSRegularExpression *_callbackIdPattern; + NSRegularExpression* _callbackIdPattern; @protected __weak CDVCommandQueue* _commandQueue; BOOL _delayResponses; diff --git a/cordova/platforms/ios/CordovaLib/Classes/CDVCommandDelegateImpl.m b/cordova/platforms/ios/CordovaLib/Classes/CDVCommandDelegateImpl.m index a72ef46..76f5ef4 100644 --- a/cordova/platforms/ios/CordovaLib/Classes/CDVCommandDelegateImpl.m +++ b/cordova/platforms/ios/CordovaLib/Classes/CDVCommandDelegateImpl.m @@ -95,9 +95,14 @@ - (void)evalJsHelper:(NSString*)js } } -- (BOOL)isValidCallbackId:(NSString *)callbackId +- (BOOL)isValidCallbackId:(NSString*)callbackId { - NSError *err = nil; + NSError* err = nil; + + if (callbackId == nil) { + return NO; + } + // Initialize on first use if (_callbackIdPattern == nil) { // Catch any invalid characters in the callback id. @@ -150,11 +155,6 @@ - (void)evalJs:(NSString*)js scheduledOnRunLoop:(BOOL)scheduledOnRunLoop } } -- (BOOL)execute:(CDVInvokedUrlCommand*)command -{ - return [_commandQueue execute:command]; -} - - (id)getCommandInstance:(NSString*)pluginName { return [_viewController getCommandInstance:pluginName]; diff --git a/cordova/platforms/ios/CordovaLib/Classes/CDVLocalStorage.m b/cordova/platforms/ios/CordovaLib/Classes/CDVLocalStorage.m index b018ae5..5e2f4bb 100644 --- a/cordova/platforms/ios/CordovaLib/Classes/CDVLocalStorage.m +++ b/cordova/platforms/ios/CordovaLib/Classes/CDVLocalStorage.m @@ -341,10 +341,10 @@ + (void)__restoreLegacyDatabaseLocationsWithBackupType:(NSString*)backupType if ([backupType isEqualToString:@"cloud"]) { #ifdef DEBUG - NSLog(@"\n\nStarted backup to iCloud! Please be careful." - "\nYour application might rejected by Apple if you store too much data." - "\nFor more information please read \"iOS Data Storage Guidelines\"" - "\nYou could find it at the following address https://developer.apple.com/icloud/documentation/data-storage/ .\n\n"); + 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/\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]]; diff --git a/cordova/platforms/ios/CordovaLib/Classes/CDVPlugin.h b/cordova/platforms/ios/CordovaLib/Classes/CDVPlugin.h index 3def31e..5e8b283 100644 --- a/cordova/platforms/ios/CordovaLib/Classes/CDVPlugin.h +++ b/cordova/platforms/ios/CordovaLib/Classes/CDVPlugin.h @@ -58,9 +58,10 @@ extern NSString* const CDVRemoteNotificationError; - (id)appDelegate; -// TODO(agrieve): Deprecate these in favour of using CDVCommandDelegate directly. -- (NSString*)writeJavascript:(NSString*)javascript; -- (NSString*)success:(CDVPluginResult*)pluginResult callbackId:(NSString*)callbackId; -- (NSString*)error:(CDVPluginResult*)pluginResult callbackId:(NSString*)callbackId; +- (NSString*)writeJavascript:(NSString*)javascript CDV_DEPRECATED(3.6, "Use the CDVCommandDelegate equivalent of evalJs:. This will be removed in 4.0.0"); + +- (NSString*)success:(CDVPluginResult*)pluginResult callbackId:(NSString*)callbackId CDV_DEPRECATED(3.6, "Use the CDVCommandDelegate equivalent of sendPluginResult:callbackId. This will be removed in 4.0.0"); + +- (NSString*)error:(CDVPluginResult*)pluginResult callbackId:(NSString*)callbackId CDV_DEPRECATED(3.6, "Use the CDVCommandDelegate equivalent of sendPluginResult:callbackId. This will be removed in 4.0.0"); @end diff --git a/cordova/platforms/ios/CordovaLib/Classes/CDVPluginResult.h b/cordova/platforms/ios/CordovaLib/Classes/CDVPluginResult.h index 11b5377..e624d4d 100644 --- a/cordova/platforms/ios/CordovaLib/Classes/CDVPluginResult.h +++ b/cordova/platforms/ios/CordovaLib/Classes/CDVPluginResult.h @@ -18,6 +18,7 @@ */ #import +#import "CDVAvailability.h" typedef enum { CDVCommandStatus_NO_RESULT = 0, @@ -61,8 +62,10 @@ typedef enum { - (NSString*)argumentsAsJSON; // These methods are used by the legacy plugin return result method -- (NSString*)toJSONString; -- (NSString*)toSuccessCallbackString:(NSString*)callbackId; -- (NSString*)toErrorCallbackString:(NSString*)callbackId; +- (NSString*)toJSONString CDV_DEPRECATED(3.6, "Only used by toSuccessCallbackString and toErrorCallbackString which are deprecated. This will be removed in 4.0.0"); + +- (NSString*)toSuccessCallbackString:(NSString*)callbackId CDV_DEPRECATED(3.6, "Use the CDVCommandDelegate method sendPluginResult:callbackId instead. This will be removed in 4.0.0"); + +- (NSString*)toErrorCallbackString:(NSString*)callbackId CDV_DEPRECATED(3.6, "Use the CDVCommandDelegate method sendPluginResult:callbackId instead. This will be removed in 4.0.0"); @end diff --git a/cordova/platforms/ios/CordovaLib/Classes/CDVPluginResult.m b/cordova/platforms/ios/CordovaLib/Classes/CDVPluginResult.m index af7c528..2eb46cd 100644 --- a/cordova/platforms/ios/CordovaLib/Classes/CDVPluginResult.m +++ b/cordova/platforms/ios/CordovaLib/Classes/CDVPluginResult.m @@ -96,7 +96,7 @@ - (CDVPluginResult*)initWithStatus:(CDVCommandStatus)statusOrdinal message:(id)t + (CDVPluginResult*)resultWithStatus:(CDVCommandStatus)statusOrdinal { - return [[self alloc] initWithStatus:statusOrdinal message:[org_apache_cordova_CommandStatusMsgs objectAtIndex:statusOrdinal]]; + return [[self alloc] initWithStatus:statusOrdinal message:nil]; } + (CDVPluginResult*)resultWithStatus:(CDVCommandStatus)statusOrdinal messageAsString:(NSString*)theMessage diff --git a/cordova/platforms/ios/CordovaLib/Classes/CDVShared.h b/cordova/platforms/ios/CordovaLib/Classes/CDVShared.h index c54567a..68acc5c 100644 --- a/cordova/platforms/ios/CordovaLib/Classes/CDVShared.h +++ b/cordova/platforms/ios/CordovaLib/Classes/CDVShared.h @@ -17,17 +17,6 @@ under the License. */ -#import +// This file was emptied out in 3.6.0 release (July 2014). +// It will be deleted in a future release. #import - -@interface NSError (JSONMethods) - -- (NSString*)JSONRepresentation; - -@end - -@interface CLLocation (JSONMethods) - -- (NSString*)JSONRepresentation; - -@end diff --git a/cordova/platforms/ios/CordovaLib/Classes/CDVShared.m b/cordova/platforms/ios/CordovaLib/Classes/CDVShared.m deleted file mode 100644 index ac82234..0000000 --- a/cordova/platforms/ios/CordovaLib/Classes/CDVShared.m +++ /dev/null @@ -1,59 +0,0 @@ -/* - 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 "CDVShared.h" - -#pragma mark - -#pragma mark CLLocation(JSONMethods) - -@implementation CLLocation (JSONMethods) - -- (NSString*)JSONRepresentation -{ - return [NSString stringWithFormat: - @"{ timestamp: %.00f, \ - coords: { latitude: %f, longitude: %f, altitude: %.02f, heading: %.02f, speed: %.02f, accuracy: %.02f, altitudeAccuracy: %.02f } \ - }", - [self.timestamp timeIntervalSince1970] * 1000.0, - self.coordinate.latitude, - self.coordinate.longitude, - self.altitude, - self.course, - self.speed, - self.horizontalAccuracy, - self.verticalAccuracy - ]; -} - -@end - -#pragma mark NSError(JSONMethods) - -@implementation NSError (JSONMethods) - -- (NSString*)JSONRepresentation -{ - return [NSString stringWithFormat: - @"{ code: %ld, message: '%@'}", - (long)self.code, - [self localizedDescription] - ]; -} - -@end diff --git a/cordova/platforms/ios/CordovaLib/Classes/CDVURLProtocol.m b/cordova/platforms/ios/CordovaLib/Classes/CDVURLProtocol.m index eeee916..3ecb6a0 100644 --- a/cordova/platforms/ios/CordovaLib/Classes/CDVURLProtocol.m +++ b/cordova/platforms/ios/CordovaLib/Classes/CDVURLProtocol.m @@ -27,7 +27,9 @@ Licensed to the Apache Software Foundation (ASF) under one #import "CDVViewController.h" @interface CDVHTTPURLResponse : NSHTTPURLResponse -@property (nonatomic) NSInteger statusCode; +#ifndef __IPHONE_8_0 + @property (nonatomic) NSInteger statusCode; +#endif @end static CDVWhitelist* gWhitelist = nil; @@ -166,8 +168,8 @@ - (void)startLoading // We have the asset! Get the data and send it along. ALAssetRepresentation* assetRepresentation = [asset defaultRepresentation]; NSString* MIMEType = (__bridge_transfer NSString*)UTTypeCopyPreferredTagWithClass((__bridge CFStringRef)[assetRepresentation UTI], kUTTagClassMIMEType); - Byte* buffer = (Byte*)malloc([assetRepresentation size]); - NSUInteger bufferSize = [assetRepresentation getBytes:buffer fromOffset:0.0 length:[assetRepresentation size] error:nil]; + Byte* buffer = (Byte*)malloc((unsigned long)[assetRepresentation size]); + NSUInteger bufferSize = [assetRepresentation getBytes:buffer fromOffset:0.0 length:(NSUInteger)[assetRepresentation size] error:nil]; NSData* data = [NSData dataWithBytesNoCopy:buffer length:bufferSize freeWhenDone:YES]; [self sendResponseWithResponseCode:200 data:data mimeType:MIMEType]; } else { @@ -205,12 +207,21 @@ - (void)sendResponseWithResponseCode:(NSInteger)statusCode data:(NSData*)data mi mimeType = @"text/plain"; } NSString* encodingName = [@"text/plain" isEqualToString : mimeType] ? @"UTF-8" : nil; - CDVHTTPURLResponse* response = - [[CDVHTTPURLResponse alloc] initWithURL:[[self request] URL] - MIMEType:mimeType - expectedContentLength:[data length] - textEncodingName:encodingName]; - response.statusCode = statusCode; + +#ifdef __IPHONE_8_0 + NSHTTPURLResponse* response = [NSHTTPURLResponse alloc]; +#else + CDVHTTPURLResponse* response = [CDVHTTPURLResponse alloc]; +#endif + + response = [response initWithURL:[[self request] URL] + MIMEType:mimeType + expectedContentLength:[data length] + textEncodingName:encodingName]; + +#ifndef __IPHONE_8_0 + response.statusCode = statusCode; +#endif [[self client] URLProtocol:self didReceiveResponse:response cacheStoragePolicy:NSURLCacheStorageNotAllowed]; if (data != nil) { diff --git a/cordova/platforms/ios/CordovaLib/Classes/CDVViewController.m b/cordova/platforms/ios/CordovaLib/Classes/CDVViewController.m index 3a5cd7d..66c1850 100644 --- a/cordova/platforms/ios/CordovaLib/Classes/CDVViewController.m +++ b/cordova/platforms/ios/CordovaLib/Classes/CDVViewController.m @@ -78,8 +78,9 @@ - (void)__init self.supportedOrientations = [self parseInterfaceOrientations: [[[NSBundle mainBundle] infoDictionary] objectForKey:@"UISupportedInterfaceOrientations"]]; + [self printVersion]; [self printMultitaskingInfo]; - [self printDeprecationNotice]; + [self printPlatformVersionWarning]; self.initialized = YES; // load config.xml settings @@ -118,10 +119,15 @@ - (void)viewWillDisappear:(BOOL)animated [super viewWillDisappear:animated]; } -- (void)printDeprecationNotice +- (void)printVersion { - if (!IsAtLeastiOSVersion(@"5.0")) { - NSLog(@"CRITICAL: For Cordova 2.0, you will need to upgrade to at least iOS 5.0 or greater. Your current version of iOS is %@.", + NSLog(@"Apache Cordova native platform version %@ is starting.", CDV_VERSION); +} + +- (void)printPlatformVersionWarning +{ + if (!IsAtLeastiOSVersion(@"6.0")) { + NSLog(@"CRITICAL: For Cordova 3.5.0 and above, you will need to upgrade to at least iOS 6.0 or greater. Your current version of iOS is %@.", [[UIDevice currentDevice] systemVersion] ); } diff --git a/cordova/platforms/ios/CordovaLib/Classes/CDVWebViewDelegate.h b/cordova/platforms/ios/CordovaLib/Classes/CDVWebViewDelegate.h index 06045e6..4b60bab 100644 --- a/cordova/platforms/ios/CordovaLib/Classes/CDVWebViewDelegate.h +++ b/cordova/platforms/ios/CordovaLib/Classes/CDVWebViewDelegate.h @@ -18,6 +18,7 @@ */ #import +#import "CDVAvailability.h" /** * Distinguishes top-level navigations from sub-frame navigations. @@ -34,7 +35,8 @@ } - (id)initWithDelegate:(NSObject *)delegate; -- (BOOL)request:(NSURLRequest*)newRequest isFragmentIdentifierToRequest:(NSURLRequest*)originalRequest __attribute__((deprecated("Deprecated Since 3.5.0 -Use request:isEqualToRequestAfterStrippingFragments: instead."))); +- (BOOL)request:(NSURLRequest*)newRequest isFragmentIdentifierToRequest:(NSURLRequest*)originalRequest CDV_DEPRECATED(3.5, "Use request:isEqualToRequestAfterStrippingFragments: instead."); + - (BOOL)request:(NSURLRequest*)newRequest isEqualToRequestAfterStrippingFragments:(NSURLRequest*)originalRequest; @end diff --git a/cordova/platforms/ios/CordovaLib/Classes/CDVWhitelist.m b/cordova/platforms/ios/CordovaLib/Classes/CDVWhitelist.m index d27a8e6..8e3be75 100644 --- a/cordova/platforms/ios/CordovaLib/Classes/CDVWhitelist.m +++ b/cordova/platforms/ios/CordovaLib/Classes/CDVWhitelist.m @@ -44,11 +44,12 @@ + (NSString*)regexFromPattern:(NSString*)pattern allowWildcards:(bool)allowWildc if (allowWildcards) { regex = [regex stringByReplacingOccurrencesOfString:@"\\*" withString:@".*"]; + /* [NSURL path] has the peculiarity that a trailing slash at the end of a path * will be omitted. This regex tweak compensates for that. */ if ([regex hasSuffix:@"\\/.*"]) { - regex = [NSString stringWithFormat:@"%@(\\/.*)?", [regex substringToIndex:([regex length]-4)]]; + regex = [NSString stringWithFormat:@"%@(\\/.*)?", [regex substringToIndex:([regex length] - 4)]]; } } return [NSString stringWithFormat:@"%@$", regex]; diff --git a/cordova/platforms/ios/CordovaLib/Classes/NSData+Base64.h b/cordova/platforms/ios/CordovaLib/Classes/NSData+Base64.h index ffe9c83..d5a9a6f 100644 --- a/cordova/platforms/ios/CordovaLib/Classes/NSData+Base64.h +++ b/cordova/platforms/ios/CordovaLib/Classes/NSData+Base64.h @@ -5,11 +5,20 @@ // Created by Matt Gallagher on 2009/06/03. // Copyright 2009 Matt Gallagher. All rights reserved. // -// Permission is given to use this source code file, free of charge, in any -// project, commercial or otherwise, entirely at your risk, with the condition -// that any redistribution (in part or whole) of source code must retain -// this copyright and permission notice. Attribution in compiled projects is -// appreciated but not required. +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. Permission is granted to anyone to +// use this software for any purpose, including commercial applications, and to +// alter it and redistribute it freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would be +// appreciated but is not required. +// 2. Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// 3. This notice may not be removed or altered from any source +// distribution. // #import diff --git a/cordova/platforms/ios/CordovaLib/Classes/NSData+Base64.m b/cordova/platforms/ios/CordovaLib/Classes/NSData+Base64.m index d0f2189..c9d67f9 100644 --- a/cordova/platforms/ios/CordovaLib/Classes/NSData+Base64.m +++ b/cordova/platforms/ios/CordovaLib/Classes/NSData+Base64.m @@ -5,11 +5,20 @@ // Created by Matt Gallagher on 2009/06/03. // Copyright 2009 Matt Gallagher. All rights reserved. // -// Permission is given to use this source code file, free of charge, in any -// project, commercial or otherwise, entirely at your risk, with the condition -// that any redistribution (in part or whole) of source code must retain -// this copyright and permission notice. Attribution in compiled projects is -// appreciated but not required. +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. Permission is granted to anyone to +// use this software for any purpose, including commercial applications, and to +// alter it and redistribute it freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would be +// appreciated but is not required. +// 2. Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// 3. This notice may not be removed or altered from any source +// distribution. // #import "NSData+Base64.h" @@ -17,7 +26,7 @@ // // Mapping from 6 bit pattern to ASCII character. // -static unsigned char cdvbase64EncodeLookup[65] = +static unsigned char base64EncodeLookup[65] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; // @@ -28,7 +37,7 @@ // // Mapping from ASCII character to 6 bit pattern. // -static unsigned char cdvbase64DecodeLookup[256] = +static unsigned char base64DecodeLookup[256] = { xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, @@ -51,8 +60,8 @@ // // Fundamental sizes of the binary and base64 encode/decode units in bytes // -#define CDV_BINARY_UNIT_SIZE 3 -#define CDV_BASE64_UNIT_SIZE 4 +#define BINARY_UNIT_SIZE 3 +#define BASE64_UNIT_SIZE 4 // // NewBase64Decode @@ -64,7 +73,7 @@ // length - the length of the string or -1 (to specify strlen should be used) // outputLength - if not-NULL, on output will contain the decoded length // -// returns the decoded buffer. Must be freed by caller. Length is given by +// returns the decoded buffer. Must be free'd by caller. Length is given by // outputLength. // void *CDVNewBase64Decode( @@ -76,7 +85,8 @@ length = strlen(inputBuffer); } - size_t outputBufferSize = (length / CDV_BASE64_UNIT_SIZE) * CDV_BINARY_UNIT_SIZE; + size_t outputBufferSize = + ((length + BASE64_UNIT_SIZE - 1) / BASE64_UNIT_SIZE) * BINARY_UNIT_SIZE; unsigned char* outputBuffer = (unsigned char*)malloc(outputBufferSize); size_t i = 0; @@ -86,17 +96,16 @@ // // Accumulate 4 valid characters (ignore everything else) // - unsigned char accumulated[CDV_BASE64_UNIT_SIZE]; - bzero(accumulated, sizeof(unsigned char) * CDV_BASE64_UNIT_SIZE); + unsigned char accumulated[BASE64_UNIT_SIZE]; size_t accumulateIndex = 0; while (i < length) { - unsigned char decode = cdvbase64DecodeLookup[inputBuffer[i++]]; + unsigned char decode = base64DecodeLookup[inputBuffer[i++]]; if (decode != xx) { accumulated[accumulateIndex] = decode; accumulateIndex++; - if (accumulateIndex == CDV_BASE64_UNIT_SIZE) { + if (accumulateIndex == BASE64_UNIT_SIZE) { break; } } @@ -105,9 +114,17 @@ // // Store the 6 bits from each of the 4 characters as 3 bytes // - outputBuffer[j] = (accumulated[0] << 2) | (accumulated[1] >> 4); - outputBuffer[j + 1] = (accumulated[1] << 4) | (accumulated[2] >> 2); - outputBuffer[j + 2] = (accumulated[2] << 6) | accumulated[3]; + // (Uses improved bounds checking suggested by Alexandre Colucci) + // + if (accumulateIndex >= 2) { + outputBuffer[j] = (accumulated[0] << 2) | (accumulated[1] >> 4); + } + if (accumulateIndex >= 3) { + outputBuffer[j + 1] = (accumulated[1] << 4) | (accumulated[2] >> 2); + } + if (accumulateIndex >= 4) { + outputBuffer[j + 2] = (accumulated[2] << 6) | accumulated[3]; + } j += accumulateIndex - 1; } @@ -118,7 +135,7 @@ } // -// NewBase64Decode +// NewBase64Encode // // Encodes the arbitrary data in the inputBuffer as base64 into a newly malloced // output buffer. @@ -130,7 +147,7 @@ // outputLength - if not-NULL, on output will contain the encoded length // (not including terminating 0 char) // -// returns the encoded buffer. Must be freed by caller. Length is given by +// returns the encoded buffer. Must be free'd by caller. Length is given by // outputLength. // char *CDVNewBase64Encode( @@ -143,16 +160,16 @@ #define MAX_NUM_PADDING_CHARS 2 #define OUTPUT_LINE_LENGTH 64 -#define INPUT_LINE_LENGTH ((OUTPUT_LINE_LENGTH / CDV_BASE64_UNIT_SIZE) * CDV_BINARY_UNIT_SIZE) -#define CR_LF_SIZE 0 +#define INPUT_LINE_LENGTH ((OUTPUT_LINE_LENGTH / BASE64_UNIT_SIZE) * BINARY_UNIT_SIZE) +#define CR_LF_SIZE 2 // // Byte accurate calculation of final buffer size // size_t outputBufferSize = - ((length / CDV_BINARY_UNIT_SIZE) - + ((length % CDV_BINARY_UNIT_SIZE) ? 1 : 0)) - * CDV_BASE64_UNIT_SIZE; + ((length / BINARY_UNIT_SIZE) + + ((length % BINARY_UNIT_SIZE) ? 1 : 0)) + * BASE64_UNIT_SIZE; if (separateLines) { outputBufferSize += (outputBufferSize / OUTPUT_LINE_LENGTH) * CR_LF_SIZE; @@ -181,16 +198,16 @@ lineEnd = length; } - for (; i + CDV_BINARY_UNIT_SIZE - 1 < lineEnd; i += CDV_BINARY_UNIT_SIZE) { + for (; i + BINARY_UNIT_SIZE - 1 < lineEnd; i += BINARY_UNIT_SIZE) { // // Inner loop: turn 48 bytes into 64 base64 characters // - outputBuffer[j++] = cdvbase64EncodeLookup[(inputBuffer[i] & 0xFC) >> 2]; - outputBuffer[j++] = cdvbase64EncodeLookup[((inputBuffer[i] & 0x03) << 4) + outputBuffer[j++] = base64EncodeLookup[(inputBuffer[i] & 0xFC) >> 2]; + outputBuffer[j++] = base64EncodeLookup[((inputBuffer[i] & 0x03) << 4) | ((inputBuffer[i + 1] & 0xF0) >> 4)]; - outputBuffer[j++] = cdvbase64EncodeLookup[((inputBuffer[i + 1] & 0x0F) << 2) + outputBuffer[j++] = base64EncodeLookup[((inputBuffer[i + 1] & 0x0F) << 2) | ((inputBuffer[i + 2] & 0xC0) >> 6)]; - outputBuffer[j++] = cdvbase64EncodeLookup[inputBuffer[i + 2] & 0x3F]; + outputBuffer[j++] = base64EncodeLookup[inputBuffer[i + 2] & 0x3F]; } if (lineEnd == length) { @@ -209,17 +226,17 @@ // // Handle the single '=' case // - outputBuffer[j++] = cdvbase64EncodeLookup[(inputBuffer[i] & 0xFC) >> 2]; - outputBuffer[j++] = cdvbase64EncodeLookup[((inputBuffer[i] & 0x03) << 4) + outputBuffer[j++] = base64EncodeLookup[(inputBuffer[i] & 0xFC) >> 2]; + outputBuffer[j++] = base64EncodeLookup[((inputBuffer[i] & 0x03) << 4) | ((inputBuffer[i + 1] & 0xF0) >> 4)]; - outputBuffer[j++] = cdvbase64EncodeLookup[(inputBuffer[i + 1] & 0x0F) << 2]; + outputBuffer[j++] = base64EncodeLookup[(inputBuffer[i + 1] & 0x0F) << 2]; outputBuffer[j++] = '='; } else if (i < length) { // // Handle the double '=' case // - outputBuffer[j++] = cdvbase64EncodeLookup[(inputBuffer[i] & 0xFC) >> 2]; - outputBuffer[j++] = cdvbase64EncodeLookup[(inputBuffer[i] & 0x03) << 4]; + outputBuffer[j++] = base64EncodeLookup[(inputBuffer[i] & 0xFC) >> 2]; + outputBuffer[j++] = base64EncodeLookup[(inputBuffer[i] & 0x03) << 4]; outputBuffer[j++] = '='; outputBuffer[j++] = '='; } diff --git a/cordova/platforms/ios/CordovaLib/CordovaLib.xcodeproj/project.pbxproj b/cordova/platforms/ios/CordovaLib/CordovaLib.xcodeproj/project.pbxproj index a084d16..6e67777 100644 --- a/cordova/platforms/ios/CordovaLib/CordovaLib.xcodeproj/project.pbxproj +++ b/cordova/platforms/ios/CordovaLib/CordovaLib.xcodeproj/project.pbxproj @@ -8,7 +8,6 @@ /* Begin PBXBuildFile section */ 1B701028177A61CF00AE11F4 /* CDVShared.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B701026177A61CF00AE11F4 /* CDVShared.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1B701029177A61CF00AE11F4 /* CDVShared.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B701027177A61CF00AE11F4 /* CDVShared.m */; }; 1F92F4A01314023E0046367C /* CDVPluginResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F92F49E1314023E0046367C /* CDVPluginResult.h */; settings = {ATTRIBUTES = (Public, ); }; }; 1F92F4A11314023E0046367C /* CDVPluginResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 1F92F49F1314023E0046367C /* CDVPluginResult.m */; }; 301F2F2A14F3C9CA003FE9FC /* CDV.h in Headers */ = {isa = PBXBuildFile; fileRef = 301F2F2914F3C9CA003FE9FC /* CDV.h */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -56,7 +55,6 @@ /* Begin PBXFileReference section */ 1B701026177A61CF00AE11F4 /* CDVShared.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CDVShared.h; path = Classes/CDVShared.h; sourceTree = ""; }; - 1B701027177A61CF00AE11F4 /* CDVShared.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CDVShared.m; path = Classes/CDVShared.m; sourceTree = ""; }; 1F92F49E1314023E0046367C /* CDVPluginResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CDVPluginResult.h; path = Classes/CDVPluginResult.h; sourceTree = ""; }; 1F92F49F1314023E0046367C /* CDVPluginResult.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CDVPluginResult.m; path = Classes/CDVPluginResult.m; sourceTree = ""; }; 301F2F2914F3C9CA003FE9FC /* CDV.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CDV.h; path = Classes/CDV.h; sourceTree = ""; }; @@ -204,7 +202,6 @@ 30C684931407044A004C1A8E /* CDVURLProtocol.m */, 30C6847E1406CB38004C1A8E /* CDVWhitelist.h */, 1B701026177A61CF00AE11F4 /* CDVShared.h */, - 1B701027177A61CF00AE11F4 /* CDVShared.m */, 30C6847F1406CB38004C1A8E /* CDVWhitelist.m */, 30E33AF013A7E24B00594D64 /* CDVPlugin.h */, 30E33AF113A7E24B00594D64 /* CDVPlugin.m */, @@ -359,7 +356,6 @@ EB96673C16A8970A00D86CDF /* CDVUserAgentUtil.m in Sources */, EBFF4DBC16D3FE2E008F452B /* CDVWebViewDelegate.m in Sources */, 7E14B5A91705050A0032169E /* CDVTimer.m in Sources */, - 1B701029177A61CF00AE11F4 /* CDVShared.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/cordova/platforms/ios/CordovaLib/CordovaLib.xcodeproj/xcuserdata/benjennings.xcuserdatad/xcschemes/xcschememanagement.plist b/cordova/platforms/ios/CordovaLib/CordovaLib.xcodeproj/xcuserdata/benjennings.xcuserdatad/xcschemes/xcschememanagement.plist deleted file mode 100644 index 283503b..0000000 --- a/cordova/platforms/ios/CordovaLib/CordovaLib.xcodeproj/xcuserdata/benjennings.xcuserdatad/xcschemes/xcschememanagement.plist +++ /dev/null @@ -1,22 +0,0 @@ - - - - - SchemeUserState - - CordovaLib.xcscheme - - orderHint - 1 - - - SuppressBuildableAutocreation - - D2AAC07D0554694100DB518D - - primary - - - - - diff --git a/cordova/platforms/ios/CordovaLib/CordovaLib.xcodeproj/xcuserdata/mattlenz.xcuserdatad/xcschemes/xcschememanagement.plist b/cordova/platforms/ios/CordovaLib/CordovaLib.xcodeproj/xcuserdata/mattlenz.xcuserdatad/xcschemes/xcschememanagement.plist deleted file mode 100644 index 283503b..0000000 --- a/cordova/platforms/ios/CordovaLib/CordovaLib.xcodeproj/xcuserdata/mattlenz.xcuserdatad/xcschemes/xcschememanagement.plist +++ /dev/null @@ -1,22 +0,0 @@ - - - - - SchemeUserState - - CordovaLib.xcscheme - - orderHint - 1 - - - SuppressBuildableAutocreation - - D2AAC07D0554694100DB518D - - primary - - - - - diff --git a/cordova/platforms/ios/CordovaLib/VERSION b/cordova/platforms/ios/CordovaLib/VERSION index 1545d96..4a788a0 100644 --- a/cordova/platforms/ios/CordovaLib/VERSION +++ b/cordova/platforms/ios/CordovaLib/VERSION @@ -1 +1 @@ -3.5.0 +3.6.3 diff --git a/cordova/platforms/ios/CordovaLib/cordova.js b/cordova/platforms/ios/CordovaLib/cordova.js index ade18c8..05b79c7 100644 --- a/cordova/platforms/ios/CordovaLib/cordova.js +++ b/cordova/platforms/ios/CordovaLib/cordova.js @@ -1,5 +1,5 @@ // Platform: ios -// 3.5.0 +// 3.6.3 /* Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file @@ -19,7 +19,7 @@ under the License. */ ;(function() { -var CORDOVA_JS_BUILD_LABEL = '3.5.0'; +var CORDOVA_JS_BUILD_LABEL = '3.6.3'; // file: src/scripts/require.js /*jshint -W079 */ @@ -265,7 +265,7 @@ var cordova = { try { cordova.callbackFromNative(callbackId, true, args.status, [args.message], args.keepCallback); } catch (e) { - console.log("Error in error callback: " + callbackId + " = "+e); + console.log("Error in success callback: " + callbackId + " = "+e); } }, @@ -826,7 +826,8 @@ var cordova = require('cordova'), XHR_OPTIONAL_PAYLOAD: 3, IFRAME_HASH_NO_PAYLOAD: 4, // Bundling the payload turns out to be slower. Probably since it has to be URI encoded / decoded. - IFRAME_HASH_WITH_PAYLOAD: 5 + IFRAME_HASH_WITH_PAYLOAD: 5, + WK_WEBVIEW_BINDING: 6 }, bridgeMode, execIframe, @@ -921,7 +922,15 @@ function iOSExec() { // Use IFRAME_NAV elsewhere since it's faster and XHR bridge // seems to have bugs in newer OS's (CB-3900, CB-3359, CB-5457, CB-4970, CB-4998, CB-5134) if (bridgeMode === undefined) { - bridgeMode = navigator.userAgent.indexOf(' 5_') == -1 ? jsToNativeModes.IFRAME_NAV: jsToNativeModes.XHR_NO_PAYLOAD; + if (navigator.userAgent) { + bridgeMode = navigator.userAgent.indexOf(' 5_') == -1 ? jsToNativeModes.IFRAME_NAV: jsToNativeModes.XHR_NO_PAYLOAD; + } else { + bridgeMode = jsToNativeModes.IFRAME_NAV; + } + } + + if (window.webkit && window.webkit.messageHandlers && window.webkit.messageHandlers.cordova && window.webkit.messageHandlers.cordova.postMessage) { + bridgeMode = jsToNativeModes.WK_WEBVIEW_BINDING; } var successCallback, failCallback, service, action, actionArgs, splitCommand; @@ -973,20 +982,24 @@ function iOSExec() { // 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) { - switch (bridgeMode) { - case jsToNativeModes.XHR_NO_PAYLOAD: - case jsToNativeModes.XHR_WITH_PAYLOAD: - case jsToNativeModes.XHR_OPTIONAL_PAYLOAD: - pokeNativeViaXhr(); - break; - default: // iframe-based. - pokeNativeViaIframe(); + + if (bridgeMode === jsToNativeModes.WK_WEBVIEW_BINDING) { + window.webkit.messageHandlers.cordova.postMessage(command); + } else { + // 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) { + switch (bridgeMode) { + case jsToNativeModes.XHR_NO_PAYLOAD: + case jsToNativeModes.XHR_WITH_PAYLOAD: + case jsToNativeModes.XHR_OPTIONAL_PAYLOAD: + pokeNativeViaXhr(); + break; + default: // iframe-based. + pokeNativeViaIframe(); + } } } } @@ -1539,11 +1552,11 @@ function handlePluginsObject(path, moduleList, finishPluginLoading) { function findCordovaPath() { var path = null; var scripts = document.getElementsByTagName('script'); - var term = 'cordova.js'; + var term = '/cordova.js'; for (var n = scripts.length-1; n>-1; n--) { var src = scripts[n].src.replace(/\?.*$/, ''); // Strip any query param (CB-6007). if (src.indexOf(term) == (src.length - term.length)) { - path = src.substring(0, src.length - term.length); + path = src.substring(0, src.length - term.length) + '/'; break; } } diff --git a/cordova/platforms/ios/Hive.xcodeproj/project.pbxproj b/cordova/platforms/ios/Hive.xcodeproj/project.pbxproj index 23658e2..1e29609 100644 --- a/cordova/platforms/ios/Hive.xcodeproj/project.pbxproj +++ b/cordova/platforms/ios/Hive.xcodeproj/project.pbxproj @@ -5,6 +5,7 @@ }; objectVersion = 46; objects = { + /* Begin PBXBuildFile section */ 13074A885A594EE7A71EC64D /* CoreVideo.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E2D8D693B80C4351B553C8AD /* CoreVideo.framework */; }; 1D3623260D0F684500981E51 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D3623250D0F684500981E51 /* AppDelegate.m */; }; @@ -29,7 +30,8 @@ 42D145D5DE934ACFA5138EE9 /* CDVLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 5544C525664E42C9B48315B4 /* CDVLogger.m */; }; 5AEE5B35173C68D80009041E /* CoreLocation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5AEE5B34173C68D80009041E /* CoreLocation.framework */; }; 5B1594DD16A7569C00FEF299 /* AssetsLibrary.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5B1594DC16A7569C00FEF299 /* AssetsLibrary.framework */; }; - 72C2DA7B64454D1F816AFFC7 /* CDVSplashScreen.m in Sources */ = {isa = PBXBuildFile; fileRef = 29835B3371D141F580A368EF /* CDVSplashScreen.m */; }; + 63CCD4931A3B8FCE00C19E7F /* CDVStatusBar.m in Sources */ = {isa = PBXBuildFile; fileRef = 63CCD4921A3B8FCE00C19E7F /* CDVStatusBar.m */; }; + 63CCD4961A3B902C00C19E7F /* CDVSplashScreen.m in Sources */ = {isa = PBXBuildFile; fileRef = 63CCD4951A3B902C00C19E7F /* CDVSplashScreen.m */; }; 7E7966DE1810823500FA85AD /* icon-40.png in Resources */ = {isa = PBXBuildFile; fileRef = 7E7966D41810823500FA85AD /* icon-40.png */; }; 7E7966DF1810823500FA85AD /* icon-40@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 7E7966D51810823500FA85AD /* icon-40@2x.png */; }; 7E7966E01810823500FA85AD /* icon-50.png in Resources */ = {isa = PBXBuildFile; fileRef = 7E7966D61810823500FA85AD /* icon-50.png */; }; @@ -49,7 +51,6 @@ D4A0D8761607E02300AEF8BB /* Default-568h@2x~iphone.png in Resources */ = {isa = PBXBuildFile; fileRef = D4A0D8751607E02300AEF8BB /* Default-568h@2x~iphone.png */; }; DA77EFCC717A41FAA065E6B7 /* CDVDevice.m in Sources */ = {isa = PBXBuildFile; fileRef = DEB2DD48C02649ECA1AD3D61 /* CDVDevice.m */; }; DBFA521A2C174230AAA758BE /* CDVLocation.m in Sources */ = {isa = PBXBuildFile; fileRef = 275A9C28DCCB464188C264B2 /* CDVLocation.m */; }; - E67A27077545433785A3D29D /* CDVStatusBar.m in Sources */ = {isa = PBXBuildFile; fileRef = F791B689B5BD4C5EA21234E3 /* CDVStatusBar.m */; }; F496ED016734413E88A09DC9 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CB1DC0ECC914DC89ACCDC7C /* AVFoundation.framework */; }; /* End PBXBuildFile section */ @@ -79,7 +80,6 @@ 275A9C28DCCB464188C264B2 /* CDVLocation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CDVLocation.m; path = org.apache.cordova.geolocation/CDVLocation.m; sourceTree = ""; }; 276B93D5FFC7489DA722DDEC /* CDVBarcodeScanner.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = unknown; name = CDVBarcodeScanner.mm; path = com.phonegap.plugins.barcodescanner/CDVBarcodeScanner.mm; sourceTree = ""; }; 288765FC0DF74451002DB57D /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; - 29835B3371D141F580A368EF /* CDVSplashScreen.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CDVSplashScreen.m; path = org.apache.cordova.splashscreen/CDVSplashScreen.m; sourceTree = ""; }; 29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 301BF52D109A57CC0062928A /* CordovaLib.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = CordovaLib.xcodeproj; path = CordovaLib/CordovaLib.xcodeproj; sourceTree = ""; }; 301BF56E109A69640062928A /* www */ = {isa = PBXFileReference; lastKnownFileType = folder; path = www; sourceTree = SOURCE_ROOT; }; @@ -106,9 +106,11 @@ 5B1594DC16A7569C00FEF299 /* AssetsLibrary.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AssetsLibrary.framework; path = System/Library/Frameworks/AssetsLibrary.framework; sourceTree = SDKROOT; }; 5CB1DC0ECC914DC89ACCDC7C /* AVFoundation.framework */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; 5EF12B1BD7EE4BBD87704509 /* CDVDevice.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CDVDevice.h; path = org.apache.cordova.device/CDVDevice.h; sourceTree = ""; }; - 678603053E3D4EEB9946FB5C /* CDVStatusBar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CDVStatusBar.h; path = org.apache.cordova.statusbar/CDVStatusBar.h; sourceTree = ""; }; + 63CCD4911A3B8FCE00C19E7F /* CDVStatusBar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CDVStatusBar.h; path = org.apache.cordova.statusbar/CDVStatusBar.h; sourceTree = ""; }; + 63CCD4921A3B8FCE00C19E7F /* CDVStatusBar.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CDVStatusBar.m; path = org.apache.cordova.statusbar/CDVStatusBar.m; sourceTree = ""; }; + 63CCD4941A3B902C00C19E7F /* CDVSplashScreen.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CDVSplashScreen.h; path = org.apache.cordova.splashscreen/CDVSplashScreen.h; sourceTree = ""; }; + 63CCD4951A3B902C00C19E7F /* CDVSplashScreen.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CDVSplashScreen.m; path = org.apache.cordova.splashscreen/CDVSplashScreen.m; sourceTree = ""; }; 6B707AEA15D544C687115306 /* CDVLogger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CDVLogger.h; path = org.apache.cordova.console/CDVLogger.h; sourceTree = ""; }; - 6DBAFAB8E833430D9B4CAE4C /* CDVSplashScreen.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CDVSplashScreen.h; path = org.apache.cordova.splashscreen/CDVSplashScreen.h; sourceTree = ""; }; 7CD854299D1948848C333DA0 /* zxing-all-in-one.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "zxing-all-in-one.h"; path = "com.phonegap.plugins.barcodescanner/zxing-all-in-one.h"; sourceTree = ""; }; 7E7966D41810823500FA85AD /* icon-40.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icon-40.png"; sourceTree = ""; }; 7E7966D51810823500FA85AD /* icon-40@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icon-40@2x.png"; sourceTree = ""; }; @@ -133,7 +135,6 @@ EB87FDF21871DA7A0020F90C /* merges */ = {isa = PBXFileReference; lastKnownFileType = folder; name = merges; path = ../../merges; sourceTree = ""; }; EB87FDF31871DA8E0020F90C /* www */ = {isa = PBXFileReference; lastKnownFileType = folder; name = www; path = ../../www; sourceTree = ""; }; EB87FDF41871DAF40020F90C /* config.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; name = config.xml; path = ../../config.xml; sourceTree = ""; }; - F791B689B5BD4C5EA21234E3 /* CDVStatusBar.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CDVStatusBar.m; path = org.apache.cordova.statusbar/CDVStatusBar.m; sourceTree = ""; }; F840E1F0165FE0F500CFE078 /* config.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; name = config.xml; path = Hive/config.xml; sourceTree = ""; }; F8D5E9D183354764ADD552EA /* zxing-all-in-one.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = unknown; name = "zxing-all-in-one.cpp"; path = "com.phonegap.plugins.barcodescanner/zxing-all-in-one.cpp"; sourceTree = ""; }; /* End PBXFileReference section */ @@ -266,15 +267,15 @@ 307C750510C5A3420062BCA9 /* Plugins */ = { isa = PBXGroup; children = ( - F791B689B5BD4C5EA21234E3 /* CDVStatusBar.m */, - 678603053E3D4EEB9946FB5C /* CDVStatusBar.h */, + 63CCD4941A3B902C00C19E7F /* CDVSplashScreen.h */, + 63CCD4951A3B902C00C19E7F /* CDVSplashScreen.m */, + 63CCD4911A3B8FCE00C19E7F /* CDVStatusBar.h */, + 63CCD4921A3B8FCE00C19E7F /* CDVStatusBar.m */, 276B93D5FFC7489DA722DDEC /* CDVBarcodeScanner.mm */, F8D5E9D183354764ADD552EA /* zxing-all-in-one.cpp */, 7CD854299D1948848C333DA0 /* zxing-all-in-one.h */, DEB2DD48C02649ECA1AD3D61 /* CDVDevice.m */, 5EF12B1BD7EE4BBD87704509 /* CDVDevice.h */, - 29835B3371D141F580A368EF /* CDVSplashScreen.m */, - 6DBAFAB8E833430D9B4CAE4C /* CDVSplashScreen.h */, 5544C525664E42C9B48315B4 /* CDVLogger.m */, 6B707AEA15D544C687115306 /* CDVLogger.h */, 275A9C28DCCB464188C264B2 /* CDVLocation.m */, @@ -481,12 +482,12 @@ 1D60589B0D05DD56006BFB54 /* main.m in Sources */, 1D3623260D0F684500981E51 /* AppDelegate.m in Sources */, 302D95F114D2391D003F00A1 /* MainViewController.m in Sources */, - E67A27077545433785A3D29D /* CDVStatusBar.m in Sources */, + 63CCD4961A3B902C00C19E7F /* CDVSplashScreen.m in Sources */, AFFB830EF2C84B2587CDED8D /* CDVBarcodeScanner.mm in Sources */, A1BFD37395504A35B4DD87E1 /* zxing-all-in-one.cpp in Sources */, DA77EFCC717A41FAA065E6B7 /* CDVDevice.m in Sources */, - 72C2DA7B64454D1F816AFFC7 /* CDVSplashScreen.m in Sources */, 42D145D5DE934ACFA5138EE9 /* CDVLogger.m in Sources */, + 63CCD4931A3B8FCE00C19E7F /* CDVStatusBar.m in Sources */, DBFA521A2C174230AAA758BE /* CDVLocation.m in Sources */, D362FBD366294F37B73427F5 /* CDVClipboard.m in Sources */, ); diff --git a/cordova/platforms/ios/Hive.xcodeproj/project.xcworkspace/xcshareddata/Hive.xccheckout b/cordova/platforms/ios/Hive.xcodeproj/project.xcworkspace/xcshareddata/Hive.xccheckout index 26bf217..84b9bfd 100644 --- a/cordova/platforms/ios/Hive.xcodeproj/project.xcworkspace/xcshareddata/Hive.xccheckout +++ b/cordova/platforms/ios/Hive.xcodeproj/project.xcworkspace/xcshareddata/Hive.xccheckout @@ -10,29 +10,29 @@ Hive IDESourceControlProjectOriginsDictionary - ACD5E25C-5EF2-4F13-8AAB-FC04CF046793 - ssh://github.com/hivewallet/hive-ios.git + DB93A27DE2A1A4F76BD92BCCA0A753F496D9E094 + https://github.com/nFocus-Labs/hive-ios.git IDESourceControlProjectPath - cordova/platforms/ios/Hive.xcodeproj/project.xcworkspace + cordova/platforms/ios/Hive.xcodeproj IDESourceControlProjectRelativeInstallPathDictionary - ACD5E25C-5EF2-4F13-8AAB-FC04CF046793 + DB93A27DE2A1A4F76BD92BCCA0A753F496D9E094 ../../../../.. IDESourceControlProjectURL - ssh://github.com/hivewallet/hive-ios.git + https://github.com/nFocus-Labs/hive-ios.git IDESourceControlProjectVersion - 110 + 111 IDESourceControlProjectWCCIdentifier - ACD5E25C-5EF2-4F13-8AAB-FC04CF046793 + DB93A27DE2A1A4F76BD92BCCA0A753F496D9E094 IDESourceControlProjectWCConfigurations IDESourceControlRepositoryExtensionIdentifierKey public.vcs.git IDESourceControlWCCIdentifierKey - ACD5E25C-5EF2-4F13-8AAB-FC04CF046793 + DB93A27DE2A1A4F76BD92BCCA0A753F496D9E094 IDESourceControlWCCName hive-ios diff --git a/cordova/platforms/ios/Hive/Classes/MainViewController.m b/cordova/platforms/ios/Hive/Classes/MainViewController.m index 2d84961..8679279 100644 --- a/cordova/platforms/ios/Hive/Classes/MainViewController.m +++ b/cordova/platforms/ios/Hive/Classes/MainViewController.m @@ -148,12 +148,12 @@ - (id)getCommandInstance:(NSString*)className NOTE: this will only inspect execute calls coming explicitly from native plugins, not the commandQueue (from JavaScript). To see execute calls from JavaScript, see MainCommandQueue below -*/ + - (BOOL)execute:(CDVInvokedUrlCommand*)command { return [super execute:command]; } - +*/ - (NSString*)pathForResource:(NSString*)resourcepath; { return [super pathForResource:resourcepath]; diff --git a/cordova/platforms/ios/Hive/Hive-Info.plist b/cordova/platforms/ios/Hive/Hive-Info.plist index d254a80..df06e0c 100644 --- a/cordova/platforms/ios/Hive/Hive-Info.plist +++ b/cordova/platforms/ios/Hive/Hive-Info.plist @@ -75,4 +75,4 @@ UIInterfaceOrientationPortrait - + \ No newline at end of file diff --git a/cordova/platforms/ios/Hive/Plugins/org.apache.cordova.splashscreen/CDVSplashScreen.h b/cordova/platforms/ios/Hive/Plugins/org.apache.cordova.splashscreen/CDVSplashScreen.h index 932ad06..0d6ae39 100644 --- a/cordova/platforms/ios/Hive/Plugins/org.apache.cordova.splashscreen/CDVSplashScreen.h +++ b/cordova/platforms/ios/Hive/Plugins/org.apache.cordova.splashscreen/CDVSplashScreen.h @@ -20,6 +20,16 @@ #import #import +typedef struct { + BOOL iPhone; + BOOL iPad; + BOOL iPhone5; + BOOL iPhone6; + BOOL iPhone6Plus; + BOOL retina; + +} CDV_iOSDevice; + @interface CDVSplashScreen : CDVPlugin { UIActivityIndicatorView* _activityView; UIImageView* _imageView; diff --git a/cordova/platforms/ios/Hive/Plugins/org.apache.cordova.splashscreen/CDVSplashScreen.m b/cordova/platforms/ios/Hive/Plugins/org.apache.cordova.splashscreen/CDVSplashScreen.m index fdfc4c4..f65a501 100644 --- a/cordova/platforms/ios/Hive/Plugins/org.apache.cordova.splashscreen/CDVSplashScreen.m +++ b/cordova/platforms/ios/Hive/Plugins/org.apache.cordova.splashscreen/CDVSplashScreen.m @@ -19,9 +19,11 @@ Licensed to the Apache Software Foundation (ASF) under one #import "CDVSplashScreen.h" #import +#import #define kSplashScreenDurationDefault 0.25f + @implementation CDVSplashScreen - (void)pluginInitialize @@ -116,42 +118,93 @@ - (void)destroyViews [self.viewController.view removeObserver:self forKeyPath:@"bounds"]; } -// Sets the view's frame and image. -- (void)updateImage +- (CDV_iOSDevice) getCurrentDevice { - UIInterfaceOrientation orientation = self.viewController.interfaceOrientation; + CDV_iOSDevice device; + + UIScreen* mainScreen = [UIScreen mainScreen]; + CGFloat mainScreenHeight = mainScreen.bounds.size.height; + CGFloat mainScreenWidth = mainScreen.bounds.size.width; + + int limit = MAX(mainScreenHeight,mainScreenWidth); + + device.iPad = (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad); + device.iPhone = (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone); + device.retina = ([mainScreen scale] == 2.0); + device.iPhone5 = (device.iPhone && limit == 568.0); + // note these below is not a true device detect, for example if you are on an + // iPhone 6/6+ but the app is scaled it will prob set iPhone5 as true, but + // this is appropriate for detecting the runtime screen environment + device.iPhone6 = (device.iPhone && limit == 667.0); + device.iPhone6Plus = (device.iPhone && limit == 736.0); + + return device; +} +- (NSString*)getImageName:(UIInterfaceOrientation)currentOrientation delegate:(id)orientationDelegate device:(CDV_iOSDevice)device +{ // Use UILaunchImageFile if specified in plist. Otherwise, use Default. NSString* imageName = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"UILaunchImageFile"]; - + + NSUInteger supportedOrientations = [orientationDelegate supportedInterfaceOrientations]; + // Checks to see if the developer has locked the orientation to use only one of Portrait or Landscape - CDVViewController* vc = (CDVViewController*)self.viewController; - BOOL supportsLandscape = [vc supportsOrientation:UIInterfaceOrientationLandscapeLeft] || [vc supportsOrientation:UIInterfaceOrientationLandscapeRight]; - BOOL supportsPortrait = [vc supportsOrientation:UIInterfaceOrientationPortrait] || [vc supportsOrientation:UIInterfaceOrientationPortraitUpsideDown]; + BOOL supportsLandscape = (supportedOrientations & UIInterfaceOrientationMaskLandscape); + BOOL supportsPortrait = (supportedOrientations & UIInterfaceOrientationMaskPortrait || supportedOrientations & UIInterfaceOrientationMaskPortraitUpsideDown); + // this means there are no mixed orientations in there BOOL isOrientationLocked = !(supportsPortrait && supportsLandscape); - + if (imageName) { imageName = [imageName stringByDeletingPathExtension]; } else { imageName = @"Default"; } - - if (CDV_IsIPhone5()) { + + if (device.iPhone5) { // does not support landscape imageName = [imageName stringByAppendingString:@"-568h"]; - } else if (CDV_IsIPad() && isOrientationLocked) { - switch (orientation) { - case UIInterfaceOrientationLandscapeLeft: - case UIInterfaceOrientationLandscapeRight: - imageName = [imageName stringByAppendingString:@"-Landscape"]; - break; - - case UIInterfaceOrientationPortrait: - case UIInterfaceOrientationPortraitUpsideDown: - default: - imageName = [imageName stringByAppendingString:@"-Portrait"]; - break; + } else if (device.iPhone6) { // does not support landscape + imageName = [imageName stringByAppendingString:@"-667h"]; + } else if (device.iPhone6Plus) { // supports landscape + if (isOrientationLocked) { + imageName = [imageName stringByAppendingString:(supportsLandscape ? @"-Landscape" : @"")]; + } else { + switch (currentOrientation) { + case UIInterfaceOrientationLandscapeLeft: + case UIInterfaceOrientationLandscapeRight: + imageName = [imageName stringByAppendingString:@"-Landscape"]; + break; + default: + break; + } + } + imageName = [imageName stringByAppendingString:@"-736h"]; + + } else if (device.iPad) { // supports landscape + if (isOrientationLocked) { + imageName = [imageName stringByAppendingString:(supportsLandscape ? @"-Landscape" : @"-Portrait")]; + } else { + switch (currentOrientation) { + case UIInterfaceOrientationLandscapeLeft: + case UIInterfaceOrientationLandscapeRight: + imageName = [imageName stringByAppendingString:@"-Landscape"]; + break; + + case UIInterfaceOrientationPortrait: + case UIInterfaceOrientationPortraitUpsideDown: + default: + imageName = [imageName stringByAppendingString:@"-Portrait"]; + break; + } } } + + return imageName; +} + +// Sets the view's frame and image. +- (void)updateImage +{ + NSString* imageName = [self getImageName:self.viewController.interfaceOrientation delegate:(id)self.viewController device:[self getCurrentDevice]]; if (![imageName isEqualToString:_curImageName]) { UIImage* img = [UIImage imageNamed:imageName]; @@ -239,13 +292,15 @@ - (void)setVisible:(BOOL)visible duration:fadeDuration options:UIViewAnimationOptionTransitionNone animations:^(void) { - [_imageView setAlpha:0]; - [_activityView setAlpha:0]; - } - + [_imageView setAlpha:0]; + [_activityView setAlpha:0]; + } completion:^(BOOL finished) { - [self destroyViews]; - }]; + if (finished) { + [self destroyViews]; + } + } + ]; } } diff --git a/cordova/platforms/ios/cordova/apple_ios_version b/cordova/platforms/ios/cordova/apple_ios_version deleted file mode 100755 index 8a5aa7d..0000000 --- a/cordova/platforms/ios/cordova/apple_ios_version +++ /dev/null @@ -1,24 +0,0 @@ -#! /bin/sh - -# -# 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. -# - -# outputs the highest level of iOS sdk installed -iOS_X_VERSIONS=$(xcodebuild -showsdks | sed -e '/./{H;$!d;}' -e 'x;/iOS SDKs/!d;' | grep -o '[0-9]*\.[0-9]* '); -echo $iOS_X_VERSIONS | tr " " "\n" | sort -g | tail -1; \ No newline at end of file diff --git a/cordova/platforms/ios/cordova/apple_osx_version b/cordova/platforms/ios/cordova/apple_osx_version deleted file mode 100755 index 401e9cb..0000000 --- a/cordova/platforms/ios/cordova/apple_osx_version +++ /dev/null @@ -1,24 +0,0 @@ -#! /bin/sh - -# -# 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. -# - -# outputs the highest level of OS X sdk installed -OS_X_VERSIONS=$(xcodebuild -showsdks | sed -e '/./{H;$!d;}' -e 'x;/OS X SDKs/!d;' | grep -o '[0-9]*\.[0-9]* '); -echo $OS_X_VERSIONS | tr " " "\n" | sort -g | tail -1; \ No newline at end of file diff --git a/cordova/platforms/ios/cordova/apple_xcode_version b/cordova/platforms/ios/cordova/apple_xcode_version deleted file mode 100755 index d459b30..0000000 --- a/cordova/platforms/ios/cordova/apple_xcode_version +++ /dev/null @@ -1,24 +0,0 @@ -#! /bin/sh - -# -# 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. -# - -# outputs which version of XCODE is installed -XCODEBUILD_VERSION=$(xcodebuild -version | head -n 1 | sed -e 's/Xcode //') -echo $XCODEBUILD_VERSION \ No newline at end of file diff --git a/cordova/platforms/ios/cordova/build.xcconfig b/cordova/platforms/ios/cordova/build.xcconfig old mode 100644 new mode 100755 diff --git a/cordova/platforms/ios/cordova/defaults.xml b/cordova/platforms/ios/cordova/defaults.xml old mode 100644 new mode 100755 diff --git a/cordova/platforms/ios/cordova/version b/cordova/platforms/ios/cordova/version index 6a9261c..0b950e7 100755 --- a/cordova/platforms/ios/cordova/version +++ b/cordova/platforms/ios/cordova/version @@ -24,17 +24,6 @@ # Note: it does not work if the --shared option was used to create the project. # -set -e +VERSION="3.6.3" -CORDOVA_PATH=$( cd "$( dirname "$0" )" && pwd -P) -PROJECT_PATH="$(dirname "$CORDOVA_PATH")" - -VERSION_FILE_PATH="$PROJECT_PATH/CordovaLib/VERSION" -VERSION=$(<"$VERSION_FILE_PATH") - -if [ -f "$VERSION_FILE_PATH" ]; then - echo $VERSION -else - echo "The file \"$VERSION_FILE_PATH\" does not exist." - exit 1 -fi \ No newline at end of file +echo $VERSION diff --git a/cordova/platforms/ios/platform_www/cordova.js b/cordova/platforms/ios/platform_www/cordova.js index ade18c8..05b79c7 100644 --- a/cordova/platforms/ios/platform_www/cordova.js +++ b/cordova/platforms/ios/platform_www/cordova.js @@ -1,5 +1,5 @@ // Platform: ios -// 3.5.0 +// 3.6.3 /* Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file @@ -19,7 +19,7 @@ under the License. */ ;(function() { -var CORDOVA_JS_BUILD_LABEL = '3.5.0'; +var CORDOVA_JS_BUILD_LABEL = '3.6.3'; // file: src/scripts/require.js /*jshint -W079 */ @@ -265,7 +265,7 @@ var cordova = { try { cordova.callbackFromNative(callbackId, true, args.status, [args.message], args.keepCallback); } catch (e) { - console.log("Error in error callback: " + callbackId + " = "+e); + console.log("Error in success callback: " + callbackId + " = "+e); } }, @@ -826,7 +826,8 @@ var cordova = require('cordova'), XHR_OPTIONAL_PAYLOAD: 3, IFRAME_HASH_NO_PAYLOAD: 4, // Bundling the payload turns out to be slower. Probably since it has to be URI encoded / decoded. - IFRAME_HASH_WITH_PAYLOAD: 5 + IFRAME_HASH_WITH_PAYLOAD: 5, + WK_WEBVIEW_BINDING: 6 }, bridgeMode, execIframe, @@ -921,7 +922,15 @@ function iOSExec() { // Use IFRAME_NAV elsewhere since it's faster and XHR bridge // seems to have bugs in newer OS's (CB-3900, CB-3359, CB-5457, CB-4970, CB-4998, CB-5134) if (bridgeMode === undefined) { - bridgeMode = navigator.userAgent.indexOf(' 5_') == -1 ? jsToNativeModes.IFRAME_NAV: jsToNativeModes.XHR_NO_PAYLOAD; + if (navigator.userAgent) { + bridgeMode = navigator.userAgent.indexOf(' 5_') == -1 ? jsToNativeModes.IFRAME_NAV: jsToNativeModes.XHR_NO_PAYLOAD; + } else { + bridgeMode = jsToNativeModes.IFRAME_NAV; + } + } + + if (window.webkit && window.webkit.messageHandlers && window.webkit.messageHandlers.cordova && window.webkit.messageHandlers.cordova.postMessage) { + bridgeMode = jsToNativeModes.WK_WEBVIEW_BINDING; } var successCallback, failCallback, service, action, actionArgs, splitCommand; @@ -973,20 +982,24 @@ function iOSExec() { // 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) { - switch (bridgeMode) { - case jsToNativeModes.XHR_NO_PAYLOAD: - case jsToNativeModes.XHR_WITH_PAYLOAD: - case jsToNativeModes.XHR_OPTIONAL_PAYLOAD: - pokeNativeViaXhr(); - break; - default: // iframe-based. - pokeNativeViaIframe(); + + if (bridgeMode === jsToNativeModes.WK_WEBVIEW_BINDING) { + window.webkit.messageHandlers.cordova.postMessage(command); + } else { + // 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) { + switch (bridgeMode) { + case jsToNativeModes.XHR_NO_PAYLOAD: + case jsToNativeModes.XHR_WITH_PAYLOAD: + case jsToNativeModes.XHR_OPTIONAL_PAYLOAD: + pokeNativeViaXhr(); + break; + default: // iframe-based. + pokeNativeViaIframe(); + } } } } @@ -1539,11 +1552,11 @@ function handlePluginsObject(path, moduleList, finishPluginLoading) { function findCordovaPath() { var path = null; var scripts = document.getElementsByTagName('script'); - var term = 'cordova.js'; + var term = '/cordova.js'; for (var n = scripts.length-1; n>-1; n--) { var src = scripts[n].src.replace(/\?.*$/, ''); // Strip any query param (CB-6007). if (src.indexOf(term) == (src.length - term.length)) { - path = src.substring(0, src.length - term.length); + path = src.substring(0, src.length - term.length) + '/'; break; } } diff --git a/cordova/platforms/ios/www/cordova.js b/cordova/platforms/ios/www/cordova.js index ade18c8..05b79c7 100644 --- a/cordova/platforms/ios/www/cordova.js +++ b/cordova/platforms/ios/www/cordova.js @@ -1,5 +1,5 @@ // Platform: ios -// 3.5.0 +// 3.6.3 /* Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file @@ -19,7 +19,7 @@ under the License. */ ;(function() { -var CORDOVA_JS_BUILD_LABEL = '3.5.0'; +var CORDOVA_JS_BUILD_LABEL = '3.6.3'; // file: src/scripts/require.js /*jshint -W079 */ @@ -265,7 +265,7 @@ var cordova = { try { cordova.callbackFromNative(callbackId, true, args.status, [args.message], args.keepCallback); } catch (e) { - console.log("Error in error callback: " + callbackId + " = "+e); + console.log("Error in success callback: " + callbackId + " = "+e); } }, @@ -826,7 +826,8 @@ var cordova = require('cordova'), XHR_OPTIONAL_PAYLOAD: 3, IFRAME_HASH_NO_PAYLOAD: 4, // Bundling the payload turns out to be slower. Probably since it has to be URI encoded / decoded. - IFRAME_HASH_WITH_PAYLOAD: 5 + IFRAME_HASH_WITH_PAYLOAD: 5, + WK_WEBVIEW_BINDING: 6 }, bridgeMode, execIframe, @@ -921,7 +922,15 @@ function iOSExec() { // Use IFRAME_NAV elsewhere since it's faster and XHR bridge // seems to have bugs in newer OS's (CB-3900, CB-3359, CB-5457, CB-4970, CB-4998, CB-5134) if (bridgeMode === undefined) { - bridgeMode = navigator.userAgent.indexOf(' 5_') == -1 ? jsToNativeModes.IFRAME_NAV: jsToNativeModes.XHR_NO_PAYLOAD; + if (navigator.userAgent) { + bridgeMode = navigator.userAgent.indexOf(' 5_') == -1 ? jsToNativeModes.IFRAME_NAV: jsToNativeModes.XHR_NO_PAYLOAD; + } else { + bridgeMode = jsToNativeModes.IFRAME_NAV; + } + } + + if (window.webkit && window.webkit.messageHandlers && window.webkit.messageHandlers.cordova && window.webkit.messageHandlers.cordova.postMessage) { + bridgeMode = jsToNativeModes.WK_WEBVIEW_BINDING; } var successCallback, failCallback, service, action, actionArgs, splitCommand; @@ -973,20 +982,24 @@ function iOSExec() { // 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) { - switch (bridgeMode) { - case jsToNativeModes.XHR_NO_PAYLOAD: - case jsToNativeModes.XHR_WITH_PAYLOAD: - case jsToNativeModes.XHR_OPTIONAL_PAYLOAD: - pokeNativeViaXhr(); - break; - default: // iframe-based. - pokeNativeViaIframe(); + + if (bridgeMode === jsToNativeModes.WK_WEBVIEW_BINDING) { + window.webkit.messageHandlers.cordova.postMessage(command); + } else { + // 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) { + switch (bridgeMode) { + case jsToNativeModes.XHR_NO_PAYLOAD: + case jsToNativeModes.XHR_WITH_PAYLOAD: + case jsToNativeModes.XHR_OPTIONAL_PAYLOAD: + pokeNativeViaXhr(); + break; + default: // iframe-based. + pokeNativeViaIframe(); + } } } } @@ -1539,11 +1552,11 @@ function handlePluginsObject(path, moduleList, finishPluginLoading) { function findCordovaPath() { var path = null; var scripts = document.getElementsByTagName('script'); - var term = 'cordova.js'; + var term = '/cordova.js'; for (var n = scripts.length-1; n>-1; n--) { var src = scripts[n].src.replace(/\?.*$/, ''); // Strip any query param (CB-6007). if (src.indexOf(term) == (src.length - term.length)) { - path = src.substring(0, src.length - term.length); + path = src.substring(0, src.length - term.length) + '/'; break; } } diff --git a/cordova/platforms/ios/www/cordova_plugins.js b/cordova/platforms/ios/www/cordova_plugins.js index 7cda36b..40e7f68 100644 --- a/cordova/platforms/ios/www/cordova_plugins.js +++ b/cordova/platforms/ios/www/cordova_plugins.js @@ -21,13 +21,6 @@ module.exports = [ "device" ] }, - { - "file": "plugins/org.apache.cordova.splashscreen/www/splashscreen.js", - "id": "org.apache.cordova.splashscreen.SplashScreen", - "clobbers": [ - "navigator.splashscreen" - ] - }, { "file": "plugins/org.apache.cordova.console/www/console-via-logger.js", "id": "org.apache.cordova.console.console", @@ -76,6 +69,13 @@ module.exports = [ "clobbers": [ "cordova.plugins.clipboard" ] + }, + { + "file": "plugins/org.apache.cordova.splashscreen/www/splashscreen.js", + "id": "org.apache.cordova.splashscreen.SplashScreen", + "clobbers": [ + "navigator.splashscreen" + ] } ]; module.exports.metadata = @@ -84,10 +84,10 @@ module.exports.metadata = "org.apache.cordova.statusbar": "0.1.3", "com.phonegap.plugins.barcodescanner": "1.0.1", "org.apache.cordova.device": "0.2.10", - "org.apache.cordova.splashscreen": "0.3.1", "org.apache.cordova.console": "0.2.10-dev", "org.apache.cordova.geolocation": "0.3.9-dev", - "com.verso.cordova.clipboard": "0.1.0" + "com.verso.cordova.clipboard": "0.1.0", + "org.apache.cordova.splashscreen": "0.3.5" } // BOTTOM OF METADATA }); \ No newline at end of file diff --git a/cordova/plugins/ios.json b/cordova/plugins/ios.json index d9fe07e..2703917 100644 --- a/cordova/plugins/ios.json +++ b/cordova/plugins/ios.json @@ -28,10 +28,6 @@ "xml": "", "count": 1 }, - { - "xml": "", - "count": 1 - }, { "xml": "", "count": 1 @@ -43,6 +39,10 @@ { "xml": "", "count": 1 + }, + { + "xml": "", + "count": 1 } ], "/widget": [] @@ -101,9 +101,6 @@ "org.apache.cordova.device": { "PACKAGE_NAME": "com.hivewallet.app" }, - "org.apache.cordova.splashscreen": { - "PACKAGE_NAME": "com.hivewallet.app" - }, "org.apache.cordova.console": { "PACKAGE_NAME": "com.hivewallet.app" }, @@ -112,6 +109,9 @@ }, "com.verso.cordova.clipboard": { "PACKAGE_NAME": "com.hivewallet.app" + }, + "org.apache.cordova.splashscreen": { + "PACKAGE_NAME": "com.hivewallet.Hive.iOS" } }, "dependent_plugins": {} diff --git a/cordova/plugins/org.apache.cordova.splashscreen/.fetch.json b/cordova/plugins/org.apache.cordova.splashscreen/.fetch.json index 4828ff3..ff69334 100644 --- a/cordova/plugins/org.apache.cordova.splashscreen/.fetch.json +++ b/cordova/plugins/org.apache.cordova.splashscreen/.fetch.json @@ -1 +1 @@ -{"source":{"type":"local","path":"/Users/mattlenz/.plugman/cache/org.apache.cordova.splashscreen/0.3.1/package"}} \ No newline at end of file +{"source":{"type":"local","path":"/Users/user91572/.plugman/cache/org.apache.cordova.splashscreen/0.3.5/package"}} \ No newline at end of file diff --git a/cordova/plugins/org.apache.cordova.splashscreen/RELEASENOTES.md b/cordova/plugins/org.apache.cordova.splashscreen/RELEASENOTES.md index 9936bb3..cd1e211 100644 --- a/cordova/plugins/org.apache.cordova.splashscreen/RELEASENOTES.md +++ b/cordova/plugins/org.apache.cordova.splashscreen/RELEASENOTES.md @@ -71,3 +71,30 @@ * CB-6483 Use splash screen image from manifest on Windows8 * CB-6491 add CONTRIBUTING.md * Revert "Merge branch 'tizen' of http://github.com/siovene/cordova-plugin-splashscreen" + +### 0.3.2 (Aug 06, 2014) +* CB-6127 Updated translations for docs +* CB-7041 ios: Fix image filename logic when setting the iPad splash screen +* fixes Splashscreen crash on WP8 +* Remove outdated doc + +### 0.3.3 (Sep 17, 2014) +* CB-7249 cordova-plugin-splashscreen documentation translation +* Renamed test dir, added nested plugin.xml +* added documentation for manual tests +* CB-7196 port splashscreen tests to framework + +### 0.3.4 (Oct 03, 2014) +* Finalized iOS splash screen (image name) tests. 176 tests in all, 44 for each type of device (iPad, iPhone, iPhone5, iPhone6, iPhone 6 Plus). +* CB-7633 - (Re-fix based on updated unit tests) iPhone 6 Plus support +* Updated iOS tests for locked orientations +* Added more iOS splash screen tests. +* CB-7633 - Add support for iPhone 6/6+ +* Added failing iPhone 6/6 Plus tests. +* Added 'npm test' +* CB-7663 - iOS unit tests for splash screen +* Properly formatted splashscreen preference docs. + +### 0.3.5 (Dec 02, 2014) +* CB-7204 - Race condition when hiding and showing spinner (closes #21) +* CB-7700 cordova-plugin-splashscreen documentation translation: cordova-plugin-splashscreen diff --git a/cordova/plugins/org.apache.cordova.splashscreen/doc/de/index.md b/cordova/plugins/org.apache.cordova.splashscreen/doc/de/index.md index eb7e769..be0c333 100644 --- a/cordova/plugins/org.apache.cordova.splashscreen/doc/de/index.md +++ b/cordova/plugins/org.apache.cordova.splashscreen/doc/de/index.md @@ -40,35 +40,28 @@ Dieses Plugin zeigt und verbirgt einen Splash-Screen beim Start der Anwendung. * SplashScreen.Show * SplashScreen.Hide -### Android Macken +### Android Eigenarten -In Ihrem "config.xml" müssen Sie die folgende Einstellung hinzufügen +Sie müssen in der config.xml folgende Einstellungen vornehmen: -`` +`` `` -Wo Foo ist der Name der Datei Splashscreen. Vorzugsweise eine 9-Patch-Datei. Stellen Sie sicher, Splashcreen Dateien zu Ihrem Res/Xml-Verzeichnis unter den entsprechenden Ordnern hinzuzufügen. +Wo Foo ist der Name der Datei Splashscreen, vorzugsweise eine 9-Patch-Datei. Stellen Sie sicher, Splashcreen Dateien zu Ihrem Res/Xml-Verzeichnis unter den entsprechenden Ordnern hinzuzufügen. Der zweite Parameter stellt dar, wie lange das Splashscreen in Millisekunden angezeigt werden. Es wird standardmäßig auf 3000 ms. Weitere Informationen finden Sie unter [Symbole und Splash-Screens][1] . -Für Android müssen Sie auch Ihre wichtigsten Java-Projekte-Datei bearbeiten. Sie müssen hinzufügen, einen zweiten Parameter, die eine zeitliche Verzögerung zu Ihren super.loadUrl darstellt. - -`super.loadUrl(Config.getStartUrl(), 10000);` + [1]: http://cordova.apache.org/docs/en/edge/config_ref_images.md.html ## SplashScreen.Hide Schließen Sie den Splash-Screen. - navigator.splashscreen.hide(); + Navigator.SplashScreen.Hide(); -### BlackBerry 10 Quirk - -Die `config.xml` der Datei `AutoHideSplashScreen` muss`false`. +### BlackBerry 10, WP8, iOS Eigenarten -### iOS Quirk +Die `config.xml` der Datei `AutoHideSplashScreen` muss `false` . Verstecken des Begrüßungsbildschirms für zwei Sekunden Verzögerung, fügen Sie einen Timer wie die folgende in der `deviceready` -Ereignishandler: -Die `config.xml` Datei `AutoHideSplashScreen` muss `false` . Verstecken den Splash-Screen für zwei Sekunden Verzögerung, fügen Sie einen Timer wie die folgende in der `deviceready` -Ereignishandler: - - setTimeout(function() { - navigator.splashscreen.hide(); + setTimeout(function() {navigator.splashscreen.hide(); }, 2000); @@ -76,9 +69,7 @@ Die `config.xml` Datei `AutoHideSplashScreen` muss `false` . Verstecken den Spla Zeigt den Begrüßungsbildschirm. - navigator.splashscreen.show(); + Navigator.SplashScreen.Show(); -Ihre Anwendung kann nicht aufgerufen werden `navigator.splashscreen.show()` bis die app gestartet hat und das `deviceready` -Ereignis ausgelöst hat. Aber da in der Regel der Splash-Screen soll sichtbar sein, bevor die Anwendung gestartet wurde, scheint die Niederlage der Zweck des Begrüßungsbildschirms. Somit einige Konfiguration in `config.xml` wird automatisch `show` den Splash-Screen unmittelbar nach Ihrer app starten und bevor es voll gestartet und hat das `deviceready` Ereignis. Weitere Informationen zu dieser Konfiguration finden Sie unter [Symbole und Splash-Screens][1] . Aus diesem Grund ist es unwahrscheinlich, dass Sie aufrufen müssen `navigator.splashscreen.show()` den Splash-Screen beim Starten der app sichtbar zu machen. - - [1]: http://cordova.apache.org/docs/en/edge/config_ref_images.md.html \ No newline at end of file +Ihre Anwendung kann nicht aufgerufen werden `navigator.splashscreen.show()` bis die app gestartet hat und das `deviceready` -Ereignis ausgelöst hat. Aber da in der Regel der Splash-Screen soll sichtbar sein, bevor die Anwendung gestartet wurde, scheint die Niederlage der Zweck des Begrüßungsbildschirms. Somit einige Konfiguration in `config.xml` wird automatisch `show` den Splash-Screen unmittelbar nach Ihrer app starten und bevor es voll gestartet und hat das `deviceready` Ereignis. Weitere Informationen zu dieser Konfiguration finden Sie unter [Symbole und Splash-Screens][1] . Aus diesem Grund ist es unwahrscheinlich, dass Sie aufrufen müssen `navigator.splashscreen.show()` den Splash-Screen beim Starten der app sichtbar zu machen. \ No newline at end of file diff --git a/cordova/plugins/org.apache.cordova.splashscreen/doc/es/index.md b/cordova/plugins/org.apache.cordova.splashscreen/doc/es/index.md index 66bcb42..644bec3 100644 --- a/cordova/plugins/org.apache.cordova.splashscreen/doc/es/index.md +++ b/cordova/plugins/org.apache.cordova.splashscreen/doc/es/index.md @@ -28,7 +28,7 @@ Este plugin muestra y esconde una pantalla de bienvenida durante el inicio de la ## Plataformas soportadas -* Amazon fuego OS +* Amazon fire OS * Android * BlackBerry 10 * iOS @@ -42,33 +42,26 @@ Este plugin muestra y esconde una pantalla de bienvenida durante el inicio de la ### Rarezas Android -En el archivo config.xml, tienes que añadir la siguiente preferencia +En el archivo config.xml, tienes que añadir las siguientes preferencias: -`` +`` `` -Donde foo es el nombre del archivo splashscreen. Preferiblemente un archivo de 9 parche. Asegúrese de agregar tus archivos splashcreen en tu directorio res/xml bajo las carpetas apropiadas. +Donde foo es el nombre del archivo splashscreen, preferiblemente un archivo de 9 parche. Asegúrese de agregar tus archivos splashcreen en tu directorio res/xml bajo las carpetas apropiadas. El segundo parámetro representa cuánto aparecerán el splashscreen en milisegundos. Valor predeterminado es ms 3000. Ver [los iconos y salpicadura pantallas][1] para obtener más información. -Para Android, también tienes que editar el archivo java principales proyectos. Debe agregar un segundo parámetro que representa un intervalo de tiempo para su super.loadUrl. - -`super.loadUrl(Config.getStartUrl(), 10000);` + [1]: http://cordova.apache.org/docs/en/edge/config_ref_images.md.html ## splashscreen.hide Despedir a la pantalla de bienvenida. - navigator.splashscreen.hide(); + Navigator.SplashScreen.Hide(); -### BlackBerry 10 chanfle - -El `config.xml` del archivo `AutoHideSplashScreen` ajuste debe ser`false`. - -### iOS Quirk +### BlackBerry 10, WP8, iOS Quirk El `config.xml` del archivo `AutoHideSplashScreen` la configuración debe ser `false` . Para retrasar oculta la pantalla splash durante dos segundos, agregue un temporizador como la siguiente en el `deviceready` controlador de eventos: - setTimeout(function() { - navigator.splashscreen.hide(); + setTimeout(function() {navigator.splashscreen.hide(); }, 2000); @@ -76,9 +69,7 @@ El `config.xml` del archivo `AutoHideSplashScreen` la configuración debe ser `f Muestra la pantalla de bienvenida. - navigator.splashscreen.show(); + Navigator.SplashScreen.Show(); -La aplicación no se puede llamar `navigator.splashscreen.show()` hasta que haya iniciado la aplicación y el `deviceready` evento ha despedido. Pero puesto que normalmente la pantalla está destinada a ser visible antes de que comience su aplicación, que parecería que el propósito de la pantalla de bienvenida. Proporcionar cierta configuración en `config.xml` automáticamente `show` la pantalla de presentación inmediatamente después de su lanzamiento de la aplicación y antes de ser completamente ha iniciado y recibió el `deviceready` evento. Ver [los iconos y salpicadura pantallas][1] para obtener más información sobre haciendo esta configuración. Por esta razón, es poco probable que necesitas llamar a `navigator.splashscreen.show()` para hacer la pantalla visible para el inicio de la aplicación. - - [1]: http://cordova.apache.org/docs/en/edge/config_ref_images.md.html \ No newline at end of file +La aplicación no se puede llamar `navigator.splashscreen.show()` hasta que haya iniciado la aplicación y el `deviceready` evento ha despedido. Pero puesto que normalmente la pantalla está destinada a ser visible antes de que comience su aplicación, que parecería que el propósito de la pantalla de bienvenida. Proporcionar cierta configuración en `config.xml` automáticamente `show` la pantalla de presentación inmediatamente después de su lanzamiento de la aplicación y antes de ser completamente ha iniciado y recibió el `deviceready` evento. Ver [los iconos y salpicadura pantallas][1] para obtener más información sobre haciendo esta configuración. Por esta razón, es poco probable que necesitas llamar a `navigator.splashscreen.show()` para hacer la pantalla visible para el inicio de la aplicación. \ No newline at end of file diff --git a/cordova/plugins/org.apache.cordova.splashscreen/doc/fr/index.md b/cordova/plugins/org.apache.cordova.splashscreen/doc/fr/index.md index 3783591..a898d80 100644 --- a/cordova/plugins/org.apache.cordova.splashscreen/doc/fr/index.md +++ b/cordova/plugins/org.apache.cordova.splashscreen/doc/fr/index.md @@ -42,43 +42,34 @@ Ce plugin affiche et masque un écran de démarrage lors du lancement de l'appli ### Quirks Android -Dans votre fichier config.xml, vous devez ajouter la préférence suivante +Dans votre fichier config.xml, vous devez ajouter les préférences suivantes : -`` +`` `` -Où foo est le nom du fichier splashscreen. Préférence un fichier de 9 correctif. Assurez-vous d'ajouter vos fichiers splashcreen dans votre répertoire res/xml dans les dossiers appropriés. +Où foo est le nom du fichier splashscreen, préférablement un fichier de 9 correctif. Assurez-vous d'ajouter vos fichiers splashcreen dans votre répertoire res/xml dans les dossiers appropriés. Le deuxième paramètre représente combien de temps le splashscreen apparaîtra en millisecondes. Il est par défaut à 3000 ms. Pour plus d'informations, consultez [icônes et écrans de démarrage][1] . -Pour Android, vous devez également modifier votre fichier java principal de projets. Vous devez ajouter un deuxième paramètre, ce qui représente un temps de retard à votre super.loadUrl. - -`super.loadUrl(Config.getStartUrl(), 10000);` + [1]: http://cordova.apache.org/docs/en/edge/config_ref_images.md.html ## splashscreen.Hide -Fait disparaître l'écran de démarrage. +Faire disparaître de l'écran de démarrage. - navigator.splashscreen.hide(); + Navigator.SplashScreen.Hide() ; -### BlackBerry 10 Quirk - -La `config.xml` du fichier `AutoHideSplashScreen` doit être`false`. +### BlackBerry 10, WP8, iOS Quirk -### iOS Quirk +La `config.xml` du fichier `AutoHideSplashScreen` doit être `false` . Pour retarder la cacher l'écran de démarrage pendant deux secondes, ajouter un minuteur comme suit dans la `deviceready` gestionnaire d'événements : -Le paramètre `AutoHideSplashScreenconfig.xml` doit être réglé à `false` . Pour retarder la disparition de l'écran de démarrage de deux secondes, ajoute un minuteur comme ci-dessous dans le gestionnaire d'événements `deviceready` : - - setTimeout(function() { - navigator.splashscreen.hide(); - }, 2000); + setTimeout(function() {navigator.splashscreen.hide() ; + }, 2000) ; ## splashscreen.Show Affiche l'écran de démarrage. - navigator.splashscreen.show(); + Navigator.SplashScreen.Show() ; -Votre application ne peut pas appeler `navigator.splashscreen.show()` jusqu'à ce que l'application a commencé et le `deviceready` événement a été déclenché. Mais puisqu'en général, l'écran de démarrage est destiné à être visible avant que votre application a commencé, qui semblerait à l'encontre des objectifs de l'écran de démarrage. Fournir une configuration en `config.xml` sera automatiquement `show` l'écran de démarrage immédiatement après votre lancement de l'app et avant qu'il a complètement démarré et a reçu le `deviceready` événement. Voir les [icônes et les écrans de démarrage][1] pour plus d'informations sur la conduite de cette configuration. Pour cette raison, il est peu probable que vous devez appeler `navigator.splashscreen.show()` pour rendre l'écran de démarrage visible pour le démarrage de l'application. - - [1]: http://cordova.apache.org/docs/en/edge/config_ref_images.md.html \ No newline at end of file +Votre application ne peut pas appeler `navigator.splashscreen.show()` jusqu'à ce que l'application a commencé et le `deviceready` événement a été déclenché. Mais puisqu'en général, l'écran de démarrage est destiné à être visible avant que votre application a commencé, qui semblerait à l'encontre des objectifs de l'écran de démarrage. Fournir une configuration en `config.xml` sera automatiquement `show` l'écran de démarrage immédiatement après votre lancement de l'app et avant qu'il a complètement démarré et a reçu le `deviceready` événement. Voir les [icônes et les écrans de démarrage][1] pour plus d'informations sur la conduite de cette configuration. Pour cette raison, il est peu probable que vous devez appeler `navigator.splashscreen.show()` pour rendre l'écran de démarrage visible pour le démarrage de l'application. \ No newline at end of file diff --git a/cordova/plugins/org.apache.cordova.splashscreen/doc/index.md b/cordova/plugins/org.apache.cordova.splashscreen/doc/index.md index 00f7d24..c3070cc 100644 --- a/cordova/plugins/org.apache.cordova.splashscreen/doc/index.md +++ b/cordova/plugins/org.apache.cordova.splashscreen/doc/index.md @@ -43,15 +43,13 @@ This plugin displays and hides a splash screen during application launch. ### Android Quirks -In your config.xml, you need to add the following preference +In your config.xml, you need to add the following preferences: -`` + + -Where foo is the name of the splashscreen file. Preferably a 9 patch file. Make sure to add your splashcreen files to your res/xml directory under the appropriate folders. - -For Android, you also have to edit your projects main java file. You must add a second parameter representing a time delay to your super.loadUrl. - -`super.loadUrl(Config.getStartUrl(), 10000);` +Where foo is the name of the splashscreen file, preferably a 9 patch file. Make sure to add your splashcreen files to your res/xml directory under the appropriate folders. The second parameter represents how long the splashscreen will appear in milliseconds. It defaults to 3000 ms. See [Icons and Splash Screens](http://cordova.apache.org/docs/en/edge/config_ref_images.md.html) +for more information. ## splashscreen.hide diff --git a/cordova/plugins/org.apache.cordova.splashscreen/doc/it/index.md b/cordova/plugins/org.apache.cordova.splashscreen/doc/it/index.md index 4a0e5b3..2f6d2f1 100644 --- a/cordova/plugins/org.apache.cordova.splashscreen/doc/it/index.md +++ b/cordova/plugins/org.apache.cordova.splashscreen/doc/it/index.md @@ -42,33 +42,26 @@ Questo plugin Visualizza e nasconde una schermata iniziale durante l'avvio dell' ### Stranezze Android -Nel vostro config. xml, è necessario aggiungere la seguente preferenza +Nel vostro config. xml, è necessario aggiungere le seguenti preferenze: -`` +`` `` -Dove foo è il nome del file splashscreen. Preferibilmente un file di 9 patch. Assicurati di aggiungere i tuoi file splashcreen res/xml nella directory sotto cartelle appropriate. +Dove foo è il nome del file splashscreen, preferibilmente un file 9 patch. Assicurati di aggiungere i tuoi file splashcreen res/xml nella directory sotto cartelle appropriate. Il secondo parametro rappresenta quanto tempo lo splashscreen apparirà in millisecondi. Il valore predefinito è 3000 ms. Per ulteriori informazioni, vedere [icone e schermate iniziali][1] . -Per Android, devi anche modificare il file di progetti java principale. È necessario aggiungere un secondo parametro che rappresenta un tempo di ritardo alla tua super.loadUrl. - -`super.loadUrl(Config.getStartUrl(), 10000);` + [1]: http://cordova.apache.org/docs/en/edge/config_ref_images.md.html ## splashscreen.Hide Respingere la schermata iniziale. - navigator.splashscreen.hide(); + Navigator.SplashScreen.Hide(); -### BlackBerry 10 Quirk - -Il `config.xml` di file `AutoHideSplashScreen` impostazione deve essere`false`. - -### iOS Quirk +### BlackBerry 10, WP8, iOS Quirk Il `config.xml` di file `AutoHideSplashScreen` impostazione deve essere `false` . Per ritardare nascondendo la schermata iniziale per due secondi, aggiungere un timer ad esempio nel `deviceready` gestore di evento: - setTimeout(function() { - navigator.splashscreen.hide(); + setTimeout(function() {navigator.splashscreen.hide(); }, 2000); @@ -76,9 +69,7 @@ Il `config.xml` di file `AutoHideSplashScreen` impostazione deve essere `false` Visualizza la schermata iniziale. - navigator.splashscreen.show(); + Navigator.SplashScreen.Show(); -L'applicazione non può chiamare `navigator.splashscreen.show()` fino a quando ha iniziato l'app e il `deviceready` ha generato l'evento. Ma poiché in genere la schermata iniziale è destinata ad essere visibile prima app ha iniziato, che sembrerebbe per sconfiggere lo scopo della schermata iniziale. Fornendo qualche configurazione in `config.xml` verrà automaticamente `show` la schermata iniziale subito dopo il lancio dell'app e prima che completamente ha iniziato e ha ricevuto il `deviceready` evento. Per ulteriori informazioni su facendo questa configurazione, vedere [icone e schermate iniziali][1] . Per questo motivo, è improbabile che dovete chiamare `navigator.splashscreen.show()` per rendere la schermata visibile per avvio di app. - - [1]: http://cordova.apache.org/docs/en/edge/config_ref_images.md.html \ No newline at end of file +L'applicazione non può chiamare `navigator.splashscreen.show()` fino a quando ha iniziato l'app e il `deviceready` ha generato l'evento. Ma poiché in genere la schermata iniziale è destinata ad essere visibile prima app ha iniziato, che sembrerebbe per sconfiggere lo scopo della schermata iniziale. Fornendo qualche configurazione in `config.xml` verrà automaticamente `show` la schermata iniziale subito dopo il lancio dell'app e prima che completamente ha iniziato e ha ricevuto il `deviceready` evento. Per ulteriori informazioni su facendo questa configurazione, vedere [icone e schermate iniziali][1] . Per questo motivo, è improbabile che dovete chiamare `navigator.splashscreen.show()` per rendere la schermata visibile per avvio di app. \ No newline at end of file diff --git a/cordova/plugins/org.apache.cordova.splashscreen/doc/ja/index.md b/cordova/plugins/org.apache.cordova.splashscreen/doc/ja/index.md index 96a970f..d96a614 100644 --- a/cordova/plugins/org.apache.cordova.splashscreen/doc/ja/index.md +++ b/cordova/plugins/org.apache.cordova.splashscreen/doc/ja/index.md @@ -42,15 +42,13 @@ ### Android の癖 -あなた config.xml で、以下の設定を追加する必要があります。 +あなたの config.xml を以下の設定を追加する必要があります。 -`` +`` `` -Foo は splashscreen ファイルの名前です。できれば 9 パッチ ファイルです。解像度/xml ディレクトリの適切なフォルダーの下に splashcreen ファイルを追加することを確認します。 +Foo ができれば 9 パッチファイル splashscreen ファイルの名前です。 解像度/xml ディレクトリの適切なフォルダーの下に splashcreen ファイルを追加することを確認します。 2 番目のパラメーターは、スプラッシュ ・ スクリーンがの表示時間 (ミリ秒単位) を表します。 デフォルトでは 3000 ミリ秒です。 詳細については、[アイコンとスプラッシュ画面][1]を参照してください。 -アンドロイドのためまた、プロジェクトの主要な java ファイルを編集する必要があります。あなたの super.loadUrl への遅延時間を表す 2 番目のパラメーターを追加する必要があります。 - -`super.loadUrl(Config.getStartUrl(), 10000);` + [1]: http://cordova.apache.org/docs/en/edge/config_ref_images.md.html ## splashscreen.hide @@ -59,17 +57,11 @@ Foo は splashscreen ファイルの名前です。できれば 9 パッチ フ navigator.splashscreen.hide(); -### ブラックベリー 10 気まぐれ - -`config.xml`ファイルの `AutoHideSplashScreen` 設定する必要があります`false`. +### ブラックベリー 10、WP8、iOS の気まぐれ -### iOS の気まぐれ +`config.xml`ファイルの `AutoHideSplashScreen` 設定する必要があります `false` 。 遅延を 2 秒間スプラッシュ スクリーンを非表示、タイマーを追加しますで次のように `deviceready` イベント ハンドラー。 -`config.xml`ファイルの `AutoHideSplashScreen` 設定する必要があります `false` 。 遅延を 2 秒間スプラッシュ スクリーンを非表示、する、タイマーを追加しますで次のように `deviceready` イベント ハンドラー。 - - setTimeout(function() { - navigator.splashscreen.hide(); - }, 2000); + setTimeout(function() {navigator.splashscreen.hide();}, 2000年); ## splashscreen.show @@ -79,6 +71,4 @@ Foo は splashscreen ファイルの名前です。できれば 9 パッチ フ navigator.splashscreen.show(); -アプリケーションを呼び出すことはできません `navigator.splashscreen.show()` 、アプリが開始されるまで、 `deviceready` イベントが発生します。 しかし、以来、通常スプラッシュ画面アプリ開始前に表示するものですと思われる、スプラッシュ スクリーンの目的の敗北します。 いくつかの構成を提供する `config.xml` は自動的に `show` スプラッシュ画面、アプリを起動後すぐに、それが完全に起動し、受信する前に、 `deviceready` イベント。 詳細についてはこの構成を行うには、[アイコンとスプラッシュ画面][1]を参照してください。 このような理由から、それは可能性を呼び出す必要があります `navigator.splashscreen.show()` アプリ起動時のスプラッシュ画面を見やすくします。 - - [1]: http://cordova.apache.org/docs/en/edge/config_ref_images.md.html \ No newline at end of file +アプリケーションを呼び出すことはできません `navigator.splashscreen.show()` 、アプリが開始されるまで、 `deviceready` イベントが発生します。 しかし、以来、通常スプラッシュ画面アプリ開始前に表示するものですと思われる、スプラッシュ スクリーンの目的の敗北します。 いくつかの構成を提供する `config.xml` は自動的に `show` スプラッシュ画面、アプリを起動後すぐに、それが完全に起動し、受信する前に、 `deviceready` イベント。 詳細についてはこの構成を行うには、[アイコンとスプラッシュ画面][1]を参照してください。 このような理由から、それは可能性を呼び出す必要があります `navigator.splashscreen.show()` アプリ起動時のスプラッシュ画面を見やすくします。 \ No newline at end of file diff --git a/cordova/plugins/org.apache.cordova.splashscreen/doc/ko/index.md b/cordova/plugins/org.apache.cordova.splashscreen/doc/ko/index.md index 6a504d6..86a4e83 100644 --- a/cordova/plugins/org.apache.cordova.splashscreen/doc/ko/index.md +++ b/cordova/plugins/org.apache.cordova.splashscreen/doc/ko/index.md @@ -42,15 +42,13 @@ ### 안 드 로이드 단점 -당신의 config.xml에 다음 기본 설정 추가 해야 +당신의 config.xml에 다음 환경 설정에 추가 해야 합니다. -`` +`` `` -여기서 foo splashscreen 파일의 이름입니다. 가급적 이면 9 패치 파일입니다. 적절 한 폴더 아래 res/xml 디렉토리에 splashcreen 파일을 추가 해야 합니다. +여기서 foo splashscreen 파일, 선호 9 패치 파일의 이름입니다. 적절 한 폴더 아래 res/xml 디렉토리에 splashcreen 파일을 추가 해야 합니다. 두 번째 매개 변수는 splashscreen 얼마나 밀리초 단위로 표시 됩니다 나타냅니다. 3000 ms 기본값으로 사용 됩니다. 자세한 내용은 [아이콘 및 시작 화면을][1] 참조 하십시오. -안 드 로이드, 또한 프로젝트 주요 자바 파일을 편집 해야 합니다. 당신의 super.loadUrl 시간 지연을 나타내는 두 번째 매개 변수를 추가 해야 합니다. - -`super.loadUrl(Config.getStartUrl(), 10000);` + [1]: http://cordova.apache.org/docs/en/edge/config_ref_images.md.html ## splashscreen.hide @@ -59,16 +57,11 @@ navigator.splashscreen.hide(); -### 블랙베리 10 특질 - -`config.xml`파일의 `AutoHideSplashScreen` 설정을 해야 합니다`false`. - -### iOS 특질 +### 블랙베리 10, WP8, iOS 특질 `config.xml`파일의 `AutoHideSplashScreen` 설정을 해야 합니다 `false` . 2 초 동안 시작 화면을 숨기고 지연에 다음과 같이 타이머 추가 `deviceready` 이벤트 처리기: - setTimeout(function() { - navigator.splashscreen.hide(); + setTimeout(function() {navigator.splashscreen.hide(); }, 2000); @@ -79,6 +72,4 @@ navigator.splashscreen.show(); -응용 프로그램 호출할 수 없습니다 `navigator.splashscreen.show()` 응용 프로그램은 시작 될 때까지 및 `deviceready` 이벤트를 해 고 했다. 하지만 그 스플래시 스크린의 목적 것 같다 일반적으로 시작 화면이 당신의 애플 리 케이 션 시작 하기 전에 표시 될 운명이 다, 이후. 몇 가지 구성을 제공 `config.xml` 자동으로 `show` 시작 화면 응용 프로그램 실행 후 즉시 및 그것은 완벽 하 게 시작 하 고 받은 전에 `deviceready` 이벤트. 이 구성 하 고 자세한 내용은 [아이콘 및 시작 화면을][1] 참조 하십시오. 이러한 이유로, 그것은 가능성이 호출 해야 `navigator.splashscreen.show()` 시작 화면은 응용 프로그램 시작에 대 한 표시 되도록 합니다. - - [1]: http://cordova.apache.org/docs/en/edge/config_ref_images.md.html \ No newline at end of file +응용 프로그램 호출할 수 없습니다 `navigator.splashscreen.show()` 응용 프로그램은 시작 될 때까지 및 `deviceready` 이벤트를 해 고 했다. 하지만 그 스플래시 스크린의 목적 것 같다 일반적으로 시작 화면이 당신의 애플 리 케이 션 시작 하기 전에 표시 될 운명이 다, 이후. 몇 가지 구성을 제공 `config.xml` 자동으로 `show` 시작 화면 응용 프로그램 실행 후 즉시 및 그것은 완벽 하 게 시작 하 고 받은 전에 `deviceready` 이벤트. 이 구성 하 고 자세한 내용은 [아이콘 및 시작 화면을][1] 참조 하십시오. 이러한 이유로, 그것은 가능성이 호출 해야 `navigator.splashscreen.show()` 시작 화면은 응용 프로그램 시작에 대 한 표시 되도록 합니다. \ No newline at end of file diff --git a/cordova/plugins/org.apache.cordova.splashscreen/doc/pl/index.md b/cordova/plugins/org.apache.cordova.splashscreen/doc/pl/index.md index 68e5029..c23a332 100644 --- a/cordova/plugins/org.apache.cordova.splashscreen/doc/pl/index.md +++ b/cordova/plugins/org.apache.cordova.splashscreen/doc/pl/index.md @@ -21,16 +21,16 @@ Ten plugin wyświetla i ukrywa ekran powitalny podczas uruchamiania aplikacji. -## Instalacji +## Instalacja cordova plugin add org.apache.cordova.splashscreen ## Obsługiwane platformy -* Amazon ogień OS +* Amazon Fire OS * Android -* Jeżyna 10 +* BlackBerry 10 * iOS * Windows Phone 7 i 8 * Windows 8 @@ -40,35 +40,28 @@ Ten plugin wyświetla i ukrywa ekran powitalny podczas uruchamiania aplikacji. * splashscreen.show * splashscreen.Hide -### Android dziwactwa +### Dziwactwa Androida -W pliku config.xml musisz dodać następujące preferencje +W pliku config.xml musisz dodać następujące preferencje: -`` +`` `` -Gdzie foo jest nazwą pliku ekranu powitalnego. Najlepiej plik poprawki 9. Upewnij się dodać pliki splashcreen do katalogu res/xml w odpowiednich folderach. +Gdzie foo jest nazwą pliku ekranu powitalnego, najlepiej 9 łatce. Upewnij się dodać pliki splashcreen do katalogu res/xml w odpowiednich folderach. Drugi parametr reprezentuje, jak długo ekranu powitalnego pojawi się w milisekundach. Domyślnie 3000 ms. Aby uzyskać więcej informacji, zobacz [ikony i ekrany powitalne w aplikacjach][1] . -Dla Androida należy edytować plik java głównych projektów. Należy dodać drugi parametr reprezentujących opóźnienie do Twojej super.loadUrl. - -`super.loadUrl(Config.getStartUrl(), 10000);` + [1]: http://cordova.apache.org/docs/en/edge/config_ref_images.md.html ## splashscreen.Hide Odrzucić ten opryskaæ têcza. - navigator.splashscreen.hide(); + Navigator.splashscreen.Hide(); -### Zrządzenie blackBerry 10 - -`config.xml`Pliku `AutoHideSplashScreen` ustawienie musi być`false`. - -### iOS dziwactwo +### Jeżyna 10, WP8, iOS dziwactwo `config.xml`Pliku `AutoHideSplashScreen` ustawienie musi być `false` . Opóźnienia, ukrywanie ekranu powitalnego przez dwie sekundy, dodać timer następujących w `deviceready` obsługa zdarzeń: - setTimeout(function() { - navigator.splashscreen.hide(); + setTimeout(function() {navigator.splashscreen.hide(); }, 2000); @@ -76,9 +69,7 @@ Odrzucić ten opryskaæ têcza. Wyświetla ekran powitalny. - navigator.splashscreen.show(); + Navigator.splashscreen.show(); -Aplikacja nie może wywołać `navigator.splashscreen.show()` aż aplikacja została uruchomiona i `deviceready` imprezy został zwolniony. Ale ponieważ zazwyczaj opryskać tęcza ma być widoczne przed rozpoczęciem aplikacji, wydaje się sprzeczne z celem ekranu powitalnego. Dostarczanie niektórych konfiguracji w `config.xml` będzie automatycznie `show` ekran powitalny, natychmiast po uruchomienie aplikacji i przed pełni rozpoczął i otrzymał `deviceready` zdarzenie. Aby uzyskać więcej informacji na robienie tej konfiguracji, zobacz [ikony i ekrany powitalne w aplikacjach][1] . Z tego powodu, jest mało prawdopodobne, należy zadzwonić `navigator.splashscreen.show()` Aby wyświetlić ekran powitalny dla uruchamiania aplikacji. - - [1]: http://cordova.apache.org/docs/en/edge/config_ref_images.md.html \ No newline at end of file +Aplikacja nie może wywołać `navigator.splashscreen.show()` aż aplikacja została uruchomiona i `deviceready` imprezy został zwolniony. Ale ponieważ zazwyczaj opryskać tęcza ma być widoczne przed rozpoczęciem aplikacji, wydaje się sprzeczne z celem ekranu powitalnego. Dostarczanie niektórych konfiguracji w `config.xml` będzie automatycznie `show` ekran powitalny, natychmiast po uruchomienie aplikacji i przed pełni rozpoczął i otrzymał `deviceready` zdarzenie. Aby uzyskać więcej informacji na robienie tej konfiguracji, zobacz [ikony i ekrany powitalne w aplikacjach][1] . Z tego powodu, jest mało prawdopodobne, należy zadzwonić `navigator.splashscreen.show()` Aby wyświetlić ekran powitalny dla uruchamiania aplikacji. \ No newline at end of file diff --git a/cordova/plugins/org.apache.cordova.splashscreen/doc/ru/index.md b/cordova/plugins/org.apache.cordova.splashscreen/doc/ru/index.md new file mode 100644 index 0000000..1f87227 --- /dev/null +++ b/cordova/plugins/org.apache.cordova.splashscreen/doc/ru/index.md @@ -0,0 +1,75 @@ + + +# org.apache.cordova.splashscreen + +Этот плагин отображает и скрывает экран-заставку при запуске приложения. + +## Установка + + cordova plugin add org.apache.cordova.splashscreen + + +## Поддерживаемые платформы + +* Amazon Fire OS +* Android +* BlackBerry 10 +* iOS +* Windows Phone 7 и 8 +* Windows 8 + +## Методы + +* splashscreen.show +* splashscreen.hide + +### Особенности Android + +В вашем файле config.xml необходимо добавить следующие настройки: + +`` `` + +Где foo это имя файла splashscreen, желательно 9 заплатку. Убедитесь в том добавить ваши splashcreen файлы в папку res/xml в соответствующие папки. Второй параметр представляет, как долго splashscreen появится в миллисекундах. По умолчанию он 3000 МС. Увидеть [иконки и заставки][1] для получения дополнительной информации. + + [1]: http://cordova.apache.org/docs/en/edge/config_ref_images.md.html + +## splashscreen.hide + +Закройте экран-заставка. + + Navigator.SplashScreen.Hide(); + + +### Особенности BlackBerry 10, WP8, iOS + +`config.xml`Файла `AutoHideSplashScreen` должен быть `false` . Для задержки скрытия заставки на две секунды, добавить таймер, например в `deviceready` обработчик событий: + + setTimeout(function() {navigator.splashscreen.hide(); + }, 2000); + + +## splashscreen.show + +Отображает экран-заставку. + + Navigator.SplashScreen.Show(); + + +Ваше приложение не может вызвать `navigator.splashscreen.show()` до тех пор, пока приложение началась и `deviceready` событие инициировано. Но поскольку обычно экран-заставка должен быть видимым до начала вашего приложения, что казалось бы поражение цели экрана-заставки. Предоставление некоторых конфигурации в `config.xml` будет автоматически `show` экран-заставку сразу же после запуска вашего приложения и перед его полностью запущен и получил `deviceready` событие. Увидеть [иконки и заставки][1] для получения дополнительной информации на делать этой конфигурации. По этой причине маловероятно, вам нужно вызвать `navigator.splashscreen.show()` для отображения экрана-заставки для запуска приложения. \ No newline at end of file diff --git a/cordova/plugins/org.apache.cordova.splashscreen/doc/zh/index.md b/cordova/plugins/org.apache.cordova.splashscreen/doc/zh/index.md index bd6eba7..40e6691 100644 --- a/cordova/plugins/org.apache.cordova.splashscreen/doc/zh/index.md +++ b/cordova/plugins/org.apache.cordova.splashscreen/doc/zh/index.md @@ -42,43 +42,33 @@ ### Android 的怪癖 -您需要在您的 config.xml 中添加下列優先選項 +在你的 config.xml,您需要添加以下優惠: -`` +`` `` -美孚在哪裡的閃屏檔的名稱。最好是 9 修補程式檔。請確保您的 splashcreen 檔添加到相應的資料夾下的 res/xml 目錄。 +美孚在哪裡閃屏檔,最好是 9 修補程式檔的名稱。 請確保您的 splashcreen 檔添加到 res/xml 目錄下相應的資料夾。 第二個參數表示多久閃屏會顯示以毫秒為單位。 它將預設為 3000 毫秒。 有關更多資訊,請參見[圖示和啟動畫面][1]。 -Android 系統,也可以編輯您的專案主要的 java 檔。您必須添加第二個參數表示一個時間延遲到你 super.loadUrl。 - -`super.loadUrl(Config.getStartUrl(), 10000);` + [1]: http://cordova.apache.org/docs/en/edge/config_ref_images.md.html ## splashscreen.hide -解雇的初始螢幕。 +解雇的閃屏。 - navigator.splashscreen.hide(); + navigator.splashscreen.hide() ; -### 黑莓 10 怪癖 - -`config.xml`檔的 `AutoHideSplashScreen` 設置必須為`false`. - -### iOS 怪癖 +### 黑莓 10,WP8,iOS 怪癖 `config.xml`檔的 `AutoHideSplashScreen` 設置必須為 `false` 。 若要延遲兩秒鐘隱藏的閃屏,添加如下所示在計時器 `deviceready` 事件處理常式: - setTimeout(function() { - navigator.splashscreen.hide(); - }, 2000); + setTimeout(function() {navigator.splashscreen.hide() ;},2000年) ; ## splashscreen.show 顯示初始螢幕。 - navigator.splashscreen.show(); + navigator.splashscreen.show() ; -您的應用程式不能調用 `navigator.splashscreen.show()` 直到應用程式已啟動和 `deviceready` 觸發了事件。 但因為通常的閃屏為了是可見的在您的應用程式啟動之前,似乎要打敗閃屏的目的。 提供一些配置在 `config.xml` 自動將 `show` 的初始螢幕,您的應用程式啟動後立即和它在之前已完全開始收到 `deviceready` 事件。 做這種配置的詳細資訊,請參閱[圖示和閃屏][1]。 出於此原因,它是不太可能你需要調用 `navigator.splashscreen.show()` ,使初始螢幕可見為應用程式啟動。 - - [1]: http://cordova.apache.org/docs/en/edge/config_ref_images.md.html \ No newline at end of file +您的應用程式無法調用 `navigator.splashscreen.show()` 直到應用程式已經開始, `deviceready` 觸發了事件。 但是,由於通常的閃屏為了是可見的在您的應用程式啟動之前,這似乎會打敗閃屏的目的。 提供一些配置在 `config.xml` 將自動 `show` 閃屏您的應用程式啟動後立即和之前它已經完全起步並收到 `deviceready` 事件。 做這種配置的詳細資訊,請參閱[圖示和啟動畫面][1]。 出於這個原因,它不太可能您需要調用 `navigator.splashscreen.show()` ,使初始螢幕可見為應用程式啟動。 \ No newline at end of file diff --git a/cordova/plugins/org.apache.cordova.splashscreen/package.json b/cordova/plugins/org.apache.cordova.splashscreen/package.json index e8c3629..e50dc9d 100644 --- a/cordova/plugins/org.apache.cordova.splashscreen/package.json +++ b/cordova/plugins/org.apache.cordova.splashscreen/package.json @@ -1,5 +1,5 @@ { - "version": "0.3.1", + "version": "0.3.5", "name": "org.apache.cordova.splashscreen", "cordova_name": "Splashscreen", "description": "Cordova Splashscreen Plugin", @@ -22,5 +22,5 @@ "tizen" ], "engines": [], - "englishdoc": "\n\n# org.apache.cordova.splashscreen\n\nThis plugin displays and hides a splash screen during application launch.\n\n## Installation\n\n cordova plugin add org.apache.cordova.splashscreen\n\n\n## Supported Platforms\n\n- Amazon Fire OS\n- Android\n- BlackBerry 10\n- iOS\n- Windows Phone 7 and 8\n- Windows 8\n\n\n## Methods\n\n- splashscreen.show\n- splashscreen.hide\n\n### Android Quirks\n\nIn your config.xml, you need to add the following preference\n\n``\n\nWhere foo is the name of the splashscreen file. Preferably a 9 patch file. Make sure to add your splashcreen files to your res/xml directory under the appropriate folders.\n\nFor Android, you also have to edit your projects main java file. You must add a second parameter representing a time delay to your super.loadUrl.\n\n`super.loadUrl(Config.getStartUrl(), 10000);`\n\n## splashscreen.hide\n\nDismiss the splash screen.\n\n navigator.splashscreen.hide();\n\n\n### BlackBerry 10, WP8, iOS Quirk\n\nThe `config.xml` file's `AutoHideSplashScreen` setting must be\n`false`. To delay hiding the splash screen for two seconds, add a\ntimer such as the following in the `deviceready` event handler:\n\n setTimeout(function() {\n navigator.splashscreen.hide();\n }, 2000);\n\n## splashscreen.show\n\nDisplays the splash screen.\n\n navigator.splashscreen.show();\n\n\nYour application cannot call `navigator.splashscreen.show()` until the app has\nstarted and the `deviceready` event has fired. But since typically the splash\nscreen is meant to be visible before your app has started, that would seem to\ndefeat the purpose of the splash screen. Providing some configuration in\n`config.xml` will automatically `show` the splash screen immediately after your\napp launch and before it has fully started and received the `deviceready`\nevent. See [Icons and Splash Screens](http://cordova.apache.org/docs/en/edge/config_ref_images.md.html)\nfor more information on doing this configuration. For this reason, it is\nunlikely you need to call `navigator.splashscreen.show()` to make the splash\nscreen visible for app startup.\n\n" + "englishdoc": "\n\n# org.apache.cordova.splashscreen\n\nThis plugin displays and hides a splash screen during application launch.\n\n## Installation\n\n cordova plugin add org.apache.cordova.splashscreen\n\n\n## Supported Platforms\n\n- Amazon Fire OS\n- Android\n- BlackBerry 10\n- iOS\n- Windows Phone 7 and 8\n- Windows 8\n\n\n## Methods\n\n- splashscreen.show\n- splashscreen.hide\n\n### Android Quirks\n\nIn your config.xml, you need to add the following preferences:\n\n \n \n\nWhere foo is the name of the splashscreen file, preferably a 9 patch file. Make sure to add your splashcreen files to your res/xml directory under the appropriate folders. The second parameter represents how long the splashscreen will appear in milliseconds. It defaults to 3000 ms. See [Icons and Splash Screens](http://cordova.apache.org/docs/en/edge/config_ref_images.md.html)\nfor more information.\n\n## splashscreen.hide\n\nDismiss the splash screen.\n\n navigator.splashscreen.hide();\n\n\n### BlackBerry 10, WP8, iOS Quirk\n\nThe `config.xml` file's `AutoHideSplashScreen` setting must be\n`false`. To delay hiding the splash screen for two seconds, add a\ntimer such as the following in the `deviceready` event handler:\n\n setTimeout(function() {\n navigator.splashscreen.hide();\n }, 2000);\n\n## splashscreen.show\n\nDisplays the splash screen.\n\n navigator.splashscreen.show();\n\n\nYour application cannot call `navigator.splashscreen.show()` until the app has\nstarted and the `deviceready` event has fired. But since typically the splash\nscreen is meant to be visible before your app has started, that would seem to\ndefeat the purpose of the splash screen. Providing some configuration in\n`config.xml` will automatically `show` the splash screen immediately after your\napp launch and before it has fully started and received the `deviceready`\nevent. See [Icons and Splash Screens](http://cordova.apache.org/docs/en/edge/config_ref_images.md.html)\nfor more information on doing this configuration. For this reason, it is\nunlikely you need to call `navigator.splashscreen.show()` to make the splash\nscreen visible for app startup.\n\n" } \ No newline at end of file diff --git a/cordova/plugins/org.apache.cordova.splashscreen/plugin.xml b/cordova/plugins/org.apache.cordova.splashscreen/plugin.xml index 265d450..38a5063 100644 --- a/cordova/plugins/org.apache.cordova.splashscreen/plugin.xml +++ b/cordova/plugins/org.apache.cordova.splashscreen/plugin.xml @@ -20,7 +20,7 @@ + version="0.3.5"> Splashscreen Cordova Splashscreen Plugin Apache 2.0 diff --git a/cordova/plugins/org.apache.cordova.splashscreen/src/ios/CDVSplashScreen.h b/cordova/plugins/org.apache.cordova.splashscreen/src/ios/CDVSplashScreen.h index 932ad06..0d6ae39 100644 --- a/cordova/plugins/org.apache.cordova.splashscreen/src/ios/CDVSplashScreen.h +++ b/cordova/plugins/org.apache.cordova.splashscreen/src/ios/CDVSplashScreen.h @@ -20,6 +20,16 @@ #import #import +typedef struct { + BOOL iPhone; + BOOL iPad; + BOOL iPhone5; + BOOL iPhone6; + BOOL iPhone6Plus; + BOOL retina; + +} CDV_iOSDevice; + @interface CDVSplashScreen : CDVPlugin { UIActivityIndicatorView* _activityView; UIImageView* _imageView; diff --git a/cordova/plugins/org.apache.cordova.splashscreen/src/ios/CDVSplashScreen.m b/cordova/plugins/org.apache.cordova.splashscreen/src/ios/CDVSplashScreen.m index fdfc4c4..f65a501 100644 --- a/cordova/plugins/org.apache.cordova.splashscreen/src/ios/CDVSplashScreen.m +++ b/cordova/plugins/org.apache.cordova.splashscreen/src/ios/CDVSplashScreen.m @@ -19,9 +19,11 @@ Licensed to the Apache Software Foundation (ASF) under one #import "CDVSplashScreen.h" #import +#import #define kSplashScreenDurationDefault 0.25f + @implementation CDVSplashScreen - (void)pluginInitialize @@ -116,42 +118,93 @@ - (void)destroyViews [self.viewController.view removeObserver:self forKeyPath:@"bounds"]; } -// Sets the view's frame and image. -- (void)updateImage +- (CDV_iOSDevice) getCurrentDevice { - UIInterfaceOrientation orientation = self.viewController.interfaceOrientation; + CDV_iOSDevice device; + + UIScreen* mainScreen = [UIScreen mainScreen]; + CGFloat mainScreenHeight = mainScreen.bounds.size.height; + CGFloat mainScreenWidth = mainScreen.bounds.size.width; + + int limit = MAX(mainScreenHeight,mainScreenWidth); + + device.iPad = (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad); + device.iPhone = (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone); + device.retina = ([mainScreen scale] == 2.0); + device.iPhone5 = (device.iPhone && limit == 568.0); + // note these below is not a true device detect, for example if you are on an + // iPhone 6/6+ but the app is scaled it will prob set iPhone5 as true, but + // this is appropriate for detecting the runtime screen environment + device.iPhone6 = (device.iPhone && limit == 667.0); + device.iPhone6Plus = (device.iPhone && limit == 736.0); + + return device; +} +- (NSString*)getImageName:(UIInterfaceOrientation)currentOrientation delegate:(id)orientationDelegate device:(CDV_iOSDevice)device +{ // Use UILaunchImageFile if specified in plist. Otherwise, use Default. NSString* imageName = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"UILaunchImageFile"]; - + + NSUInteger supportedOrientations = [orientationDelegate supportedInterfaceOrientations]; + // Checks to see if the developer has locked the orientation to use only one of Portrait or Landscape - CDVViewController* vc = (CDVViewController*)self.viewController; - BOOL supportsLandscape = [vc supportsOrientation:UIInterfaceOrientationLandscapeLeft] || [vc supportsOrientation:UIInterfaceOrientationLandscapeRight]; - BOOL supportsPortrait = [vc supportsOrientation:UIInterfaceOrientationPortrait] || [vc supportsOrientation:UIInterfaceOrientationPortraitUpsideDown]; + BOOL supportsLandscape = (supportedOrientations & UIInterfaceOrientationMaskLandscape); + BOOL supportsPortrait = (supportedOrientations & UIInterfaceOrientationMaskPortrait || supportedOrientations & UIInterfaceOrientationMaskPortraitUpsideDown); + // this means there are no mixed orientations in there BOOL isOrientationLocked = !(supportsPortrait && supportsLandscape); - + if (imageName) { imageName = [imageName stringByDeletingPathExtension]; } else { imageName = @"Default"; } - - if (CDV_IsIPhone5()) { + + if (device.iPhone5) { // does not support landscape imageName = [imageName stringByAppendingString:@"-568h"]; - } else if (CDV_IsIPad() && isOrientationLocked) { - switch (orientation) { - case UIInterfaceOrientationLandscapeLeft: - case UIInterfaceOrientationLandscapeRight: - imageName = [imageName stringByAppendingString:@"-Landscape"]; - break; - - case UIInterfaceOrientationPortrait: - case UIInterfaceOrientationPortraitUpsideDown: - default: - imageName = [imageName stringByAppendingString:@"-Portrait"]; - break; + } else if (device.iPhone6) { // does not support landscape + imageName = [imageName stringByAppendingString:@"-667h"]; + } else if (device.iPhone6Plus) { // supports landscape + if (isOrientationLocked) { + imageName = [imageName stringByAppendingString:(supportsLandscape ? @"-Landscape" : @"")]; + } else { + switch (currentOrientation) { + case UIInterfaceOrientationLandscapeLeft: + case UIInterfaceOrientationLandscapeRight: + imageName = [imageName stringByAppendingString:@"-Landscape"]; + break; + default: + break; + } + } + imageName = [imageName stringByAppendingString:@"-736h"]; + + } else if (device.iPad) { // supports landscape + if (isOrientationLocked) { + imageName = [imageName stringByAppendingString:(supportsLandscape ? @"-Landscape" : @"-Portrait")]; + } else { + switch (currentOrientation) { + case UIInterfaceOrientationLandscapeLeft: + case UIInterfaceOrientationLandscapeRight: + imageName = [imageName stringByAppendingString:@"-Landscape"]; + break; + + case UIInterfaceOrientationPortrait: + case UIInterfaceOrientationPortraitUpsideDown: + default: + imageName = [imageName stringByAppendingString:@"-Portrait"]; + break; + } } } + + return imageName; +} + +// Sets the view's frame and image. +- (void)updateImage +{ + NSString* imageName = [self getImageName:self.viewController.interfaceOrientation delegate:(id)self.viewController device:[self getCurrentDevice]]; if (![imageName isEqualToString:_curImageName]) { UIImage* img = [UIImage imageNamed:imageName]; @@ -239,13 +292,15 @@ - (void)setVisible:(BOOL)visible duration:fadeDuration options:UIViewAnimationOptionTransitionNone animations:^(void) { - [_imageView setAlpha:0]; - [_activityView setAlpha:0]; - } - + [_imageView setAlpha:0]; + [_activityView setAlpha:0]; + } completion:^(BOOL finished) { - [self destroyViews]; - }]; + if (finished) { + [self destroyViews]; + } + } + ]; } } diff --git a/cordova/plugins/org.apache.cordova.splashscreen/src/wp/SplashScreen.cs b/cordova/plugins/org.apache.cordova.splashscreen/src/wp/SplashScreen.cs index da519d5..4d3545b 100644 --- a/cordova/plugins/org.apache.cordova.splashscreen/src/wp/SplashScreen.cs +++ b/cordova/plugins/org.apache.cordova.splashscreen/src/wp/SplashScreen.cs @@ -95,13 +95,13 @@ void LoadConfigValues() public void show(string options = null) { - if (popup.IsOpen) - { - return; - } - Deployment.Current.Dispatcher.BeginInvoke(() => { + if (popup.IsOpen) + { + return; + } + popup.Child.Opacity = 0; Storyboard story = new Storyboard(); @@ -137,13 +137,13 @@ public void show(string options = null) public void hide(string options = null) { - if (!popup.IsOpen) - { - return; - } - Deployment.Current.Dispatcher.BeginInvoke(() => { + if (!popup.IsOpen) + { + return; + } + popup.Child.Opacity = 1.0; Storyboard story = new Storyboard(); diff --git a/cordova/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest.xcworkspace/contents.xcworkspacedata b/cordova/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..2dd325a --- /dev/null +++ b/cordova/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/cordova/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest.xcworkspace/xcshareddata/CDVSplashScreenTest.xccheckout b/cordova/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest.xcworkspace/xcshareddata/CDVSplashScreenTest.xccheckout new file mode 100644 index 0000000..7e4cdb9 --- /dev/null +++ b/cordova/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest.xcworkspace/xcshareddata/CDVSplashScreenTest.xccheckout @@ -0,0 +1,41 @@ + + + + + IDESourceControlProjectFavoriteDictionaryKey + + IDESourceControlProjectIdentifier + 6BE9AD73-1B9F-4362-98D7-DC631BEC6185 + IDESourceControlProjectName + CDVSplashScreenTest + IDESourceControlProjectOriginsDictionary + + BEF5A5D0FF64801E558286389440357A9233D7DB + https://git-wip-us.apache.org/repos/asf/cordova-plugin-splashscreen.git + + IDESourceControlProjectPath + tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj + IDESourceControlProjectRelativeInstallPathDictionary + + BEF5A5D0FF64801E558286389440357A9233D7DB + ../../../../.. + + IDESourceControlProjectURL + https://git-wip-us.apache.org/repos/asf/cordova-plugin-splashscreen.git + IDESourceControlProjectVersion + 111 + IDESourceControlProjectWCCIdentifier + BEF5A5D0FF64801E558286389440357A9233D7DB + IDESourceControlProjectWCConfigurations + + + IDESourceControlRepositoryExtensionIdentifierKey + public.vcs.git + IDESourceControlWCCIdentifierKey + BEF5A5D0FF64801E558286389440357A9233D7DB + IDESourceControlWCCName + cordova-plugin-splashscreen + + + + diff --git a/cordova/platforms/ios/CordovaLib/CordovaLib.xcodeproj/xcuserdata/benjennings.xcuserdatad/xcschemes/CordovaLib.xcscheme b/cordova/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest.xcworkspace/xcshareddata/xcschemes/CordovaLib.xcscheme similarity index 67% rename from cordova/platforms/ios/CordovaLib/CordovaLib.xcodeproj/xcuserdata/benjennings.xcuserdatad/xcschemes/CordovaLib.xcscheme rename to cordova/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest.xcworkspace/xcshareddata/xcschemes/CordovaLib.xcscheme index 28478fb..13f9a15 100644 --- a/cordova/platforms/ios/CordovaLib/CordovaLib.xcodeproj/xcuserdata/benjennings.xcuserdatad/xcschemes/CordovaLib.xcscheme +++ b/cordova/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest.xcworkspace/xcshareddata/xcschemes/CordovaLib.xcscheme @@ -1,6 +1,6 @@ + ReferencedContainer = "container:node_modules/cordova-ios/CordovaLib/CordovaLib.xcodeproj"> @@ -39,6 +39,15 @@ ignoresPersistentStateOnLaunch = "NO" debugDocumentVersioning = "YES" allowLocationSimulation = "YES"> + + + + @@ -48,6 +57,15 @@ useCustomWorkingDirectory = "NO" buildConfiguration = "Release" debugDocumentVersioning = "YES"> + + + + diff --git a/cordova/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenLibTests/ImageNameTest.m b/cordova/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenLibTests/ImageNameTest.m new file mode 100644 index 0000000..1637d24 --- /dev/null +++ b/cordova/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenLibTests/ImageNameTest.m @@ -0,0 +1,702 @@ +/* + 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 +#import +#import +#import "CDVSplashScreen.h" +#import "ImageNameTestDelegates.h" + +const CDV_iOSDevice CDV_iOSDeviceZero = { 0, 0, 0, 0, 0, 0 }; + +@interface ImageNameTest : XCTestCase + +@property (nonatomic, strong) CDVSplashScreen* plugin; + +@end + +@interface CDVSplashScreen () + +// expose private interface +- (NSString*)getImageName:(UIInterfaceOrientation)currentOrientation delegate:(id)orientationDelegate device:(CDV_iOSDevice)device; + +@end + +@implementation ImageNameTest + +- (void)setUp { + [super setUp]; + // Put setup code here. This method is called before the invocation of each test method in the class. + + self.plugin = [[CDVSplashScreen alloc] init]; +} + +- (void)tearDown { + // Put teardown code here. This method is called after the invocation of each test method in the class. + [super tearDown]; +} + +- (void) orientationHelper:(id)delegate expectedImageNameDictionary:(NSDictionary*)expectedImageNameDictionary device:(CDV_iOSDevice)device{ + + NSString* name = nil; + NSString* expectedImageName = nil; + UIInterfaceOrientation currentOrientation; + NSString* deviceName = device.iPad? @"iPad" : device.iPhone6Plus? @"iPhone6Plus": device.iPhone6? @"iPhone6": device.iPhone5? @"iPhone5" : @"iPhone"; + + // LandscapeLeft, should always return expectedImageName + currentOrientation = UIInterfaceOrientationLandscapeLeft; + name = [self.plugin getImageName:currentOrientation delegate:delegate device:device]; + expectedImageName = [expectedImageNameDictionary objectForKey:@"landscapeLeft"]; + XCTAssertTrue([expectedImageName isEqualToString:name], @"%@ - %@ failed (%@)", @"Landscape", deviceName, name); + + // LandscapeRight - should always return expectedImageName + currentOrientation = UIInterfaceOrientationLandscapeRight; + name = [self.plugin getImageName:currentOrientation delegate:delegate device:device]; + expectedImageName = [expectedImageNameDictionary objectForKey:@"landscapeRight"]; + XCTAssertTrue([expectedImageName isEqualToString:name], @"%@ - %@ failed (%@)", @"Landscape", deviceName, name); + + // Portrait - should always return expectedImageName + currentOrientation = UIInterfaceOrientationPortrait; + name = [self.plugin getImageName:currentOrientation delegate:delegate device:device]; + expectedImageName = [expectedImageNameDictionary objectForKey:@"portrait"]; + XCTAssertTrue([expectedImageName isEqualToString:name], @"%@ - %@ failed (%@)", @"Portrait", deviceName, name); + + // PortraitUpsideDown - should always return expectedImageName + currentOrientation = UIInterfaceOrientationPortraitUpsideDown; + name = [self.plugin getImageName:currentOrientation delegate:delegate device:device]; + expectedImageName = [expectedImageNameDictionary objectForKey:@"portraitUpsideDown"]; + XCTAssertTrue([expectedImageName isEqualToString:name], @"%@ - %@ failed (%@)", @"Portrait", deviceName, name); +} + +- (void)testiPadOrientation { + + CDV_iOSDevice device = CDV_iOSDeviceZero; + device.iPad = YES; + + // One orientation + + PortraitOnly* delegate = [[PortraitOnly alloc] init]; + [self orientationHelper:delegate expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-Portrait", + @"landscapeRight" : @"Default-Portrait", + @"portrait" : @"Default-Portrait", + @"portraitUpsideDown" : @"Default-Portrait" + } + device:device]; + + PortraitUpsideDownOnly* delegate2 = [[PortraitUpsideDownOnly alloc] init]; + [self orientationHelper:delegate2 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-Portrait", + @"landscapeRight" : @"Default-Portrait", + @"portrait" : @"Default-Portrait", + @"portraitUpsideDown" : @"Default-Portrait" + } + device:device]; + + LandscapeLeftOnly* delegate3 = [[LandscapeLeftOnly alloc] init]; + [self orientationHelper:delegate3 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-Landscape", + @"landscapeRight" : @"Default-Landscape", + @"portrait" : @"Default-Landscape", + @"portraitUpsideDown" : @"Default-Landscape" + } + device:device]; + + LandscapeRightOnly* delegate4 = [[LandscapeRightOnly alloc] init]; + [self orientationHelper:delegate4 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-Landscape", + @"landscapeRight" : @"Default-Landscape", + @"portrait" : @"Default-Landscape", + @"portraitUpsideDown" : @"Default-Landscape" + } + device:device]; + + // All Portrait + + AllPortraitOnly* delegate5 = [[AllPortraitOnly alloc] init]; + [self orientationHelper:delegate5 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-Portrait", + @"landscapeRight" : @"Default-Portrait", + @"portrait" : @"Default-Portrait", + @"portraitUpsideDown" : @"Default-Portrait" + } + device:device]; + + // All Landscape + + AllLandscapeOnly* delegate6 = [[AllLandscapeOnly alloc] init]; + [self orientationHelper:delegate6 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-Landscape", + @"landscapeRight" : @"Default-Landscape", + @"portrait" : @"Default-Landscape", + @"portraitUpsideDown" : @"Default-Landscape" + } + device:device]; + + + // All orientations + + AllOrientations* delegate7 = [[AllOrientations alloc] init]; + [self orientationHelper:delegate7 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-Landscape", + @"landscapeRight" : @"Default-Landscape", + @"portrait" : @"Default-Portrait", + @"portraitUpsideDown" : @"Default-Portrait" + } + device:device]; + + // Portrait and Landscape Left + + PortraitAndLandscapeLeftOnly* delegate8 = [[PortraitAndLandscapeLeftOnly alloc] init]; + [self orientationHelper:delegate8 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-Landscape", + @"landscapeRight" : @"Default-Landscape", + @"portrait" : @"Default-Portrait", + @"portraitUpsideDown" : @"Default-Portrait" + } + device:device]; + + // Portrait and Landscape Right + + PortraitAndLandscapeRightOnly* delegate9 = [[PortraitAndLandscapeRightOnly alloc] init]; + [self orientationHelper:delegate9 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-Landscape", + @"landscapeRight" : @"Default-Landscape", + @"portrait" : @"Default-Portrait", + @"portraitUpsideDown" : @"Default-Portrait" + } + device:device]; + + // PortraitUpsideDown and Landscape Left + + PortraitUpsideDownAndLandscapeLeftOnly* delegate10 = [[PortraitUpsideDownAndLandscapeLeftOnly alloc] init]; + [self orientationHelper:delegate10 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-Landscape", + @"landscapeRight" : @"Default-Landscape", + @"portrait" : @"Default-Portrait", + @"portraitUpsideDown" : @"Default-Portrait" + } + device:device]; + + // PortraitUpsideDown and Landscape Right + + PortraitUpsideDownAndLandscapeRightOnly* delegate11 = [[PortraitUpsideDownAndLandscapeRightOnly alloc] init]; + [self orientationHelper:delegate11 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-Landscape", + @"landscapeRight" : @"Default-Landscape", + @"portrait" : @"Default-Portrait", + @"portraitUpsideDown" : @"Default-Portrait" + } + device:device]; +} + +- (void)testiPhoneOrientation { + + CDV_iOSDevice device = CDV_iOSDeviceZero; + device.iPhone = YES; + + // One orientation + + PortraitOnly* delegate = [[PortraitOnly alloc] init]; + [self orientationHelper:delegate expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default", + @"landscapeRight" : @"Default", + @"portrait" : @"Default", + @"portraitUpsideDown" : @"Default" + } + device:device]; + + PortraitUpsideDownOnly* delegate2 = [[PortraitUpsideDownOnly alloc] init]; + [self orientationHelper:delegate2 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default", + @"landscapeRight" : @"Default", + @"portrait" : @"Default", + @"portraitUpsideDown" : @"Default" + } + device:device]; + + LandscapeLeftOnly* delegate3 = [[LandscapeLeftOnly alloc] init]; + [self orientationHelper:delegate3 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default", + @"landscapeRight" : @"Default", + @"portrait" : @"Default", + @"portraitUpsideDown" : @"Default" + } + device:device]; + + LandscapeRightOnly* delegate4 = [[LandscapeRightOnly alloc] init]; + [self orientationHelper:delegate4 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default", + @"landscapeRight" : @"Default", + @"portrait" : @"Default", + @"portraitUpsideDown" : @"Default" + } + device:device]; + + // All Portrait + + AllPortraitOnly* delegate5 = [[AllPortraitOnly alloc] init]; + [self orientationHelper:delegate5 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default", + @"landscapeRight" : @"Default", + @"portrait" : @"Default", + @"portraitUpsideDown" : @"Default" + } + device:device]; + + // All Landscape + + AllLandscapeOnly* delegate6 = [[AllLandscapeOnly alloc] init]; + [self orientationHelper:delegate6 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default", + @"landscapeRight" : @"Default", + @"portrait" : @"Default", + @"portraitUpsideDown" : @"Default" + } + device:device]; + + + // All orientations + + AllOrientations* delegate7 = [[AllOrientations alloc] init]; + [self orientationHelper:delegate7 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default", + @"landscapeRight" : @"Default", + @"portrait" : @"Default", + @"portraitUpsideDown" : @"Default" + } + device:device]; + + // Portrait and Landscape Left + + PortraitAndLandscapeLeftOnly* delegate8 = [[PortraitAndLandscapeLeftOnly alloc] init]; + [self orientationHelper:delegate8 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default", + @"landscapeRight" : @"Default", + @"portrait" : @"Default", + @"portraitUpsideDown" : @"Default" + } + device:device]; + + // Portrait and Landscape Right + + PortraitAndLandscapeRightOnly* delegate9 = [[PortraitAndLandscapeRightOnly alloc] init]; + [self orientationHelper:delegate9 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default", + @"landscapeRight" : @"Default", + @"portrait" : @"Default", + @"portraitUpsideDown" : @"Default" + } + device:device]; + + // PortraitUpsideDown and Landscape Left + + PortraitUpsideDownAndLandscapeLeftOnly* delegate10 = [[PortraitUpsideDownAndLandscapeLeftOnly alloc] init]; + [self orientationHelper:delegate10 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default", + @"landscapeRight" : @"Default", + @"portrait" : @"Default", + @"portraitUpsideDown" : @"Default" + } + device:device]; + + // PortraitUpsideDown and Landscape Right + + PortraitUpsideDownAndLandscapeRightOnly* delegate11 = [[PortraitUpsideDownAndLandscapeRightOnly alloc] init]; + [self orientationHelper:delegate11 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default", + @"landscapeRight" : @"Default", + @"portrait" : @"Default", + @"portraitUpsideDown" : @"Default" + } + device:device]; +} + +- (void)testiPhone5Orientation { + + CDV_iOSDevice device = CDV_iOSDeviceZero; + device.iPhone = YES; + device.iPhone5 = YES; + + // One orientation + + PortraitOnly* delegate = [[PortraitOnly alloc] init]; + [self orientationHelper:delegate expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-568h", + @"landscapeRight" : @"Default-568h", + @"portrait" : @"Default-568h", + @"portraitUpsideDown" : @"Default-568h" + } + device:device]; + + PortraitUpsideDownOnly* delegate2 = [[PortraitUpsideDownOnly alloc] init]; + [self orientationHelper:delegate2 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-568h", + @"landscapeRight" : @"Default-568h", + @"portrait" : @"Default-568h", + @"portraitUpsideDown" : @"Default-568h" + } + device:device]; + + LandscapeLeftOnly* delegate3 = [[LandscapeLeftOnly alloc] init]; + [self orientationHelper:delegate3 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-568h", + @"landscapeRight" : @"Default-568h", + @"portrait" : @"Default-568h", + @"portraitUpsideDown" : @"Default-568h" + } + device:device]; + + LandscapeRightOnly* delegate4 = [[LandscapeRightOnly alloc] init]; + [self orientationHelper:delegate4 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-568h", + @"landscapeRight" : @"Default-568h", + @"portrait" : @"Default-568h", + @"portraitUpsideDown" : @"Default-568h" + } + device:device]; + + // All Portrait + + AllPortraitOnly* delegate5 = [[AllPortraitOnly alloc] init]; + [self orientationHelper:delegate5 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-568h", + @"landscapeRight" : @"Default-568h", + @"portrait" : @"Default-568h", + @"portraitUpsideDown" : @"Default-568h" + } + device:device]; + + // All Landscape + + AllLandscapeOnly* delegate6 = [[AllLandscapeOnly alloc] init]; + [self orientationHelper:delegate6 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-568h", + @"landscapeRight" : @"Default-568h", + @"portrait" : @"Default-568h", + @"portraitUpsideDown" : @"Default-568h" + } + device:device]; + + + // All orientations + + AllOrientations* delegate7 = [[AllOrientations alloc] init]; + [self orientationHelper:delegate7 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-568h", + @"landscapeRight" : @"Default-568h", + @"portrait" : @"Default-568h", + @"portraitUpsideDown" : @"Default-568h" + } + device:device]; + + // Portrait and Landscape Left + + PortraitAndLandscapeLeftOnly* delegate8 = [[PortraitAndLandscapeLeftOnly alloc] init]; + [self orientationHelper:delegate8 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-568h", + @"landscapeRight" : @"Default-568h", + @"portrait" : @"Default-568h", + @"portraitUpsideDown" : @"Default-568h" + } + device:device]; + + // Portrait and Landscape Right + + PortraitAndLandscapeRightOnly* delegate9 = [[PortraitAndLandscapeRightOnly alloc] init]; + [self orientationHelper:delegate9 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-568h", + @"landscapeRight" : @"Default-568h", + @"portrait" : @"Default-568h", + @"portraitUpsideDown" : @"Default-568h" + } + device:device]; + + // PortraitUpsideDown and Landscape Left + + PortraitUpsideDownAndLandscapeLeftOnly* delegate10 = [[PortraitUpsideDownAndLandscapeLeftOnly alloc] init]; + [self orientationHelper:delegate10 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-568h", + @"landscapeRight" : @"Default-568h", + @"portrait" : @"Default-568h", + @"portraitUpsideDown" : @"Default-568h" + } + device:device]; + + // PortraitUpsideDown and Landscape Right + + PortraitUpsideDownAndLandscapeRightOnly* delegate11 = [[PortraitUpsideDownAndLandscapeRightOnly alloc] init]; + [self orientationHelper:delegate11 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-568h", + @"landscapeRight" : @"Default-568h", + @"portrait" : @"Default-568h", + @"portraitUpsideDown" : @"Default-568h" + } + device:device]; +} + +- (void)testiPhone6Orientation { + + CDV_iOSDevice device = CDV_iOSDeviceZero; + device.iPhone = YES; + device.iPhone6 = YES; + + // One orientation + + PortraitOnly* delegate = [[PortraitOnly alloc] init]; + [self orientationHelper:delegate expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-667h", + @"landscapeRight" : @"Default-667h", + @"portrait" : @"Default-667h", + @"portraitUpsideDown" : @"Default-667h" + } + device:device]; + + PortraitUpsideDownOnly* delegate2 = [[PortraitUpsideDownOnly alloc] init]; + [self orientationHelper:delegate2 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-667h", + @"landscapeRight" : @"Default-667h", + @"portrait" : @"Default-667h", + @"portraitUpsideDown" : @"Default-667h" + } + device:device]; + + LandscapeLeftOnly* delegate3 = [[LandscapeLeftOnly alloc] init]; + [self orientationHelper:delegate3 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-667h", + @"landscapeRight" : @"Default-667h", + @"portrait" : @"Default-667h", + @"portraitUpsideDown" : @"Default-667h" + } + device:device]; + + LandscapeRightOnly* delegate4 = [[LandscapeRightOnly alloc] init]; + [self orientationHelper:delegate4 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-667h", + @"landscapeRight" : @"Default-667h", + @"portrait" : @"Default-667h", + @"portraitUpsideDown" : @"Default-667h" + } + device:device]; + + // All Portrait + + AllPortraitOnly* delegate5 = [[AllPortraitOnly alloc] init]; + [self orientationHelper:delegate5 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-667h", + @"landscapeRight" : @"Default-667h", + @"portrait" : @"Default-667h", + @"portraitUpsideDown" : @"Default-667h" + } + device:device]; + + // All Landscape + + AllLandscapeOnly* delegate6 = [[AllLandscapeOnly alloc] init]; + [self orientationHelper:delegate6 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-667h", + @"landscapeRight" : @"Default-667h", + @"portrait" : @"Default-667h", + @"portraitUpsideDown" : @"Default-667h" + } + device:device]; + + + // All orientations + + AllOrientations* delegate7 = [[AllOrientations alloc] init]; + [self orientationHelper:delegate7 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-667h", + @"landscapeRight" : @"Default-667h", + @"portrait" : @"Default-667h", + @"portraitUpsideDown" : @"Default-667h" + } + device:device]; + + // Portrait and Landscape Left + + PortraitAndLandscapeLeftOnly* delegate8 = [[PortraitAndLandscapeLeftOnly alloc] init]; + [self orientationHelper:delegate8 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-667h", + @"landscapeRight" : @"Default-667h", + @"portrait" : @"Default-667h", + @"portraitUpsideDown" : @"Default-667h" + } + device:device]; + + // Portrait and Landscape Right + + PortraitAndLandscapeRightOnly* delegate9 = [[PortraitAndLandscapeRightOnly alloc] init]; + [self orientationHelper:delegate9 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-667h", + @"landscapeRight" : @"Default-667h", + @"portrait" : @"Default-667h", + @"portraitUpsideDown" : @"Default-667h" + } + device:device]; + + // PortraitUpsideDown and Landscape Left + + PortraitUpsideDownAndLandscapeLeftOnly* delegate10 = [[PortraitUpsideDownAndLandscapeLeftOnly alloc] init]; + [self orientationHelper:delegate10 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-667h", + @"landscapeRight" : @"Default-667h", + @"portrait" : @"Default-667h", + @"portraitUpsideDown" : @"Default-667h" + } + device:device]; + + // PortraitUpsideDown and Landscape Right + + PortraitUpsideDownAndLandscapeRightOnly* delegate11 = [[PortraitUpsideDownAndLandscapeRightOnly alloc] init]; + [self orientationHelper:delegate11 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-667h", + @"landscapeRight" : @"Default-667h", + @"portrait" : @"Default-667h", + @"portraitUpsideDown" : @"Default-667h" + } + device:device]; +} + +- (void)testiPhone6PlusOrientation { + + CDV_iOSDevice device = CDV_iOSDeviceZero; + device.iPhone = YES; + device.iPhone6Plus = YES; + + // One orientation + + PortraitOnly* delegate = [[PortraitOnly alloc] init]; + [self orientationHelper:delegate expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-736h", + @"landscapeRight" : @"Default-736h", + @"portrait" : @"Default-736h", + @"portraitUpsideDown" : @"Default-736h" + } + device:device]; + + PortraitUpsideDownOnly* delegate2 = [[PortraitUpsideDownOnly alloc] init]; + [self orientationHelper:delegate2 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-736h", + @"landscapeRight" : @"Default-736h", + @"portrait" : @"Default-736h", + @"portraitUpsideDown" : @"Default-736h" + } + device:device]; + + LandscapeLeftOnly* delegate3 = [[LandscapeLeftOnly alloc] init]; + [self orientationHelper:delegate3 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-Landscape-736h", + @"landscapeRight" : @"Default-Landscape-736h", + @"portrait" : @"Default-Landscape-736h", + @"portraitUpsideDown" : @"Default-Landscape-736h" + } + device:device]; + + LandscapeRightOnly* delegate4 = [[LandscapeRightOnly alloc] init]; + [self orientationHelper:delegate4 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-Landscape-736h", + @"landscapeRight" : @"Default-Landscape-736h", + @"portrait" : @"Default-Landscape-736h", + @"portraitUpsideDown" : @"Default-Landscape-736h" + } + device:device]; + + // All Portrait + + AllPortraitOnly* delegate5 = [[AllPortraitOnly alloc] init]; + [self orientationHelper:delegate5 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-736h", + @"landscapeRight" : @"Default-736h", + @"portrait" : @"Default-736h", + @"portraitUpsideDown" : @"Default-736h" + } + device:device]; + + // All Landscape + + AllLandscapeOnly* delegate6 = [[AllLandscapeOnly alloc] init]; + [self orientationHelper:delegate6 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-Landscape-736h", + @"landscapeRight" : @"Default-Landscape-736h", + @"portrait" : @"Default-Landscape-736h", + @"portraitUpsideDown" : @"Default-Landscape-736h" + } + device:device]; + + + // All orientations + + AllOrientations* delegate7 = [[AllOrientations alloc] init]; + [self orientationHelper:delegate7 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-Landscape-736h", + @"landscapeRight" : @"Default-Landscape-736h", + @"portrait" : @"Default-736h", + @"portraitUpsideDown" : @"Default-736h" + } + device:device]; + + // Portrait and Landscape Left + + PortraitAndLandscapeLeftOnly* delegate8 = [[PortraitAndLandscapeLeftOnly alloc] init]; + [self orientationHelper:delegate8 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-Landscape-736h", + @"landscapeRight" : @"Default-Landscape-736h", + @"portrait" : @"Default-736h", + @"portraitUpsideDown" : @"Default-736h" + } + device:device]; + + // Portrait and Landscape Right + + PortraitAndLandscapeRightOnly* delegate9 = [[PortraitAndLandscapeRightOnly alloc] init]; + [self orientationHelper:delegate9 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-Landscape-736h", + @"landscapeRight" : @"Default-Landscape-736h", + @"portrait" : @"Default-736h", + @"portraitUpsideDown" : @"Default-736h" + } + device:device]; + + // PortraitUpsideDown and Landscape Left + + PortraitUpsideDownAndLandscapeLeftOnly* delegate10 = [[PortraitUpsideDownAndLandscapeLeftOnly alloc] init]; + [self orientationHelper:delegate10 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-Landscape-736h", + @"landscapeRight" : @"Default-Landscape-736h", + @"portrait" : @"Default-736h", + @"portraitUpsideDown" : @"Default-736h" + } + device:device]; + + // PortraitUpsideDown and Landscape Right + + PortraitUpsideDownAndLandscapeRightOnly* delegate11 = [[PortraitUpsideDownAndLandscapeRightOnly alloc] init]; + [self orientationHelper:delegate11 expectedImageNameDictionary:@{ + @"landscapeLeft" : @"Default-Landscape-736h", + @"landscapeRight" : @"Default-Landscape-736h", + @"portrait" : @"Default-736h", + @"portraitUpsideDown" : @"Default-736h" + } + device:device]; +} + + + +@end diff --git a/cordova/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenLibTests/ImageNameTestDelegates.h b/cordova/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenLibTests/ImageNameTestDelegates.h new file mode 100644 index 0000000..be4a788 --- /dev/null +++ b/cordova/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenLibTests/ImageNameTestDelegates.h @@ -0,0 +1,57 @@ +/* + 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 +#import + +@interface PortraitOnly : NSObject +@end + +@interface PortraitUpsideDownOnly : NSObject +@end + +@interface AllPortraitOnly : NSObject +@end + + +@interface LandscapeLeftOnly : NSObject +@end + +@interface LandscapeRightOnly : NSObject +@end + +@interface AllLandscapeOnly : NSObject +@end + + +@interface AllOrientations : NSObject +@end + +@interface PortraitAndLandscapeLeftOnly : NSObject +@end + +@interface PortraitAndLandscapeRightOnly : NSObject +@end + +@interface PortraitUpsideDownAndLandscapeLeftOnly : NSObject +@end + +@interface PortraitUpsideDownAndLandscapeRightOnly : NSObject +@end + diff --git a/cordova/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenLibTests/ImageNameTestDelegates.m b/cordova/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenLibTests/ImageNameTestDelegates.m new file mode 100644 index 0000000..b5a1b23 --- /dev/null +++ b/cordova/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenLibTests/ImageNameTestDelegates.m @@ -0,0 +1,200 @@ +/* + 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 +#import "ImageNameTestDelegates.h" + +@implementation PortraitOnly + +- (NSUInteger)supportedInterfaceOrientations { + return UIInterfaceOrientationMaskPortrait; +} + +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { + return [self supportedInterfaceOrientations] & (1 << interfaceOrientation) ; +} + +- (BOOL)shouldAutorotate { + return YES; +} + +@end + +@implementation PortraitUpsideDownOnly + +- (NSUInteger)supportedInterfaceOrientations { + return UIInterfaceOrientationMaskPortraitUpsideDown; +} + +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { + return [self supportedInterfaceOrientations] & (1 << interfaceOrientation) ; +} + +- (BOOL)shouldAutorotate { + return YES; +} + +@end + +@implementation AllPortraitOnly + +- (NSUInteger)supportedInterfaceOrientations { + return UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskPortraitUpsideDown; +} + +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { + return [self supportedInterfaceOrientations] & (1 << interfaceOrientation) ; +} + +- (BOOL)shouldAutorotate { + return YES; +} + +@end + + +@implementation LandscapeLeftOnly + +- (NSUInteger)supportedInterfaceOrientations { + return UIInterfaceOrientationMaskLandscapeLeft; +} + +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { + return [self supportedInterfaceOrientations] & (1 << interfaceOrientation) ; +} + +- (BOOL)shouldAutorotate { + return YES; +} + +@end + +@implementation LandscapeRightOnly + +- (NSUInteger)supportedInterfaceOrientations { + return UIInterfaceOrientationMaskLandscapeRight; +} + +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { + return [self supportedInterfaceOrientations] & (1 << interfaceOrientation) ; +} + +- (BOOL)shouldAutorotate { + return YES; +} + +@end + +@implementation AllLandscapeOnly + +- (NSUInteger)supportedInterfaceOrientations { + return UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight; +} + +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { + return [self supportedInterfaceOrientations] & (1 << interfaceOrientation) ; +} + +- (BOOL)shouldAutorotate { + return YES; +} + +@end + + +@implementation AllOrientations + +- (NSUInteger)supportedInterfaceOrientations { + return UIInterfaceOrientationMaskAll; +} + +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { + return [self supportedInterfaceOrientations] & (1 << interfaceOrientation) ; +} + +- (BOOL)shouldAutorotate { + return YES; +} + +@end + +@implementation PortraitAndLandscapeLeftOnly + +- (NSUInteger)supportedInterfaceOrientations { + return UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskLandscapeLeft; +} + +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { + return [self supportedInterfaceOrientations] & (1 << interfaceOrientation) ; +} + +- (BOOL)shouldAutorotate { + return YES; +} + +@end + +@implementation PortraitAndLandscapeRightOnly + +- (NSUInteger)supportedInterfaceOrientations { + return UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskLandscapeRight; +} + +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { + return [self supportedInterfaceOrientations] & (1 << interfaceOrientation) ; +} + +- (BOOL)shouldAutorotate { + return YES; +} + +@end + +@implementation PortraitUpsideDownAndLandscapeLeftOnly + +- (NSUInteger)supportedInterfaceOrientations { + return UIInterfaceOrientationMaskPortraitUpsideDown | UIInterfaceOrientationMaskLandscapeLeft; +} + +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { + return [self supportedInterfaceOrientations] & (1 << interfaceOrientation) ; +} + +- (BOOL)shouldAutorotate { + return YES; +} + +@end + +@implementation PortraitUpsideDownAndLandscapeRightOnly + +- (NSUInteger)supportedInterfaceOrientations { + return UIInterfaceOrientationMaskPortraitUpsideDown | UIInterfaceOrientationMaskLandscapeRight; +} + +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { + return [self supportedInterfaceOrientations] & (1 << interfaceOrientation) ; +} + +- (BOOL)shouldAutorotate { + return YES; +} + +@end + diff --git a/cordova/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenLibTests/Info.plist b/cordova/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenLibTests/Info.plist new file mode 100644 index 0000000..a949946 --- /dev/null +++ b/cordova/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenLibTests/Info.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + org.apache.cordova.$(PRODUCT_NAME:rfc1034identifier) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + + diff --git a/cordova/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/project.pbxproj b/cordova/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/project.pbxproj new file mode 100644 index 0000000..ce820d8 --- /dev/null +++ b/cordova/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/project.pbxproj @@ -0,0 +1,505 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 7E9F51AB19DA10AE00DA31AC /* CDVSplashScreen.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E9F51A919DA10AE00DA31AC /* CDVSplashScreen.m */; }; + 7E9F51B119DA114400DA31AC /* ImageNameTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E9F51B019DA114400DA31AC /* ImageNameTest.m */; }; + 7E9F51B319DA116500DA31AC /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7E9F51B219DA116500DA31AC /* Foundation.framework */; }; + 7E9F51B519DA127E00DA31AC /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7E9F51B419DA127E00DA31AC /* UIKit.framework */; }; + 7E9F51B819DA14FD00DA31AC /* ImageNameTestDelegates.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E9F51B719DA14FD00DA31AC /* ImageNameTestDelegates.m */; }; + 7E9F51B919DA1B1600DA31AC /* libCDVSplashScreenLib.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7E9F519519DA102000DA31AC /* libCDVSplashScreenLib.a */; }; + 7E9F51BA19DA1B2000DA31AC /* libCordova.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7E9F519019DA0F8300DA31AC /* libCordova.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 7E9F518F19DA0F8300DA31AC /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 7E9F518B19DA0F8300DA31AC /* CordovaLib.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 68A32D7114102E1C006B237C; + remoteInfo = CordovaLib; + }; + 7E9F51AC19DA10DE00DA31AC /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 7E9F517219DA09CE00DA31AC /* Project object */; + proxyType = 1; + remoteGlobalIDString = 7E9F519419DA102000DA31AC; + remoteInfo = CDVSplashScreenLib; + }; + 7E9F51AE19DA10E100DA31AC /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 7E9F518B19DA0F8300DA31AC /* CordovaLib.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = D2AAC07D0554694100DB518D; + remoteInfo = CordovaLib; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 7E9F519319DA102000DA31AC /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "include/$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 7E9F518B19DA0F8300DA31AC /* CordovaLib.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = CordovaLib.xcodeproj; path = "../node_modules/cordova-ios/CordovaLib/CordovaLib.xcodeproj"; sourceTree = ""; }; + 7E9F519519DA102000DA31AC /* libCDVSplashScreenLib.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libCDVSplashScreenLib.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 7E9F519F19DA102000DA31AC /* CDVSplashScreenLibTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = CDVSplashScreenLibTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 7E9F51A219DA102000DA31AC /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 7E9F51A919DA10AE00DA31AC /* CDVSplashScreen.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CDVSplashScreen.m; path = ../../../src/ios/CDVSplashScreen.m; sourceTree = SOURCE_ROOT; }; + 7E9F51AA19DA10AE00DA31AC /* CDVSplashScreen.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CDVSplashScreen.h; path = ../../../src/ios/CDVSplashScreen.h; sourceTree = SOURCE_ROOT; }; + 7E9F51B019DA114400DA31AC /* ImageNameTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ImageNameTest.m; sourceTree = ""; }; + 7E9F51B219DA116500DA31AC /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + 7E9F51B419DA127E00DA31AC /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.0.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; + 7E9F51B619DA12C600DA31AC /* ImageNameTestDelegates.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ImageNameTestDelegates.h; sourceTree = ""; }; + 7E9F51B719DA14FD00DA31AC /* ImageNameTestDelegates.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ImageNameTestDelegates.m; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 7E9F519219DA102000DA31AC /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 7E9F519C19DA102000DA31AC /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 7E9F51BA19DA1B2000DA31AC /* libCordova.a in Frameworks */, + 7E9F51B919DA1B1600DA31AC /* libCDVSplashScreenLib.a in Frameworks */, + 7E9F51B519DA127E00DA31AC /* UIKit.framework in Frameworks */, + 7E9F51B319DA116500DA31AC /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 7E9F517119DA09CE00DA31AC = { + isa = PBXGroup; + children = ( + 7E9F51B419DA127E00DA31AC /* UIKit.framework */, + 7E9F51B219DA116500DA31AC /* Foundation.framework */, + 7E9F518B19DA0F8300DA31AC /* CordovaLib.xcodeproj */, + 7E9F519619DA102000DA31AC /* CDVSplashScreenLib */, + 7E9F51A019DA102000DA31AC /* CDVSplashScreenLibTests */, + 7E9F517D19DA0A0A00DA31AC /* Products */, + ); + sourceTree = ""; + }; + 7E9F517D19DA0A0A00DA31AC /* Products */ = { + isa = PBXGroup; + children = ( + 7E9F519519DA102000DA31AC /* libCDVSplashScreenLib.a */, + 7E9F519F19DA102000DA31AC /* CDVSplashScreenLibTests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 7E9F518C19DA0F8300DA31AC /* Products */ = { + isa = PBXGroup; + children = ( + 7E9F519019DA0F8300DA31AC /* libCordova.a */, + ); + name = Products; + sourceTree = ""; + }; + 7E9F519619DA102000DA31AC /* CDVSplashScreenLib */ = { + isa = PBXGroup; + children = ( + 7E9F51A919DA10AE00DA31AC /* CDVSplashScreen.m */, + 7E9F51AA19DA10AE00DA31AC /* CDVSplashScreen.h */, + ); + path = CDVSplashScreenLib; + sourceTree = SOURCE_ROOT; + }; + 7E9F51A019DA102000DA31AC /* CDVSplashScreenLibTests */ = { + isa = PBXGroup; + children = ( + 7E9F51A119DA102000DA31AC /* Supporting Files */, + 7E9F51B019DA114400DA31AC /* ImageNameTest.m */, + 7E9F51B619DA12C600DA31AC /* ImageNameTestDelegates.h */, + 7E9F51B719DA14FD00DA31AC /* ImageNameTestDelegates.m */, + ); + path = CDVSplashScreenLibTests; + sourceTree = ""; + }; + 7E9F51A119DA102000DA31AC /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 7E9F51A219DA102000DA31AC /* Info.plist */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 7E9F519419DA102000DA31AC /* CDVSplashScreenLib */ = { + isa = PBXNativeTarget; + buildConfigurationList = 7E9F51A319DA102000DA31AC /* Build configuration list for PBXNativeTarget "CDVSplashScreenLib" */; + buildPhases = ( + 7E9F519119DA102000DA31AC /* Sources */, + 7E9F519219DA102000DA31AC /* Frameworks */, + 7E9F519319DA102000DA31AC /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = CDVSplashScreenLib; + productName = CDVSplashScreenLib; + productReference = 7E9F519519DA102000DA31AC /* libCDVSplashScreenLib.a */; + productType = "com.apple.product-type.library.static"; + }; + 7E9F519E19DA102000DA31AC /* CDVSplashScreenLibTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 7E9F51A619DA102000DA31AC /* Build configuration list for PBXNativeTarget "CDVSplashScreenLibTests" */; + buildPhases = ( + 7E9F519B19DA102000DA31AC /* Sources */, + 7E9F519C19DA102000DA31AC /* Frameworks */, + 7E9F519D19DA102000DA31AC /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 7E9F51AF19DA10E100DA31AC /* PBXTargetDependency */, + 7E9F51AD19DA10DE00DA31AC /* PBXTargetDependency */, + ); + name = CDVSplashScreenLibTests; + productName = CDVSplashScreenLibTests; + productReference = 7E9F519F19DA102000DA31AC /* CDVSplashScreenLibTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 7E9F517219DA09CE00DA31AC /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0600; + TargetAttributes = { + 7E9F519419DA102000DA31AC = { + CreatedOnToolsVersion = 6.0; + }; + 7E9F519E19DA102000DA31AC = { + CreatedOnToolsVersion = 6.0; + }; + }; + }; + buildConfigurationList = 7E9F517519DA09CE00DA31AC /* Build configuration list for PBXProject "CDVSplashScreenTest" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = 7E9F517119DA09CE00DA31AC; + productRefGroup = 7E9F517D19DA0A0A00DA31AC /* Products */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 7E9F518C19DA0F8300DA31AC /* Products */; + ProjectRef = 7E9F518B19DA0F8300DA31AC /* CordovaLib.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 7E9F519419DA102000DA31AC /* CDVSplashScreenLib */, + 7E9F519E19DA102000DA31AC /* CDVSplashScreenLibTests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 7E9F519019DA0F8300DA31AC /* libCordova.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libCordova.a; + remoteRef = 7E9F518F19DA0F8300DA31AC /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 7E9F519D19DA102000DA31AC /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 7E9F519119DA102000DA31AC /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 7E9F51AB19DA10AE00DA31AC /* CDVSplashScreen.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 7E9F519B19DA102000DA31AC /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 7E9F51B119DA114400DA31AC /* ImageNameTest.m in Sources */, + 7E9F51B819DA14FD00DA31AC /* ImageNameTestDelegates.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 7E9F51AD19DA10DE00DA31AC /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 7E9F519419DA102000DA31AC /* CDVSplashScreenLib */; + targetProxy = 7E9F51AC19DA10DE00DA31AC /* PBXContainerItemProxy */; + }; + 7E9F51AF19DA10E100DA31AC /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = CordovaLib; + targetProxy = 7E9F51AE19DA10E100DA31AC /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 7E9F517619DA09CE00DA31AC /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + }; + name = Debug; + }; + 7E9F517719DA09CE00DA31AC /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + }; + name = Release; + }; + 7E9F51A419DA102000DA31AC /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + "\"$(TARGET_BUILD_DIR)/usr/local/lib/include\"", + "\"$(OBJROOT)/UninstalledProducts/include\"", + "\"$(BUILT_PRODUCTS_DIR)\"", + ); + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + }; + name = Debug; + }; + 7E9F51A519DA102000DA31AC /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = YES; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + "\"$(TARGET_BUILD_DIR)/usr/local/lib/include\"", + "\n\"$(OBJROOT)/UninstalledProducts/include\"\n\"$(BUILT_PRODUCTS_DIR)\"", + ); + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = NO; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 7E9F51A719DA102000DA31AC /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", + ); + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + INFOPLIST_FILE = CDVSplashScreenLibTests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + }; + name = Debug; + }; + 7E9F51A819DA102000DA31AC /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = YES; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", + ); + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + INFOPLIST_FILE = CDVSplashScreenLibTests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 7E9F517519DA09CE00DA31AC /* Build configuration list for PBXProject "CDVSplashScreenTest" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 7E9F517619DA09CE00DA31AC /* Debug */, + 7E9F517719DA09CE00DA31AC /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 7E9F51A319DA102000DA31AC /* Build configuration list for PBXNativeTarget "CDVSplashScreenLib" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 7E9F51A419DA102000DA31AC /* Debug */, + 7E9F51A519DA102000DA31AC /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 7E9F51A619DA102000DA31AC /* Build configuration list for PBXNativeTarget "CDVSplashScreenLibTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 7E9F51A719DA102000DA31AC /* Debug */, + 7E9F51A819DA102000DA31AC /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 7E9F517219DA09CE00DA31AC /* Project object */; +} diff --git a/cordova/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/cordova/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..8f91278 --- /dev/null +++ b/cordova/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/cordova/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/project.xcworkspace/xcshareddata/CDVSplashScreenTest.xccheckout b/cordova/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/project.xcworkspace/xcshareddata/CDVSplashScreenTest.xccheckout new file mode 100644 index 0000000..7e4cdb9 --- /dev/null +++ b/cordova/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/project.xcworkspace/xcshareddata/CDVSplashScreenTest.xccheckout @@ -0,0 +1,41 @@ + + + + + IDESourceControlProjectFavoriteDictionaryKey + + IDESourceControlProjectIdentifier + 6BE9AD73-1B9F-4362-98D7-DC631BEC6185 + IDESourceControlProjectName + CDVSplashScreenTest + IDESourceControlProjectOriginsDictionary + + BEF5A5D0FF64801E558286389440357A9233D7DB + https://git-wip-us.apache.org/repos/asf/cordova-plugin-splashscreen.git + + IDESourceControlProjectPath + tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj + IDESourceControlProjectRelativeInstallPathDictionary + + BEF5A5D0FF64801E558286389440357A9233D7DB + ../../../../.. + + IDESourceControlProjectURL + https://git-wip-us.apache.org/repos/asf/cordova-plugin-splashscreen.git + IDESourceControlProjectVersion + 111 + IDESourceControlProjectWCCIdentifier + BEF5A5D0FF64801E558286389440357A9233D7DB + IDESourceControlProjectWCConfigurations + + + IDESourceControlRepositoryExtensionIdentifierKey + public.vcs.git + IDESourceControlWCCIdentifierKey + BEF5A5D0FF64801E558286389440357A9233D7DB + IDESourceControlWCCName + cordova-plugin-splashscreen + + + + diff --git a/cordova/platforms/ios/CordovaLib/CordovaLib.xcodeproj/xcuserdata/mattlenz.xcuserdatad/xcschemes/CordovaLib.xcscheme b/cordova/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/xcshareddata/xcschemes/CDVSplashScreenLib.xcscheme similarity index 62% rename from cordova/platforms/ios/CordovaLib/CordovaLib.xcodeproj/xcuserdata/mattlenz.xcuserdatad/xcschemes/CordovaLib.xcscheme rename to cordova/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/xcshareddata/xcschemes/CDVSplashScreenLib.xcscheme index 28478fb..b97b863 100644 --- a/cordova/platforms/ios/CordovaLib/CordovaLib.xcodeproj/xcuserdata/mattlenz.xcuserdatad/xcschemes/CordovaLib.xcscheme +++ b/cordova/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/xcshareddata/xcschemes/CDVSplashScreenLib.xcscheme @@ -1,6 +1,6 @@ + BlueprintIdentifier = "7E9F519419DA102000DA31AC" + BuildableName = "libCDVSplashScreenLib.a" + BlueprintName = "CDVSplashScreenLib" + ReferencedContainer = "container:CDVSplashScreenTest.xcodeproj"> @@ -39,6 +39,15 @@ ignoresPersistentStateOnLaunch = "NO" debugDocumentVersioning = "YES" allowLocationSimulation = "YES"> + + + + @@ -48,6 +57,15 @@ useCustomWorkingDirectory = "NO" buildConfiguration = "Release" debugDocumentVersioning = "YES"> + + + + diff --git a/cordova/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/xcshareddata/xcschemes/CDVSplashScreenLibTests.xcscheme b/cordova/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/xcshareddata/xcschemes/CDVSplashScreenLibTests.xcscheme new file mode 100644 index 0000000..6a2a526 --- /dev/null +++ b/cordova/plugins/org.apache.cordova.splashscreen/tests/ios/CDVSplashScreenTest/CDVSplashScreenTest.xcodeproj/xcshareddata/xcschemes/CDVSplashScreenLibTests.xcscheme @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cordova/plugins/org.apache.cordova.splashscreen/tests/ios/README.md b/cordova/plugins/org.apache.cordova.splashscreen/tests/ios/README.md new file mode 100644 index 0000000..b6bf31b --- /dev/null +++ b/cordova/plugins/org.apache.cordova.splashscreen/tests/ios/README.md @@ -0,0 +1,21 @@ +# iOS Tests for CDVSplashScreen + +You need to install `node.js` to pull in `cordova-ios`. + +First install cordova-ios: + + npm install + +... in the current folder. + + +# Testing from Xcode + +1. Launch the `CDVSplashScreenTest.xcworkspace` file. +2. Choose "CDVSplashScreenLibTests" from the scheme drop-down menu +3. Click and hold on the `Play` button, and choose the `Wrench` icon to run the tests + + +# Testing from the command line + + npm test diff --git a/cordova/plugins/org.apache.cordova.splashscreen/tests/ios/package.json b/cordova/plugins/org.apache.cordova.splashscreen/tests/ios/package.json new file mode 100644 index 0000000..ca5db59 --- /dev/null +++ b/cordova/plugins/org.apache.cordova.splashscreen/tests/ios/package.json @@ -0,0 +1,13 @@ +{ + "name": "cordova-plugin-splashscreen-test-ios", + "version": "1.0.0", + "description": "iOS Unit Tests for Splashscreen Plugin", + "author": "Apache Software Foundation", + "license": "Apache Version 2.0", + "dependencies": { + "cordova-ios": "^3.6.0" + }, + "scripts": { + "test": "xcodebuild -scheme CordovaLib && xcodebuild test -scheme CDVSplashScreenLibTests -destination 'platform=iOS Simulator,name=iPhone 5'" + } +} \ No newline at end of file diff --git a/cordova/plugins/org.apache.cordova.splashscreen/tests/plugin.xml b/cordova/plugins/org.apache.cordova.splashscreen/tests/plugin.xml new file mode 100644 index 0000000..3fe35be --- /dev/null +++ b/cordova/plugins/org.apache.cordova.splashscreen/tests/plugin.xml @@ -0,0 +1,29 @@ + + + + + Cordova Splashscreen Plugin Tests + Apache 2.0 + + + + diff --git a/cordova/plugins/org.apache.cordova.splashscreen/tests/tests.js b/cordova/plugins/org.apache.cordova.splashscreen/tests/tests.js new file mode 100644 index 0000000..8c4d22b --- /dev/null +++ b/cordova/plugins/org.apache.cordova.splashscreen/tests/tests.js @@ -0,0 +1,62 @@ +/* + * + * 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. + * +*/ + +exports.defineAutoTest = function () { + describe('Splashscreen (cordova)', function () { + it("splashscreen.spec.1 should exist", function () { + expect(navigator.splashscreen).toBeDefined(); + }); + + it("splashscreen.spec.2 exec method should exist", function () { + expect(navigator.splashscreen.show).toBeDefined(); + expect(typeof navigator.splashscreen.show).toBe('function'); + }); + + it("splashscreen.spec.3 exec method should exist", function () { + expect(navigator.splashscreen.hide).toBeDefined(); + expect(typeof navigator.splashscreen.hide).toBe('function'); + }); + }); +}; + +exports.defineManualTests = function (contentEl, createActionButton) { + function showFor(duration) { + navigator.splashscreen.show(); + window.setTimeout(function () { + navigator.splashscreen.hide(); + }, 1000 * duration); + } + + contentEl.innerHTML = '

Splashscreen Tests

' + + '

Note for WP: AutoHideSplashScreen must be set to false in config.xml

' + + '
' + + 'Expected result: Will show the Cordova splashscreen for 1 second' + + '

' + + 'Expected result: Will show the Cordova splashscreen for 5 seconds'; + + createActionButton('Show for 1 second', function () { + showFor(1); + }, 'show1'); + + createActionButton('Show for 5 seconds', function () { + showFor(5); + }, 'show5'); +}; From 7595d1951de78a0b823a056956f9dff451e7feb8 Mon Sep 17 00:00:00 2001 From: user91572 Date: Fri, 12 Dec 2014 13:46:12 -0800 Subject: [PATCH 2/3] updated barcode scanner to support ios8 --- .../ios/Hive.xcodeproj/project.pbxproj | 54 +++-- .../CDVBarcodeScanner.mm | 73 +++++-- cordova/platforms/ios/www/cordova_plugins.js | 18 +- .../.fetch.json | 2 +- .../README.md | 67 +++++- .../package.json | 22 ++ .../plugin.xml | 54 ++++- .../LibraryProject/{.gitignore => .npmignore} | 0 .../barcodescanner/BarcodeScanner.java | 4 + .../src/browser/BarcodeScannerProxy.js | 24 +++ .../src/ios/CDVBarcodeScanner.mm | 73 +++++-- .../src/windows8/BarcodeScannerProxy.js | 130 ++++++++++++ .../src/windows8/lib/WinRTBarcodeReader.winmd | Bin 0 -> 11776 bytes .../WinRTBarcodeReader/WinRTBarcodeReader.sln | 39 ++++ .../Properties/AssemblyInfo.cs | 39 ++++ .../WinRTBarcodeReader/Reader.cs | 197 ++++++++++++++++++ .../WinRTBarcodeReader.csproj | 133 ++++++++++++ .../src/windows8/lib/ZXing.winmd | Bin 0 -> 446464 bytes .../src/wp8/BarcodeScanner.cs | 117 +++++++++++ .../src/wp8/BarcodeScannerTask.cs | 103 +++++++++ .../src/wp8/BarcodeScannerUI.xaml | 40 ++++ .../src/wp8/BarcodeScannerUI.xaml.cs | 143 +++++++++++++ .../src/wp8/lib/zxing.wp8.0.dll | Bin 0 -> 432640 bytes .../www/barcodescanner.js | 38 ++++ cordova/plugins/ios.json | 14 +- 25 files changed, 1308 insertions(+), 76 deletions(-) create mode 100644 cordova/plugins/com.phonegap.plugins.barcodescanner/package.json rename cordova/plugins/com.phonegap.plugins.barcodescanner/src/android/LibraryProject/{.gitignore => .npmignore} (100%) create mode 100644 cordova/plugins/com.phonegap.plugins.barcodescanner/src/browser/BarcodeScannerProxy.js create mode 100644 cordova/plugins/com.phonegap.plugins.barcodescanner/src/windows8/BarcodeScannerProxy.js create mode 100644 cordova/plugins/com.phonegap.plugins.barcodescanner/src/windows8/lib/WinRTBarcodeReader.winmd create mode 100644 cordova/plugins/com.phonegap.plugins.barcodescanner/src/windows8/lib/WinRTBarcodeReader/WinRTBarcodeReader.sln create mode 100644 cordova/plugins/com.phonegap.plugins.barcodescanner/src/windows8/lib/WinRTBarcodeReader/WinRTBarcodeReader/Properties/AssemblyInfo.cs create mode 100644 cordova/plugins/com.phonegap.plugins.barcodescanner/src/windows8/lib/WinRTBarcodeReader/WinRTBarcodeReader/Reader.cs create mode 100644 cordova/plugins/com.phonegap.plugins.barcodescanner/src/windows8/lib/WinRTBarcodeReader/WinRTBarcodeReader/WinRTBarcodeReader.csproj create mode 100644 cordova/plugins/com.phonegap.plugins.barcodescanner/src/windows8/lib/ZXing.winmd create mode 100644 cordova/plugins/com.phonegap.plugins.barcodescanner/src/wp8/BarcodeScanner.cs create mode 100644 cordova/plugins/com.phonegap.plugins.barcodescanner/src/wp8/BarcodeScannerTask.cs create mode 100644 cordova/plugins/com.phonegap.plugins.barcodescanner/src/wp8/BarcodeScannerUI.xaml create mode 100644 cordova/plugins/com.phonegap.plugins.barcodescanner/src/wp8/BarcodeScannerUI.xaml.cs create mode 100644 cordova/plugins/com.phonegap.plugins.barcodescanner/src/wp8/lib/zxing.wp8.0.dll diff --git a/cordova/platforms/ios/Hive.xcodeproj/project.pbxproj b/cordova/platforms/ios/Hive.xcodeproj/project.pbxproj index 1e29609..e3b83d7 100644 --- a/cordova/platforms/ios/Hive.xcodeproj/project.pbxproj +++ b/cordova/platforms/ios/Hive.xcodeproj/project.pbxproj @@ -7,7 +7,6 @@ objects = { /* Begin PBXBuildFile section */ - 13074A885A594EE7A71EC64D /* CoreVideo.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E2D8D693B80C4351B553C8AD /* CoreVideo.framework */; }; 1D3623260D0F684500981E51 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D3623250D0F684500981E51 /* AppDelegate.m */; }; 1D60589B0D05DD56006BFB54 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; }; 1F766FE113BBADB100FB74C0 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 1F766FDC13BBADB100FB74C0 /* Localizable.strings */; }; @@ -32,6 +31,13 @@ 5B1594DD16A7569C00FEF299 /* AssetsLibrary.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5B1594DC16A7569C00FEF299 /* AssetsLibrary.framework */; }; 63CCD4931A3B8FCE00C19E7F /* CDVStatusBar.m in Sources */ = {isa = PBXBuildFile; fileRef = 63CCD4921A3B8FCE00C19E7F /* CDVStatusBar.m */; }; 63CCD4961A3B902C00C19E7F /* CDVSplashScreen.m in Sources */ = {isa = PBXBuildFile; fileRef = 63CCD4951A3B902C00C19E7F /* CDVSplashScreen.m */; }; + 63CCD49D1A3B93B600C19E7F /* CDVBarcodeScanner.mm in Sources */ = {isa = PBXBuildFile; fileRef = 63CCD49A1A3B93B600C19E7F /* CDVBarcodeScanner.mm */; }; + 63CCD49E1A3B93B600C19E7F /* zxing-all-in-one.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 63CCD49B1A3B93B600C19E7F /* zxing-all-in-one.cpp */; }; + 63CCD4A01A3B98C000C19E7F /* CoreVideo.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E2D8D693B80C4351B553C8AD /* CoreVideo.framework */; }; + 63CCD4A11A3B98EB00C19E7F /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D92FA53A79EA4E1DBD3226C0 /* QuartzCore.framework */; }; + 63CCD4A21A3B994A00C19E7F /* libiconv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 87926E26003640EABF4150E2 /* libiconv.dylib */; }; + 63CCD4A51A3B994B00C19E7F /* libiconv.2.4.0.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 63CCD4A31A3B994B00C19E7F /* libiconv.2.4.0.dylib */; }; + 63CCD4A61A3B994B00C19E7F /* libiconv.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 63CCD4A41A3B994B00C19E7F /* libiconv.2.dylib */; }; 7E7966DE1810823500FA85AD /* icon-40.png in Resources */ = {isa = PBXBuildFile; fileRef = 7E7966D41810823500FA85AD /* icon-40.png */; }; 7E7966DF1810823500FA85AD /* icon-40@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 7E7966D51810823500FA85AD /* icon-40@2x.png */; }; 7E7966E01810823500FA85AD /* icon-50.png in Resources */ = {isa = PBXBuildFile; fileRef = 7E7966D61810823500FA85AD /* icon-50.png */; }; @@ -42,16 +48,11 @@ 7E7966E51810823500FA85AD /* icon-76@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 7E7966DB1810823500FA85AD /* icon-76@2x.png */; }; 7E7966E61810823500FA85AD /* icon-small.png in Resources */ = {isa = PBXBuildFile; fileRef = 7E7966DC1810823500FA85AD /* icon-small.png */; }; 7E7966E71810823500FA85AD /* icon-small@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 7E7966DD1810823500FA85AD /* icon-small@2x.png */; }; - 9FDED6CECB0E48D59280B653 /* libiconv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 87926E26003640EABF4150E2 /* libiconv.dylib */; }; - A1BFD37395504A35B4DD87E1 /* zxing-all-in-one.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F8D5E9D183354764ADD552EA /* zxing-all-in-one.cpp */; }; - AFFB830EF2C84B2587CDED8D /* CDVBarcodeScanner.mm in Sources */ = {isa = PBXBuildFile; fileRef = 276B93D5FFC7489DA722DDEC /* CDVBarcodeScanner.mm */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - B2D1350909634F01BAC63D29 /* scannerOverlay.xib in Resources */ = {isa = PBXBuildFile; fileRef = DEF350D54A2C4CCD8F792A82 /* scannerOverlay.xib */; }; - CA0CC149BFB14FFAB683B792 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D92FA53A79EA4E1DBD3226C0 /* QuartzCore.framework */; }; + A5836821C1BD4A5EB0501DEE /* scannerOverlay.xib in Resources */ = {isa = PBXBuildFile; fileRef = B8A86F0A1E3B492AB86C4F0D /* scannerOverlay.xib */; }; D362FBD366294F37B73427F5 /* CDVClipboard.m in Sources */ = {isa = PBXBuildFile; fileRef = D90DB6F355FE41B69D3A77D5 /* CDVClipboard.m */; }; D4A0D8761607E02300AEF8BB /* Default-568h@2x~iphone.png in Resources */ = {isa = PBXBuildFile; fileRef = D4A0D8751607E02300AEF8BB /* Default-568h@2x~iphone.png */; }; DA77EFCC717A41FAA065E6B7 /* CDVDevice.m in Sources */ = {isa = PBXBuildFile; fileRef = DEB2DD48C02649ECA1AD3D61 /* CDVDevice.m */; }; DBFA521A2C174230AAA758BE /* CDVLocation.m in Sources */ = {isa = PBXBuildFile; fileRef = 275A9C28DCCB464188C264B2 /* CDVLocation.m */; }; - F496ED016734413E88A09DC9 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CB1DC0ECC914DC89ACCDC7C /* AVFoundation.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -78,7 +79,6 @@ 1F766FDD13BBADB100FB74C0 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = Localizable.strings; sourceTree = ""; }; 1F766FE013BBADB100FB74C0 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = Localizable.strings; sourceTree = ""; }; 275A9C28DCCB464188C264B2 /* CDVLocation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CDVLocation.m; path = org.apache.cordova.geolocation/CDVLocation.m; sourceTree = ""; }; - 276B93D5FFC7489DA722DDEC /* CDVBarcodeScanner.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = unknown; name = CDVBarcodeScanner.mm; path = com.phonegap.plugins.barcodescanner/CDVBarcodeScanner.mm; sourceTree = ""; }; 288765FC0DF74451002DB57D /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; 29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 301BF52D109A57CC0062928A /* CordovaLib.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = CordovaLib.xcodeproj; path = CordovaLib/CordovaLib.xcodeproj; sourceTree = ""; }; @@ -110,8 +110,12 @@ 63CCD4921A3B8FCE00C19E7F /* CDVStatusBar.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CDVStatusBar.m; path = org.apache.cordova.statusbar/CDVStatusBar.m; sourceTree = ""; }; 63CCD4941A3B902C00C19E7F /* CDVSplashScreen.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CDVSplashScreen.h; path = org.apache.cordova.splashscreen/CDVSplashScreen.h; sourceTree = ""; }; 63CCD4951A3B902C00C19E7F /* CDVSplashScreen.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CDVSplashScreen.m; path = org.apache.cordova.splashscreen/CDVSplashScreen.m; sourceTree = ""; }; + 63CCD49A1A3B93B600C19E7F /* CDVBarcodeScanner.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = CDVBarcodeScanner.mm; path = com.phonegap.plugins.barcodescanner/CDVBarcodeScanner.mm; sourceTree = ""; }; + 63CCD49B1A3B93B600C19E7F /* zxing-all-in-one.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "zxing-all-in-one.cpp"; path = "com.phonegap.plugins.barcodescanner/zxing-all-in-one.cpp"; sourceTree = ""; }; + 63CCD49C1A3B93B600C19E7F /* zxing-all-in-one.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "zxing-all-in-one.h"; path = "com.phonegap.plugins.barcodescanner/zxing-all-in-one.h"; sourceTree = ""; }; + 63CCD4A31A3B994B00C19E7F /* libiconv.2.4.0.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libiconv.2.4.0.dylib; path = usr/lib/libiconv.2.4.0.dylib; sourceTree = SDKROOT; }; + 63CCD4A41A3B994B00C19E7F /* libiconv.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libiconv.2.dylib; path = usr/lib/libiconv.2.dylib; sourceTree = SDKROOT; }; 6B707AEA15D544C687115306 /* CDVLogger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CDVLogger.h; path = org.apache.cordova.console/CDVLogger.h; sourceTree = ""; }; - 7CD854299D1948848C333DA0 /* zxing-all-in-one.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "zxing-all-in-one.h"; path = "com.phonegap.plugins.barcodescanner/zxing-all-in-one.h"; sourceTree = ""; }; 7E7966D41810823500FA85AD /* icon-40.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icon-40.png"; sourceTree = ""; }; 7E7966D51810823500FA85AD /* icon-40@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icon-40@2x.png"; sourceTree = ""; }; 7E7966D61810823500FA85AD /* icon-50.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icon-50.png"; sourceTree = ""; }; @@ -124,6 +128,7 @@ 7E7966DD1810823500FA85AD /* icon-small@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icon-small@2x.png"; sourceTree = ""; }; 87926E26003640EABF4150E2 /* libiconv.dylib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = "compiled.mach-o.dylib"; name = libiconv.dylib; path = usr/lib/libiconv.dylib; sourceTree = SDKROOT; }; 8D1107310486CEB800E47090 /* Hive-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = "Hive-Info.plist"; path = "../Hive-Info.plist"; plistStructureDefinitionIdentifier = "com.apple.xcode.plist.structure-definition.iphone.info-plist"; sourceTree = ""; }; + B8A86F0A1E3B492AB86C4F0D /* scannerOverlay.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = scannerOverlay.xib; sourceTree = ""; }; BA40CC04E68F40FFAE600416 /* CDVLocation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CDVLocation.h; path = org.apache.cordova.geolocation/CDVLocation.h; sourceTree = ""; }; D4A0D8751607E02300AEF8BB /* Default-568h@2x~iphone.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-568h@2x~iphone.png"; sourceTree = ""; }; D7824DF6BA3940DD9C5EB843 /* libz.dylib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; }; @@ -136,7 +141,6 @@ EB87FDF31871DA8E0020F90C /* www */ = {isa = PBXFileReference; lastKnownFileType = folder; name = www; path = ../../www; sourceTree = ""; }; EB87FDF41871DAF40020F90C /* config.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; name = config.xml; path = ../../config.xml; sourceTree = ""; }; F840E1F0165FE0F500CFE078 /* config.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; name = config.xml; path = Hive/config.xml; sourceTree = ""; }; - F8D5E9D183354764ADD552EA /* zxing-all-in-one.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = unknown; name = "zxing-all-in-one.cpp"; path = "com.phonegap.plugins.barcodescanner/zxing-all-in-one.cpp"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -144,15 +148,16 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 63CCD4A51A3B994B00C19E7F /* libiconv.2.4.0.dylib in Frameworks */, + 63CCD4A61A3B994B00C19E7F /* libiconv.2.dylib in Frameworks */, + 63CCD4A21A3B994A00C19E7F /* libiconv.dylib in Frameworks */, + 63CCD4A11A3B98EB00C19E7F /* QuartzCore.framework in Frameworks */, + 63CCD4A01A3B98C000C19E7F /* CoreVideo.framework in Frameworks */, 5B1594DD16A7569C00FEF299 /* AssetsLibrary.framework in Frameworks */, 301BF552109A68D80062928A /* libCordova.a in Frameworks */, 288765FD0DF74451002DB57D /* CoreGraphics.framework in Frameworks */, 305D5FD1115AB8F900A74A75 /* MobileCoreServices.framework in Frameworks */, 5AEE5B35173C68D80009041E /* CoreLocation.framework in Frameworks */, - 9FDED6CECB0E48D59280B653 /* libiconv.dylib in Frameworks */, - F496ED016734413E88A09DC9 /* AVFoundation.framework in Frameworks */, - 13074A885A594EE7A71EC64D /* CoreVideo.framework in Frameworks */, - CA0CC149BFB14FFAB683B792 /* QuartzCore.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -235,6 +240,7 @@ 308D05311370CCF300D202BF /* splash */, 8D1107310486CEB800E47090 /* Hive-Info.plist */, DEF350D54A2C4CCD8F792A82 /* scannerOverlay.xib */, + B8A86F0A1E3B492AB86C4F0D /* scannerOverlay.xib */, ); name = Resources; path = Hive/Resources; @@ -243,6 +249,8 @@ 29B97323FDCFA39411CA2CEA /* Frameworks */ = { isa = PBXGroup; children = ( + 63CCD4A31A3B994B00C19E7F /* libiconv.2.4.0.dylib */, + 63CCD4A41A3B994B00C19E7F /* libiconv.2.dylib */, 5AEE5B34173C68D80009041E /* CoreLocation.framework */, 5B1594DC16A7569C00FEF299 /* AssetsLibrary.framework */, 288765FC0DF74451002DB57D /* CoreGraphics.framework */, @@ -267,13 +275,13 @@ 307C750510C5A3420062BCA9 /* Plugins */ = { isa = PBXGroup; children = ( + 63CCD49A1A3B93B600C19E7F /* CDVBarcodeScanner.mm */, + 63CCD49B1A3B93B600C19E7F /* zxing-all-in-one.cpp */, + 63CCD49C1A3B93B600C19E7F /* zxing-all-in-one.h */, + 63CCD4911A3B8FCE00C19E7F /* CDVStatusBar.h */, 63CCD4941A3B902C00C19E7F /* CDVSplashScreen.h */, 63CCD4951A3B902C00C19E7F /* CDVSplashScreen.m */, - 63CCD4911A3B8FCE00C19E7F /* CDVStatusBar.h */, 63CCD4921A3B8FCE00C19E7F /* CDVStatusBar.m */, - 276B93D5FFC7489DA722DDEC /* CDVBarcodeScanner.mm */, - F8D5E9D183354764ADD552EA /* zxing-all-in-one.cpp */, - 7CD854299D1948848C333DA0 /* zxing-all-in-one.h */, DEB2DD48C02649ECA1AD3D61 /* CDVDevice.m */, 5EF12B1BD7EE4BBD87704509 /* CDVDevice.h */, 5544C525664E42C9B48315B4 /* CDVLogger.m */, @@ -450,7 +458,7 @@ 7E7966E11810823500FA85AD /* icon-50@2x.png in Resources */, 7E7966E51810823500FA85AD /* icon-76@2x.png in Resources */, 30FC414916E50CA1004E6F35 /* icon-72@2x.png in Resources */, - B2D1350909634F01BAC63D29 /* scannerOverlay.xib in Resources */, + A5836821C1BD4A5EB0501DEE /* scannerOverlay.xib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -483,9 +491,9 @@ 1D3623260D0F684500981E51 /* AppDelegate.m in Sources */, 302D95F114D2391D003F00A1 /* MainViewController.m in Sources */, 63CCD4961A3B902C00C19E7F /* CDVSplashScreen.m in Sources */, - AFFB830EF2C84B2587CDED8D /* CDVBarcodeScanner.mm in Sources */, - A1BFD37395504A35B4DD87E1 /* zxing-all-in-one.cpp in Sources */, DA77EFCC717A41FAA065E6B7 /* CDVDevice.m in Sources */, + 63CCD49D1A3B93B600C19E7F /* CDVBarcodeScanner.mm in Sources */, + 63CCD49E1A3B93B600C19E7F /* zxing-all-in-one.cpp in Sources */, 42D145D5DE934ACFA5138EE9 /* CDVLogger.m in Sources */, 63CCD4931A3B8FCE00C19E7F /* CDVStatusBar.m in Sources */, DBFA521A2C174230AAA758BE /* CDVLocation.m in Sources */, @@ -543,7 +551,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_ARC = NO; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = NO; @@ -583,7 +591,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_ARC = NO; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = YES; diff --git a/cordova/platforms/ios/Hive/Plugins/com.phonegap.plugins.barcodescanner/CDVBarcodeScanner.mm b/cordova/platforms/ios/Hive/Plugins/com.phonegap.plugins.barcodescanner/CDVBarcodeScanner.mm index c7ccc7d..d57bfa1 100644 --- a/cordova/platforms/ios/Hive/Plugins/com.phonegap.plugins.barcodescanner/CDVBarcodeScanner.mm +++ b/cordova/platforms/ios/Hive/Plugins/com.phonegap.plugins.barcodescanner/CDVBarcodeScanner.mm @@ -48,7 +48,7 @@ @interface CDVBarcodeScanner : CDVPlugin {} - (NSString*)isScanNotPossible; - (void)scan:(CDVInvokedUrlCommand*)command; - (void)encode:(CDVInvokedUrlCommand*)command; -- (void)returnSuccess:(NSString*)scannedText format:(NSString*)format cancelled:(BOOL)cancelled callback:(NSString*)callback; +- (void)returnSuccess:(NSString*)scannedText format:(NSString*)format cancelled:(BOOL)cancelled flipped:(BOOL)flipped callback:(NSString*)callback; - (void)returnError:(NSString*)message callback:(NSString*)callback; @end @@ -66,6 +66,9 @@ @interface CDVbcsProcessor : NSObject luminanceSource ([self getLuminanceSourceFromSample: sampleBuffer imageBytes:&imageBytes]); @@ -621,7 +655,7 @@ - (id)initWithProcessor:(CDVbcsProcessor*)processor alternateOverlay:(NSString * //-------------------------------------------------------------------------- - (void)dealloc { self.view = nil; - self.processor = nil; +// self.processor = nil; self.shutterPressed = NO; self.alternateXib = nil; self.overlayView = nil; @@ -679,6 +713,11 @@ - (IBAction)cancelButtonPressed:(id)sender { [self.processor performSelector:@selector(barcodeScanCancelled) withObject:nil afterDelay:0]; } +- (void)flipCameraButtonPressed:(id)sender +{ + [self.processor performSelector:@selector(flipCamera) withObject:nil afterDelay:0]; +} + //-------------------------------------------------------------------------- - (UIView *)buildOverlayViewFromXib { @@ -717,12 +756,20 @@ - (UIView*)buildOverlayView { action:@selector(cancelButtonPressed:) ]; + id flexSpace = [[[UIBarButtonItem alloc] autorelease] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil ]; + id flipCamera = [[[UIBarButtonItem alloc] autorelease] + initWithBarButtonSystemItem:UIBarButtonSystemItemCamera + target:(id)self + action:@selector(flipCameraButtonPressed:) + ]; + + #if USE_SHUTTER id shutterButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCamera @@ -730,9 +777,9 @@ - (UIView*)buildOverlayView { action:@selector(shutterButtonPressed) ]; - toolbar.items = [NSArray arrayWithObjects:flexSpace,cancelButton,flexSpace,shutterButton,nil]; + toolbar.items = [NSArray arrayWithObjects:flexSpace,cancelButton,flexSpace, flipCamera ,shutterButton,nil]; #else - toolbar.items = [NSArray arrayWithObjects:flexSpace,cancelButton,flexSpace,nil]; + toolbar.items = [NSArray arrayWithObjects:flexSpace,cancelButton,flexSpace, flipCamera,nil]; #endif bounds = overlayView.bounds; diff --git a/cordova/platforms/ios/www/cordova_plugins.js b/cordova/platforms/ios/www/cordova_plugins.js index 40e7f68..b15f09f 100644 --- a/cordova/platforms/ios/www/cordova_plugins.js +++ b/cordova/platforms/ios/www/cordova_plugins.js @@ -7,13 +7,6 @@ module.exports = [ "window.StatusBar" ] }, - { - "file": "plugins/com.phonegap.plugins.barcodescanner/www/barcodescanner.js", - "id": "com.phonegap.plugins.barcodescanner.BarcodeScanner", - "clobbers": [ - "cordova.plugins.barcodeScanner" - ] - }, { "file": "plugins/org.apache.cordova.device/www/device.js", "id": "org.apache.cordova.device.device", @@ -76,18 +69,25 @@ module.exports = [ "clobbers": [ "navigator.splashscreen" ] + }, + { + "file": "plugins/com.phonegap.plugins.barcodescanner/www/barcodescanner.js", + "id": "com.phonegap.plugins.barcodescanner.BarcodeScanner", + "clobbers": [ + "cordova.plugins.barcodeScanner" + ] } ]; module.exports.metadata = // TOP OF METADATA { "org.apache.cordova.statusbar": "0.1.3", - "com.phonegap.plugins.barcodescanner": "1.0.1", "org.apache.cordova.device": "0.2.10", "org.apache.cordova.console": "0.2.10-dev", "org.apache.cordova.geolocation": "0.3.9-dev", "com.verso.cordova.clipboard": "0.1.0", - "org.apache.cordova.splashscreen": "0.3.5" + "org.apache.cordova.splashscreen": "0.3.5", + "com.phonegap.plugins.barcodescanner": "2.0.1" } // BOTTOM OF METADATA }); \ No newline at end of file diff --git a/cordova/plugins/com.phonegap.plugins.barcodescanner/.fetch.json b/cordova/plugins/com.phonegap.plugins.barcodescanner/.fetch.json index dde3f26..2580f9e 100644 --- a/cordova/plugins/com.phonegap.plugins.barcodescanner/.fetch.json +++ b/cordova/plugins/com.phonegap.plugins.barcodescanner/.fetch.json @@ -1 +1 @@ -{"source":{"type":"git","url":"https://github.com/wildabeast/BarcodeScanner.git","subdir":"."}} \ No newline at end of file +{"source":{"type":"local","path":"/Users/user91572/.plugman/cache/com.phonegap.plugins.barcodescanner/2.0.1/package"}} \ No newline at end of file diff --git a/cordova/plugins/com.phonegap.plugins.barcodescanner/README.md b/cordova/plugins/com.phonegap.plugins.barcodescanner/README.md index 1c8d8ca..2a777ba 100644 --- a/cordova/plugins/com.phonegap.plugins.barcodescanner/README.md +++ b/cordova/plugins/com.phonegap.plugins.barcodescanner/README.md @@ -3,7 +3,14 @@ BarcodeScanner Cross-platform BarcodeScanner for Cordova / PhoneGap. -Follows the [Cordova Plugin spec](https://github.com/apache/cordova-plugman/blob/master/plugin_spec.md), so that it works with [Plugman](https://github.com/apache/cordova-plugman). +Follows the [Cordova Plugin spec](http://cordova.apache.org/docs/en/3.0.0/plugin_ref_spec.md), so that it works with [Plugman](https://github.com/apache/cordova-plugman). + +### Supported Platforms + +- Android +- iOS +- Windows 8 +- Windows Phone 8 Note: the Android source for this project includes an Android Library Project. plugman currently doesn't support Library Project refs, so its been @@ -43,6 +50,42 @@ The following barcode types are currently supported: * CODE_39 * ITF +### Windows8 + +* UPC_A +* UPC_E +* EAN_8 +* EAN_13 +* CODE_39 +* CODE_93 +* CODE_128 +* ITF +* CODABAR +* MSI +* RSS14 +* QR_CODE +* DATA_MATRIX +* AZTEC +* PDF417 + +### Windows Phone 8 + +* UPC_A +* UPC_E +* EAN_8 +* EAN_13 +* CODE_39 +* CODE_93 +* CODE_128 +* ITF +* CODABAR +* MSI +* RSS14 +* QR_CODE +* DATA_MATRIX +* AZTEC +* PDF417 + `success` and `fail` are callback functions. Success is passed an object with data, type and cancelled properties. Data is the text representation of the barcode data, type is the type of barcode detected and cancelled is whether or not the user cancelled the scan. A full example could be: @@ -61,7 +104,9 @@ A full example could be: ``` ## Encoding a Barcode ## + The plugin creates the object `cordova.plugins.barcodeScanner` with the method `encode(type, data, success, fail)`. + Supported encoding types: * TEXT_TYPE @@ -72,17 +117,23 @@ Supported encoding types: ``` A full example could be: - cordova.plugins.barcodeScanner.encode(BarcodeScanner.Encode.TEXT_TYPE, "http://www.nytimes.com", function(success) { - alert("encode success: " + success); - }, function(fail) { - alert("encoding failed: " + fail); - } - ); + cordova.plugins.barcodeScanner.encode(cordova.plugins.barcodeScanner.Encode.TEXT_TYPE, "http://www.nytimes.com", function(success) { + alert("encode success: " + success); + }, function(fail) { + alert("encoding failed: " + fail); + } + ); ``` +## Windows8 quirks ## +Windows 8 implenemtation currently doesn't support encode functionality. + +## Windows Phone 8 quirks ## +Windows Phone 8 implenemtation currently doesn't support encode functionality. + ## Thanks on Github ## -So many -- check out the original [iOS](https://github.com/phonegap/phonegap-plugins/tree/master/iOS/BarcodeScanner) and [Android](https://github.com/phonegap/phonegap-plugins/tree/master/Android/BarcodeScanner) repos. +So many -- check out the original [iOS](https://github.com/phonegap/phonegap-plugins/tree/DEPRECATED/iOS/BarcodeScanner) and [Android](https://github.com/phonegap/phonegap-plugins/tree/DEPRECATED/Android/BarcodeScanner) repos. ## Licence ## diff --git a/cordova/plugins/com.phonegap.plugins.barcodescanner/package.json b/cordova/plugins/com.phonegap.plugins.barcodescanner/package.json new file mode 100644 index 0000000..8f776ef --- /dev/null +++ b/cordova/plugins/com.phonegap.plugins.barcodescanner/package.json @@ -0,0 +1,22 @@ +{ + "version": "2.0.1", + "name": "com.phonegap.plugins.barcodescanner", + "cordova_name": "BarcodeScanner", + "description": "You can use the BarcodeScanner plugin to scan different types of barcodes (using the device's camera) and get the metadata encoded in them for processing within your application.", + "license": "MIT", + "repo": "https://github.com/wildabeast/BarcodeScanner", + "issue": "https://github.com/wildabeast/BarcodeScanner/issues", + "platforms": [ + "ios", + "android", + "windows8", + "wp8", + "browser" + ], + "engines": [ + { + "name": "cordova", + "version": ">=3.0.0" + } + ] +} \ No newline at end of file diff --git a/cordova/plugins/com.phonegap.plugins.barcodescanner/plugin.xml b/cordova/plugins/com.phonegap.plugins.barcodescanner/plugin.xml index 0d0ccfa..6a7f216 100644 --- a/cordova/plugins/com.phonegap.plugins.barcodescanner/plugin.xml +++ b/cordova/plugins/com.phonegap.plugins.barcodescanner/plugin.xml @@ -1,12 +1,15 @@ + version="2.0.1"> BarcodeScanner - Scans Barcodes. + You can use the BarcodeScanner plugin to scan different types of barcodes (using the device's camera) and get the metadata encoded in them for processing within your application. MIT + https://github.com/wildabeast/BarcodeScanner + https://github.com/wildabeast/BarcodeScanner/issues + @@ -282,4 +285,51 @@ Type + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cordova/plugins/com.phonegap.plugins.barcodescanner/src/android/LibraryProject/.gitignore b/cordova/plugins/com.phonegap.plugins.barcodescanner/src/android/LibraryProject/.npmignore similarity index 100% rename from cordova/plugins/com.phonegap.plugins.barcodescanner/src/android/LibraryProject/.gitignore rename to cordova/plugins/com.phonegap.plugins.barcodescanner/src/android/LibraryProject/.npmignore diff --git a/cordova/plugins/com.phonegap.plugins.barcodescanner/src/android/com/phonegap/plugins/barcodescanner/BarcodeScanner.java b/cordova/plugins/com.phonegap.plugins.barcodescanner/src/android/com/phonegap/plugins/barcodescanner/BarcodeScanner.java index 6b1bcca..3fac311 100644 --- a/cordova/plugins/com.phonegap.plugins.barcodescanner/src/android/com/phonegap/plugins/barcodescanner/BarcodeScanner.java +++ b/cordova/plugins/com.phonegap.plugins.barcodescanner/src/android/com/phonegap/plugins/barcodescanner/BarcodeScanner.java @@ -109,6 +109,8 @@ public boolean execute(String action, JSONArray args, CallbackContext callbackCo public void scan() { Intent intentScan = new Intent(SCAN_INTENT); intentScan.addCategory(Intent.CATEGORY_DEFAULT); + // avoid calling other phonegap apps + intentScan.setPackage(this.cordova.getActivity().getApplicationContext().getPackageName()); this.cordova.startActivityForResult((CordovaPlugin) this, intentScan, REQUEST_CODE); } @@ -163,6 +165,8 @@ public void encode(String type, String data) { Intent intentEncode = new Intent(ENCODE_INTENT); intentEncode.putExtra(ENCODE_TYPE, type); intentEncode.putExtra(ENCODE_DATA, data); + // avoid calling other phonegap apps + intentEncode.setPackage(this.cordova.getActivity().getApplicationContext().getPackageName()); this.cordova.getActivity().startActivity(intentEncode); } diff --git a/cordova/plugins/com.phonegap.plugins.barcodescanner/src/browser/BarcodeScannerProxy.js b/cordova/plugins/com.phonegap.plugins.barcodescanner/src/browser/BarcodeScannerProxy.js new file mode 100644 index 0000000..6670dc6 --- /dev/null +++ b/cordova/plugins/com.phonegap.plugins.barcodescanner/src/browser/BarcodeScannerProxy.js @@ -0,0 +1,24 @@ +function scan(success, error) { + var code = window.prompt("Enter barcode value (empty value will fire the error handler):"); + if(code) { + var result = { + text:code, + format:"Fake", + cancelled:false + }; + success(result); + } else { + error("No barcode"); + } +} + +function encode(type, data, success, errorCallback) { + success(); +} + +module.exports = { + scan: scan, + encode: encode +}; + +require("cordova/exec/proxy").add("BarcodeScanner",module.exports); \ No newline at end of file diff --git a/cordova/plugins/com.phonegap.plugins.barcodescanner/src/ios/CDVBarcodeScanner.mm b/cordova/plugins/com.phonegap.plugins.barcodescanner/src/ios/CDVBarcodeScanner.mm index c7ccc7d..d57bfa1 100644 --- a/cordova/plugins/com.phonegap.plugins.barcodescanner/src/ios/CDVBarcodeScanner.mm +++ b/cordova/plugins/com.phonegap.plugins.barcodescanner/src/ios/CDVBarcodeScanner.mm @@ -48,7 +48,7 @@ @interface CDVBarcodeScanner : CDVPlugin {} - (NSString*)isScanNotPossible; - (void)scan:(CDVInvokedUrlCommand*)command; - (void)encode:(CDVInvokedUrlCommand*)command; -- (void)returnSuccess:(NSString*)scannedText format:(NSString*)format cancelled:(BOOL)cancelled callback:(NSString*)callback; +- (void)returnSuccess:(NSString*)scannedText format:(NSString*)format cancelled:(BOOL)cancelled flipped:(BOOL)flipped callback:(NSString*)callback; - (void)returnError:(NSString*)message callback:(NSString*)callback; @end @@ -66,6 +66,9 @@ @interface CDVbcsProcessor : NSObject luminanceSource ([self getLuminanceSourceFromSample: sampleBuffer imageBytes:&imageBytes]); @@ -621,7 +655,7 @@ - (id)initWithProcessor:(CDVbcsProcessor*)processor alternateOverlay:(NSString * //-------------------------------------------------------------------------- - (void)dealloc { self.view = nil; - self.processor = nil; +// self.processor = nil; self.shutterPressed = NO; self.alternateXib = nil; self.overlayView = nil; @@ -679,6 +713,11 @@ - (IBAction)cancelButtonPressed:(id)sender { [self.processor performSelector:@selector(barcodeScanCancelled) withObject:nil afterDelay:0]; } +- (void)flipCameraButtonPressed:(id)sender +{ + [self.processor performSelector:@selector(flipCamera) withObject:nil afterDelay:0]; +} + //-------------------------------------------------------------------------- - (UIView *)buildOverlayViewFromXib { @@ -717,12 +756,20 @@ - (UIView*)buildOverlayView { action:@selector(cancelButtonPressed:) ]; + id flexSpace = [[[UIBarButtonItem alloc] autorelease] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil ]; + id flipCamera = [[[UIBarButtonItem alloc] autorelease] + initWithBarButtonSystemItem:UIBarButtonSystemItemCamera + target:(id)self + action:@selector(flipCameraButtonPressed:) + ]; + + #if USE_SHUTTER id shutterButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCamera @@ -730,9 +777,9 @@ - (UIView*)buildOverlayView { action:@selector(shutterButtonPressed) ]; - toolbar.items = [NSArray arrayWithObjects:flexSpace,cancelButton,flexSpace,shutterButton,nil]; + toolbar.items = [NSArray arrayWithObjects:flexSpace,cancelButton,flexSpace, flipCamera ,shutterButton,nil]; #else - toolbar.items = [NSArray arrayWithObjects:flexSpace,cancelButton,flexSpace,nil]; + toolbar.items = [NSArray arrayWithObjects:flexSpace,cancelButton,flexSpace, flipCamera,nil]; #endif bounds = overlayView.bounds; diff --git a/cordova/plugins/com.phonegap.plugins.barcodescanner/src/windows8/BarcodeScannerProxy.js b/cordova/plugins/com.phonegap.plugins.barcodescanner/src/windows8/BarcodeScannerProxy.js new file mode 100644 index 0000000..9384214 --- /dev/null +++ b/cordova/plugins/com.phonegap.plugins.barcodescanner/src/windows8/BarcodeScannerProxy.js @@ -0,0 +1,130 @@ +/* + * Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. + * + * Licensed 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 = { + + /** + * Scans image via device camera and retieves barcode from it. + * @param {function} success Success callback + * @param {function} fail Error callback + * @param {array} args Arguments array + */ + scan: function (success, fail, args) { + + var capturePreview = null, + captureCancelButton = null, + capture = null, + captureSettings = null, + reader = null, + + /* Width of bitmap, generated from capture stream and used for barcode search */ + bitmapWidth = 800, + /* Width of bitmap, generated from capture stream and used for barcode search */ + bitmapHeight = 600; + + /** + * Creates a preview frame and necessary objects + */ + function createPreview() { + + // Create fullscreen preview + capturePreview = document.createElement("video"); + capturePreview.style.cssText = "position: absolute; left: 0; top: 0; width: 100%; height: 100%"; + + // Create cancel button + captureCancelButton = document.createElement("button"); + captureCancelButton.innerText = "Cancel"; + captureCancelButton.style.cssText = "position: absolute; right: 0; bottom: 0; display: block; margin: 20px"; + captureCancelButton.addEventListener('click', cancelPreview, false); + + capture = new Windows.Media.Capture.MediaCapture(); + + captureSettings = new Windows.Media.Capture.MediaCaptureInitializationSettings(); + captureSettings.streamingCaptureMode = Windows.Media.Capture.StreamingCaptureMode.video; + } + + /** + * Starts stream transmission to preview frame and then run barcode search + */ + function startPreview() { + capture.initializeAsync(captureSettings).done(function () { + capturePreview.src = URL.createObjectURL(capture); + capturePreview.play(); + + // Insert preview frame and controls into page + document.body.appendChild(capturePreview); + document.body.appendChild(captureCancelButton); + + startBarcodeSearch(); + }); + } + + /** + * Starts barcode search process, implemented in WinRTBarcodeReader.winmd library + * Calls success callback, when barcode found. + */ + function startBarcodeSearch() { + reader = new WinRTBarcodeReader.Reader(capture, bitmapWidth, bitmapHeight); + var readOp = reader.readCode(); + readOp.done(function (result) { + destroyPreview(); + success({ text: result.text, format: result.barcodeFormat, cancelled: false }); + }); + } + + /** + * Removes preview frame and corresponding objects from window + */ + function destroyPreview() { + capturePreview.pause(); + capturePreview.src = null; + [capturePreview, captureCancelButton].forEach(function (elem) { + if (elem /* && elem in document.body.childNodes */) { + document.body.removeChild(elem); + } + }); + if (reader) { + reader.stop(); + reader = null; + } + if (capture) { + capture.stopRecordAsync(); + capture = null; + } + } + + /** + * Stops preview and then call success callback with cancelled=true + * See https://github.com/phonegap-build/BarcodeScanner#using-the-plugin + */ + function cancelPreview() { + destroyPreview(); + success({ text: null, format: null, cancelled: true }); + } + + try { + createPreview(); + startPreview(); + } catch (ex) { + fail(ex); + } + }, + + /** + * Encodes specified data into barcode + * @param {function} success Success callback + * @param {function} fail Error callback + * @param {array} args Arguments array + */ + encode: function (success, fail, args) { + fail("Not implemented yet"); + } +}; +require("cordova/windows8/commandProxy").add("BarcodeScanner", module.exports); diff --git a/cordova/plugins/com.phonegap.plugins.barcodescanner/src/windows8/lib/WinRTBarcodeReader.winmd b/cordova/plugins/com.phonegap.plugins.barcodescanner/src/windows8/lib/WinRTBarcodeReader.winmd new file mode 100644 index 0000000000000000000000000000000000000000..91c415c5a0ddb9d27c8b834a99682709a4eed6ff GIT binary patch literal 11776 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 SV~752{YFmK?~ea>5%^CX%Og(! literal 0 HcmV?d00001 diff --git a/cordova/plugins/com.phonegap.plugins.barcodescanner/src/windows8/lib/WinRTBarcodeReader/WinRTBarcodeReader.sln b/cordova/plugins/com.phonegap.plugins.barcodescanner/src/windows8/lib/WinRTBarcodeReader/WinRTBarcodeReader.sln new file mode 100644 index 0000000..f162f7a --- /dev/null +++ b/cordova/plugins/com.phonegap.plugins.barcodescanner/src/windows8/lib/WinRTBarcodeReader/WinRTBarcodeReader.sln @@ -0,0 +1,39 @@ +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2013 +VisualStudioVersion = 12.0.30324.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinRTBarcodeReader", "WinRTBarcodeReader\WinRTBarcodeReader.csproj", "{01412F36-3781-4AF0-903C-ACEA7552C99C}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Debug|ARM = Debug|ARM + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|Any CPU = Release|Any CPU + Release|ARM = Release|ARM + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {01412F36-3781-4AF0-903C-ACEA7552C99C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {01412F36-3781-4AF0-903C-ACEA7552C99C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {01412F36-3781-4AF0-903C-ACEA7552C99C}.Debug|ARM.ActiveCfg = Debug|ARM + {01412F36-3781-4AF0-903C-ACEA7552C99C}.Debug|ARM.Build.0 = Debug|ARM + {01412F36-3781-4AF0-903C-ACEA7552C99C}.Debug|x64.ActiveCfg = Debug|x64 + {01412F36-3781-4AF0-903C-ACEA7552C99C}.Debug|x64.Build.0 = Debug|x64 + {01412F36-3781-4AF0-903C-ACEA7552C99C}.Debug|x86.ActiveCfg = Debug|x86 + {01412F36-3781-4AF0-903C-ACEA7552C99C}.Debug|x86.Build.0 = Debug|x86 + {01412F36-3781-4AF0-903C-ACEA7552C99C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {01412F36-3781-4AF0-903C-ACEA7552C99C}.Release|Any CPU.Build.0 = Release|Any CPU + {01412F36-3781-4AF0-903C-ACEA7552C99C}.Release|ARM.ActiveCfg = Release|ARM + {01412F36-3781-4AF0-903C-ACEA7552C99C}.Release|ARM.Build.0 = Release|ARM + {01412F36-3781-4AF0-903C-ACEA7552C99C}.Release|x64.ActiveCfg = Release|x64 + {01412F36-3781-4AF0-903C-ACEA7552C99C}.Release|x64.Build.0 = Release|x64 + {01412F36-3781-4AF0-903C-ACEA7552C99C}.Release|x86.ActiveCfg = Release|x86 + {01412F36-3781-4AF0-903C-ACEA7552C99C}.Release|x86.Build.0 = Release|x86 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/cordova/plugins/com.phonegap.plugins.barcodescanner/src/windows8/lib/WinRTBarcodeReader/WinRTBarcodeReader/Properties/AssemblyInfo.cs b/cordova/plugins/com.phonegap.plugins.barcodescanner/src/windows8/lib/WinRTBarcodeReader/WinRTBarcodeReader/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..6aadffa --- /dev/null +++ b/cordova/plugins/com.phonegap.plugins.barcodescanner/src/windows8/lib/WinRTBarcodeReader/WinRTBarcodeReader/Properties/AssemblyInfo.cs @@ -0,0 +1,39 @@ +/* + * Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. + * + * Licensed 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. + */ + +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("WindowsRuntimeComponent1")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("WindowsRuntimeComponent1")] +[assembly: AssemblyCopyright("Copyright © 2014")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] +[assembly: ComVisible(false)] \ No newline at end of file diff --git a/cordova/plugins/com.phonegap.plugins.barcodescanner/src/windows8/lib/WinRTBarcodeReader/WinRTBarcodeReader/Reader.cs b/cordova/plugins/com.phonegap.plugins.barcodescanner/src/windows8/lib/WinRTBarcodeReader/WinRTBarcodeReader/Reader.cs new file mode 100644 index 0000000..bc4cec0 --- /dev/null +++ b/cordova/plugins/com.phonegap.plugins.barcodescanner/src/windows8/lib/WinRTBarcodeReader/WinRTBarcodeReader/Reader.cs @@ -0,0 +1,197 @@ +/* + * Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. + * + * Licensed 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. + */ + +namespace WinRTBarcodeReader +{ + using System; + using System.Threading; + using System.Threading.Tasks; + + using Windows.Foundation; + using Windows.Media.Capture; + using Windows.Media.MediaProperties; + using Windows.Storage.Streams; + + using ZXing; + + /// + /// Defines the Reader type, that perform barcode search asynchronously. + /// + public sealed class Reader + { + #region Private fields + + /// + /// MediaCapture instance, used for barcode search. + /// + private readonly MediaCapture capture; + + /// + /// Encoding properties for mediaCapture object. + /// + private readonly ImageEncodingProperties encodingProps; + + /// + /// Image stream for MediaCapture content. + /// + private InMemoryRandomAccessStream imageStream; + + /// + /// Data reader, used to create bitmap array. + /// + private DataReader datareader; + + /// + /// Flag that indicates successful barcode search. + /// + private bool barcodeFound; + + /// + /// The cancel search flag. + /// + private CancellationTokenSource cancelSearch; + + #endregion + + #region Constructor + + /// + /// Initializes a new instance of the class. + /// + /// MediaCapture instance. + /// Capture frame width. + /// Capture frame height. + public Reader(MediaCapture capture, uint width, uint height) + { + this.capture = capture; + this.encodingProps = new ImageEncodingProperties { Subtype = "BMP", Width = width, Height = height}; + this.barcodeFound = false; + this.cancelSearch = new CancellationTokenSource(); + } + + #endregion + + #region Public methods + + /// + /// Perform async MediaCapture analysis and searches for barcode. + /// + /// IAsyncOperation object + public IAsyncOperation ReadCode() + { + return this.Read().AsAsyncOperation(); + } + + /// + /// Send signal to stop barcode search. + /// + public void Stop() + { + this.cancelSearch.Cancel(); + } + + #endregion + + #region Private methods + + /// + /// Perform async MediaCapture analysis and searches for barcode. + /// + /// Task object + private async Task Read() + { + Result result = null; + while (!this.barcodeFound) + { + try + { + result = await this.GetCameraImage(this.cancelSearch.Token); + } + catch (OperationCanceledException) + { + result = null; + } + } + + return result; + } + + /// + /// Perform image capture from mediaCapture object + /// + /// + /// The cancel Token. + /// + /// + /// Decoded barcode string. + /// + private async Task GetCameraImage(CancellationToken cancelToken) + { + Result result = null; + await Task.Run( + async () => + { + this.imageStream = new InMemoryRandomAccessStream(); + await this.capture.CapturePhotoToStreamAsync(this.encodingProps, this.imageStream); + await this.imageStream.FlushAsync(); + + this.datareader = new DataReader(this.imageStream); + await this.datareader.LoadAsync((uint)this.imageStream.Size); + var bitmap = new byte[this.encodingProps.Width * this.encodingProps.Height * 4]; + uint index = 0; + while (this.datareader.UnconsumedBufferLength > 0) + { + bitmap[index] = datareader.ReadByte(); + index++; + } + + result = await this.DecodeBitmap(bitmap); + + if (result != null) + { + this.barcodeFound = true; + } + }, + cancelToken).ConfigureAwait(false); + return result; + } + + /// + /// Searches the bitmap for barcode. + /// + /// Array of bytes, represents bitmap + /// Bitmap format, default is BGRA32 + /// String, encoded with barcode or empty string if barcode not found + private async Task DecodeBitmap(byte[] bitmap, BitmapFormat format = BitmapFormat.BGRA32) + { + Result result = null; + try + { + await Task.Run( + () => + { + var c = new BarcodeReader(); + result = c.Decode( + bitmap, + (int)this.encodingProps.Width, + (int)this.encodingProps.Height, + format); + }).ConfigureAwait(false); + } + catch (Exception) + { + } + + return result; + } + + #endregion + } +} diff --git a/cordova/plugins/com.phonegap.plugins.barcodescanner/src/windows8/lib/WinRTBarcodeReader/WinRTBarcodeReader/WinRTBarcodeReader.csproj b/cordova/plugins/com.phonegap.plugins.barcodescanner/src/windows8/lib/WinRTBarcodeReader/WinRTBarcodeReader/WinRTBarcodeReader.csproj new file mode 100644 index 0000000..1c54a1b --- /dev/null +++ b/cordova/plugins/com.phonegap.plugins.barcodescanner/src/windows8/lib/WinRTBarcodeReader/WinRTBarcodeReader/WinRTBarcodeReader.csproj @@ -0,0 +1,133 @@ + + + + + + Debug + AnyCPU + 8.0.30703 + 2.0 + {01412F36-3781-4AF0-903C-ACEA7552C99C} + winmdobj + Properties + WinRTBarcodeReader + WinRTBarcodeReader + en-US + 512 + {BC8A1FFA-BEE3-4634-8014-F334798102B3};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + + + true + full + false + bin\Debug\ + DEBUG;TRACE;NETFX_CORE + prompt + 4 + + + false + None + true + bin\Release\ + TRACE;NETFX_CORE + prompt + 4 + + + true + bin\ARM\Debug\ + DEBUG;TRACE;NETFX_CORE + ;2008 + full + ARM + false + prompt + true + + + bin\ARM\Release\ + TRACE;NETFX_CORE + true + ;2008 + false + None + ARM + false + prompt + true + + + true + bin\x64\Debug\ + DEBUG;TRACE;NETFX_CORE + ;2008 + full + x64 + false + prompt + true + + + bin\x64\Release\ + TRACE;NETFX_CORE + true + ;2008 + false + None + x64 + false + prompt + true + + + true + bin\x86\Debug\ + DEBUG;TRACE;NETFX_CORE + ;2008 + full + x86 + false + prompt + true + + + bin\x86\Release\ + TRACE;NETFX_CORE + true + ;2008 + false + None + x86 + false + prompt + true + + + + + + + + ..\..\ZXing.winmd + + + + 11.0 + + + + \ No newline at end of file diff --git a/cordova/plugins/com.phonegap.plugins.barcodescanner/src/windows8/lib/ZXing.winmd b/cordova/plugins/com.phonegap.plugins.barcodescanner/src/windows8/lib/ZXing.winmd new file mode 100644 index 0000000000000000000000000000000000000000..ea21bd7a28152c9b53f8a96b6b60dd371b5b71b2 GIT binary patch literal 446464 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 z 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

w=@HOrR2nljX;-JR5- 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�mc++r-h}x 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 z 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�PA+^PHTy^+S+XGu!^nktysIVUCU0k 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

&nAl{IQAMEYm~9og=%`d?kr`7y!QLc$ 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 a|M} + /// Class that extends cordova with Barcode scanner functionality. + /// + public class BarcodeScanner : BaseCommand + { + ///

+ /// Scans the barcode. + /// + /// Parameter is ignored. + public void scan(string options) + { + var task = new BarcodeScannerTask(); + task.Completed += this.TaskCompleted; + task.Show(); + } + + /// + /// Handler for barcode scanner task. + /// + /// The sender. + /// The scan result. + private void TaskCompleted(object sender, BarcodeScannerTask.ScanResult e) + { + PluginResult result; + + switch (e.TaskResult) + { + case TaskResult.OK: + result = new PluginResult(PluginResult.Status.OK); + result.Message = JsonHelper.Serialize(new BarcodeResult(e.Barcode)); + break; + case TaskResult.Cancel: + // If scan is cancelled we return PluginResult.Status.OK with Message contains cancelled: true + // See plugin docs https://github.com/MSOpenTech/BarcodeScanner#using-the-plugin + result = new PluginResult(PluginResult.Status.OK); + result.Message = JsonHelper.Serialize(new BarcodeResult()); + break; + default: + result = new PluginResult(PluginResult.Status.ERROR); + break; + } + + this.DispatchCommandResult(result); + } + } + + /// + /// Represents the barcode scan result, that should be serialized and passed to JS layer. + /// + [DataContract] + public sealed class BarcodeResult + { + /// + /// Initializes a new instance of the class. + /// + /// if set to true [canceled]. + public BarcodeResult(bool canceled = true) + { + this.Cancelled = canceled; + } + + /// + /// Initializes a new instance of the class. + /// + /// The barcode result. + public BarcodeResult(Result barcode) + { + this.Cancelled = false; + this.Format = (int)barcode.BarcodeFormat; + this.Text = barcode.Text; + } + + /// + /// Gets a value indicating whether barcode scan is cancelled. + /// + /// + /// true if cancelled; otherwise, false. + /// + [DataMember(Name = "cancelled")] + public bool Cancelled { get; private set; } + + /// + /// Gets the format of barcode. + /// + /// + /// The barcode format. + /// + [DataMember(Name = "format")] + public int Format { get; private set; } + + /// + /// Gets the barcode text. + /// + /// + /// The barcode text. + /// + [DataMember(Name = "text")] + public string Text { get; private set; } + } +} diff --git a/cordova/plugins/com.phonegap.plugins.barcodescanner/src/wp8/BarcodeScannerTask.cs b/cordova/plugins/com.phonegap.plugins.barcodescanner/src/wp8/BarcodeScannerTask.cs new file mode 100644 index 0000000..f977a43 --- /dev/null +++ b/cordova/plugins/com.phonegap.plugins.barcodescanner/src/wp8/BarcodeScannerTask.cs @@ -0,0 +1,103 @@ +/* + * Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. + * + * Licensed 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. + */ + +namespace WPCordovaClassLib.Cordova.Commands +{ + using System; + using System.Windows; + using System.Windows.Navigation; + + using Microsoft.Phone.Controls; + using Microsoft.Phone.Tasks; + using ZXing; + + /// + /// Class that represents barcode scanner task that mimics standart WP8 tasks. + /// + public class BarcodeScannerTask + { + /// + /// Occurs when task is [completed]. + /// + public event EventHandler Completed; + + /// + /// Shows barcode scanner interface. + /// + public void Show() + { + Deployment.Current.Dispatcher.BeginInvoke(() => + { + var root = Application.Current.RootVisual as PhoneApplicationFrame; + + if (root == null) + { + return; + } + + root.Navigated += this.OnNavigated; + root.Navigate(new Uri("/Plugins/com.phonegap.plugins.barcodescanner/BarcodeScannerUI.xaml", UriKind.Relative)); + }); + } + + /// + /// Called when [navigated]. + /// + /// The sender. + /// The instance containing the event data. + private void OnNavigated(object sender, NavigationEventArgs e) + { + if (!(e.Content is BarcodeScannerUI)) + { + return; + } + + var phoneApplicationFrame = Application.Current.RootVisual as PhoneApplicationFrame; + if (phoneApplicationFrame != null) + { + phoneApplicationFrame.Navigated -= this.OnNavigated; + } + + var barcodeScanner = (BarcodeScannerUI)e.Content; + + if (barcodeScanner != null) + { + barcodeScanner.Completed += this.Completed; + } + else if (this.Completed != null) + { + this.Completed(this, new ScanResult(TaskResult.Cancel)); + } + } + + /// + /// Represents barcode scan result. + /// + public class ScanResult : TaskEventArgs + { + /// + /// Initializes a new instance of the class. + /// + /// One of the enumeration values that specifies the status of the task. + public ScanResult(TaskResult taskResult) + : base(taskResult) + { + } + + /// + /// Gets the barcode scan result. + /// + /// + /// The barcode scan result. + /// + public Result Barcode { get; internal set; } + } + } +} diff --git a/cordova/plugins/com.phonegap.plugins.barcodescanner/src/wp8/BarcodeScannerUI.xaml b/cordova/plugins/com.phonegap.plugins.barcodescanner/src/wp8/BarcodeScannerUI.xaml new file mode 100644 index 0000000..866b1a8 --- /dev/null +++ b/cordova/plugins/com.phonegap.plugins.barcodescanner/src/wp8/BarcodeScannerUI.xaml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/cordova/plugins/com.phonegap.plugins.barcodescanner/src/wp8/BarcodeScannerUI.xaml.cs b/cordova/plugins/com.phonegap.plugins.barcodescanner/src/wp8/BarcodeScannerUI.xaml.cs new file mode 100644 index 0000000..7f62e9e --- /dev/null +++ b/cordova/plugins/com.phonegap.plugins.barcodescanner/src/wp8/BarcodeScannerUI.xaml.cs @@ -0,0 +1,143 @@ +/* + * Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. + * + * Licensed 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. + */ + +namespace WPCordovaClassLib.Cordova.Commands +{ + using System; + using System.Windows; + using System.Windows.Media.Imaging; + using System.Windows.Navigation; + + using Microsoft.Devices; + using Microsoft.Phone.Controls; + using Microsoft.Phone.Tasks; + + using ZXing; + + /// + /// Class that represents UI for barcode scanner. + /// + public partial class BarcodeScannerUI + { + /// + /// The result of scan operation. + /// + private BarcodeScannerTask.ScanResult result; + + /// + /// The barcode reader object + /// + private BarcodeReader reader; + + /// + /// Device camera object + /// + private PhotoCamera camera; + + /// + /// Initializes a new instance of the class. + /// This implementation not use camera autofocus. + /// + public BarcodeScannerUI() + { + this.InitializeComponent(); + + // Instantiate objects and start camera preview + this.camera = new PhotoCamera(); + this.reader = new BarcodeReader {Options = {TryHarder = true}}; + this.CameraBrush.SetSource(this.camera); + + // Bind events + this.camera.Initialized += this.CameraInitialized; + this.reader.ResultFound += this.ReaderResultFound; + } + + /// + /// Occurs when barcode scan is [completed]. + /// + public event EventHandler Completed; + + /// + /// Called when a page is no longer the active page in a frame. + /// + /// An object that contains the event data. + protected override void OnNavigatedFrom(NavigationEventArgs e) + { + // If result is null, user is cancelled scan operation + this.result = this.result ?? new BarcodeScannerTask.ScanResult(TaskResult.Cancel); + this.Completed(this, this.result); + this.CleanUp(); + base.OnNavigatedFrom(e); + } + + /// + /// Called when device camera initialized. + /// + /// The sender. + /// The instance containing the event data. + private void CameraInitialized(object sender, CameraOperationCompletedEventArgs e) + { + if (e.Succeeded) + { + // Start scan process in separate thread + Deployment.Current.Dispatcher.BeginInvoke( + () => + { + while (result == null) + { + var cameraBuffer = new WriteableBitmap( + (int)camera.PreviewResolution.Width, + (int)camera.PreviewResolution.Height); + + camera.GetPreviewBufferArgb32(cameraBuffer.Pixels); + cameraBuffer.Invalidate(); + + reader.Decode(cameraBuffer); + } + }); + } + else + { + this.result = new BarcodeScannerTask.ScanResult(TaskResult.None); + NavigationService.GoBack(); + } + } + + /// + /// Called when reader find barcode. + /// + /// Scan result object. + private void ReaderResultFound(Result obj) + { + VibrateController.Default.Start(TimeSpan.FromMilliseconds(100)); + this.result = new BarcodeScannerTask.ScanResult(TaskResult.OK) { Barcode = obj }; + NavigationService.GoBack(); + } + + /// + /// Cleans up resources and removes unnecessary callbacks. + /// + private void CleanUp() + { + if (this.camera != null) + { + this.camera.Initialized -= this.CameraInitialized; + this.camera.Dispose(); + this.camera = null; + } + + if (this.reader != null) + { + this.reader.ResultFound -= this.ReaderResultFound; + this.reader = null; + } + } + } +} \ No newline at end of file diff --git a/cordova/plugins/com.phonegap.plugins.barcodescanner/src/wp8/lib/zxing.wp8.0.dll b/cordova/plugins/com.phonegap.plugins.barcodescanner/src/wp8/lib/zxing.wp8.0.dll new file mode 100644 index 0000000000000000000000000000000000000000..c6f294ae45d48bd7b6c7917d2a2ea8ed3602f7d0 GIT binary patch literal 432640 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≥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¨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 beE;", "count": 1 }, - { - "xml": "", - "count": 1 - }, { "xml": "", "count": 1 @@ -43,6 +39,10 @@ { "xml": "", "count": 1 + }, + { + "xml": "", + "count": 1 } ], "/widget": [] @@ -95,9 +95,6 @@ "org.apache.cordova.statusbar": { "PACKAGE_NAME": "com.hivewallet.app" }, - "com.phonegap.plugins.barcodescanner": { - "PACKAGE_NAME": "com.hivewallet.app" - }, "org.apache.cordova.device": { "PACKAGE_NAME": "com.hivewallet.app" }, @@ -112,6 +109,9 @@ }, "org.apache.cordova.splashscreen": { "PACKAGE_NAME": "com.hivewallet.Hive.iOS" + }, + "com.phonegap.plugins.barcodescanner": { + "PACKAGE_NAME": "com.hivewallet.Hive.iOS" } }, "dependent_plugins": {} From 5659b002d5d32a9f8c5faed7dc1e34126c1b925f Mon Sep 17 00:00:00 2001 From: shannon code Date: Mon, 22 Dec 2014 11:53:51 -0500 Subject: [PATCH 3/3] update readme to reference this branch --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 1379747..49325b3 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,8 @@ hive-ios Phonegapped version of [hive-js](https://github.com/hivewallet/hive-js/) +Phonegap v3.6.3 + ## Development ### Requirement