diff --git a/Podfile.lock b/Podfile.lock index e0ae6e9..be4ddf5 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -71,7 +71,7 @@ CHECKOUT OPTIONS: :git: https://github.com/Gkpsundar/SocketRocket.git SPEC CHECKSUMS: - AFNetworking: b6f891fdfaed196b46c7a83cf209e09697b94057 + AFNetworking: cb604b1c2bded0871f5f61f5d53653739e841d6b CocoaLumberjack: db7cc9e464771f12054c22ff6947c5a58d43a0fd FFmpeg-static: f61924a6708db56927f6ed9e744848c1697301e3 GPUImage: 733a5f0fab92df9de1c37ba9df520a833ccb406d @@ -79,6 +79,6 @@ SPEC CHECKSUMS: Romo: 4fccb6b3e8e1af1b50cae0e7d1ce22a3c50c91c4 SocketRocket: dbb1554b8fc288ef8ef370d6285aeca7361be31e -PODFILE CHECKSUM: dae751e0da5fc6282d858b88258c4a1dd421d705 +PODFILE CHECKSUM: 46d3e6fb245193dcbc67c2c80e4899133c984234 -COCOAPODS: 1.11.3 +COCOAPODS: 1.15.2 diff --git a/Romo Control/Supporting Files/RMControl-Info.plist b/Romo Control/Supporting Files/RMControl-Info.plist index 39795ce..cdb126d 100644 --- a/Romo Control/Supporting Files/RMControl-Info.plist +++ b/Romo Control/Supporting Files/RMControl-Info.plist @@ -48,9 +48,9 @@ NSMicrophoneUsageDescription For two-way communication between Romo and this app NSPhotoLibraryAddUsageDescription - Romo Control needs to store pictures taken with Romo + Allow saving photos to your library NSPhotoLibraryUsageDescription - Allow saving photos to library + Allow saving photos to your library UIAppFonts Brandon-Bold.otf diff --git a/Romo Control/src/Controller/RMWiFiDriveRemoteVC.m b/Romo Control/src/Controller/RMWiFiDriveRemoteVC.m index 7f9eaa5..1f04ab3 100644 --- a/Romo Control/src/Controller/RMWiFiDriveRemoteVC.m +++ b/Romo Control/src/Controller/RMWiFiDriveRemoteVC.m @@ -26,6 +26,7 @@ #import "RMControlInputMenu.h" #import #import "RMGameController.h" +#import @interface RMWiFiDriveRemoteVC () { @@ -351,6 +352,10 @@ - (void)didTouchBackButton:(UIButton *)backButton - (void)didTouchPhotosButton:(id)sender { [self dismissPopovers]; + + [PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status) { + [self handlePhotoAuthorizationStatus:status]; + }]; RMRemotePhotoVC *photoVC = [[RMRemotePhotoVC alloc] init]; photoVC.photos = self.capturedPhotos; @@ -359,6 +364,23 @@ - (void)didTouchPhotosButton:(id)sender [self presentViewController:photoVC animated:YES completion:nil]; } +- (void)handlePhotoAuthorizationStatus:(PHAuthorizationStatus)status { + switch (status) { + case PHAuthorizationStatusAuthorized: + // Access has been granted. + break; + case PHAuthorizationStatusDenied: + case PHAuthorizationStatusRestricted: + // Access has been denied or restricted. + break; + case PHAuthorizationStatusNotDetermined: + // The user hasn't decided yet; we could prompt again. + break; + default: + break; + } +} + - (void)handlePhotoVCDismissButtonTouch:(UIButton *)button { [self dismissViewControllerAnimated:YES completion:nil]; diff --git a/Romo.xcodeproj/project.pbxproj b/Romo.xcodeproj/project.pbxproj index 4a8c5f1..1d22479 100644 --- a/Romo.xcodeproj/project.pbxproj +++ b/Romo.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 52; + objectVersion = 54; objects = { /* Begin PBXBuildFile section */ @@ -3416,7 +3416,6 @@ ORGANIZATIONNAME = Romotive; TargetAttributes = { 7130FD2517C42BAD0025B605 = { - DevelopmentTeam = 52RU2XXUH6; ProvisioningStyle = Automatic; SystemCapabilities = { com.apple.InAppPurchase = { @@ -3426,7 +3425,6 @@ }; AF8EF18621CD649D0025F16B = { CreatedOnToolsVersion = 10.1; - DevelopmentTeam = 52RU2XXUH6; ProvisioningStyle = Automatic; }; }; @@ -4495,8 +4493,8 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; COMPRESS_PNG_FILES = NO; - CURRENT_PROJECT_VERSION = 2.3.4; - DEVELOPMENT_TEAM = 52RU2XXUH6; + CURRENT_PROJECT_VERSION = 2.3.10; + DEVELOPMENT_TEAM = QQAZR43YM7; FRAMEWORK_SEARCH_PATHS = "$(inherited)"; GCC_PREFIX_HEADER = "Romo Control/Supporting Files/RMControl-Prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( @@ -4512,7 +4510,7 @@ "\"$SRCROOT/lib/Drive/RomoAV/AVCEncoder\"", ); INFOPLIST_FILE = "$(SRCROOT)/Romo Control/Supporting Files/RMControl-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = ( "@executable_path/Frameworks", "$(inherited)", @@ -4549,8 +4547,8 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; COMPRESS_PNG_FILES = NO; - CURRENT_PROJECT_VERSION = 2.3.4; - DEVELOPMENT_TEAM = 52RU2XXUH6; + CURRENT_PROJECT_VERSION = 2.3.10; + DEVELOPMENT_TEAM = QQAZR43YM7; ENABLE_NS_ASSERTIONS = NO; FRAMEWORK_SEARCH_PATHS = "$(inherited)"; GCC_PREFIX_HEADER = "Romo Control/Supporting Files/RMControl-Prefix.pch"; @@ -4567,7 +4565,7 @@ "\"$SRCROOT/lib/Drive/RomoAV/AVCEncoder\"", ); INFOPLIST_FILE = "$(SRCROOT)/Romo Control/Supporting Files/RMControl-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = ( "@executable_path/Frameworks", "$(inherited)", @@ -4661,9 +4659,9 @@ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2.3.4; + CURRENT_PROJECT_VERSION = 2.5.1; DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = 52RU2XXUH6; + DEVELOPMENT_TEAM = QQAZR43YM7; FRAMEWORK_SEARCH_PATHS = "$(inherited)"; GCC_PREFIX_HEADER = "Supporting Files/Romo-Prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( @@ -4687,6 +4685,7 @@ "\"$(SRCROOT)/lib/ext/h264bitstream\"", ); INFOPLIST_FILE = "Supporting Files/Romo-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -4696,7 +4695,7 @@ "$(PROJECT_DIR)/lib/ext/libav", "$(PROJECT_DIR)/lib/ext/mobile-ffmpeg/lib", ); - MARKETING_VERSION = 2.3; + MARKETING_VERSION = 2.5; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = com.navideck.romoSimulated; @@ -4720,8 +4719,8 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; COMPRESS_PNG_FILES = NO; - CURRENT_PROJECT_VERSION = 2.3.4; - DEVELOPMENT_TEAM = 52RU2XXUH6; + CURRENT_PROJECT_VERSION = 2.3.10; + DEVELOPMENT_TEAM = QQAZR43YM7; FRAMEWORK_SEARCH_PATHS = "$(inherited)"; GCC_PREFIX_HEADER = "Romo Control/Supporting Files/RMControl-Prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( @@ -4737,7 +4736,7 @@ "\"$SRCROOT/lib/Drive/RomoAV/AVCEncoder\"", ); INFOPLIST_FILE = "$(SRCROOT)/Romo Control/Supporting Files/RMControl-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = ( "@executable_path/Frameworks", "$(inherited)", @@ -4775,9 +4774,9 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_ENTITLEMENTS = Romo.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2.3.4; + CURRENT_PROJECT_VERSION = 2.5.1; DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = 52RU2XXUH6; + DEVELOPMENT_TEAM = QQAZR43YM7; FRAMEWORK_SEARCH_PATHS = "$(inherited)"; GCC_PREFIX_HEADER = "Supporting Files/Romo-Prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( @@ -4801,6 +4800,7 @@ "\"$(SRCROOT)/lib/ext/h264bitstream\"", ); INFOPLIST_FILE = "Supporting Files/Romo-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -4810,7 +4810,7 @@ "$(PROJECT_DIR)/lib/ext/libav", "$(PROJECT_DIR)/lib/ext/mobile-ffmpeg/lib", ); - MARKETING_VERSION = 2.3; + MARKETING_VERSION = 2.5; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = com.romotive.romo; @@ -4837,9 +4837,9 @@ CODE_SIGN_IDENTITY = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 2.3.4; + CURRENT_PROJECT_VERSION = 2.5.1; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEVELOPMENT_TEAM = 52RU2XXUH6; + DEVELOPMENT_TEAM = QQAZR43YM7; ENABLE_NS_ASSERTIONS = NO; FRAMEWORK_SEARCH_PATHS = "$(inherited)"; GCC_PREFIX_HEADER = "Supporting Files/Romo-Prefix.pch"; @@ -4860,6 +4860,7 @@ "\"$(SRCROOT)/lib/ext/h264bitstream\"", ); INFOPLIST_FILE = "Supporting Files/Romo-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -4869,7 +4870,7 @@ "$(PROJECT_DIR)/lib/ext/libav", "$(PROJECT_DIR)/lib/ext/mobile-ffmpeg/lib", ); - MARKETING_VERSION = 2.3; + MARKETING_VERSION = 2.5; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = com.navideck.RomoX; diff --git a/Supporting Files/Romo-Info.plist b/Supporting Files/Romo-Info.plist index c8972c4..9d2694a 100644 --- a/Supporting Files/Romo-Info.plist +++ b/Supporting Files/Romo-Info.plist @@ -46,6 +46,8 @@ Make your Romo discoverable on your network NSMicrophoneUsageDescription For two-way communication between Romo and the Romo Control App + NSPhotoLibraryAddUsageDescription + Allow saving photos to your library NSPhotoLibraryUsageDescription Allow saving photos to your library UIAppFonts diff --git a/src/Missions/Editor/Compiling/RMCompilingVC.m b/src/Missions/Editor/Compiling/RMCompilingVC.m index fa3c46e..076ca58 100644 --- a/src/Missions/Editor/Compiling/RMCompilingVC.m +++ b/src/Missions/Editor/Compiling/RMCompilingVC.m @@ -16,7 +16,7 @@ #import "RMParameter.h" #import "RMSoundEffect.h" #import "RMAlertView.h" -#import +//#import #define compileStepCount 3 #define kNumCompilingSounds 8 @@ -94,15 +94,6 @@ - (void)compile case 1: { self.progress = 0.55 + (float)(arc4random() % 15)/100.0; self.titleLabel.text = NSLocalizedString(@"Compile-Stage-2", @"Compiling..."); - - if (self.missionNeedsToSavePhotos) { - if (!self.hasPermissionToSavePhotos) { - [[[RMAlertView alloc] initWithTitle:NSLocalizedString(@"Compile-PhotoPerms-Alert-Title", @"Photo Permission Needed") - message:NSLocalizedString(@"Compile-PhotoPerms-Alert-Message", @"For Romo to take photos and videos, allow access to your Photo Library.\n\nOpen the Settings app > Privacy > Photos.\n\nThen enable access for Romo.") - delegate:self] show]; - return; - } - } break; } @@ -148,22 +139,22 @@ - (void)alertViewDidDismiss:(RMAlertView *)alertView [self.delegate compilingVCDidFailToCompile:self]; } -#pragma mark - Private Properties - -- (BOOL)missionNeedsToSavePhotos -{ - __block BOOL hasCameraAction = NO; - [self.mission.inputScripts enumerateObjectsUsingBlock:^(NSArray *script, NSUInteger idx, BOOL *stop) { - [script enumerateObjectsUsingBlock:^(RMAction *action, NSUInteger idx, BOOL *scriptStop) { - if ([action.library isEqualToString:@"Camera"]) { - hasCameraAction = YES; - *stop = YES; - *scriptStop = YES; - } - }]; - }]; - return hasCameraAction; -} +//#pragma mark - Private Properties + +//- (BOOL)missionNeedsToSavePhotos +//{ +// __block BOOL hasCameraAction = NO; +// [self.mission.inputScripts enumerateObjectsUsingBlock:^(NSArray *script, NSUInteger idx, BOOL *stop) { +// [script enumerateObjectsUsingBlock:^(RMAction *action, NSUInteger idx, BOOL *scriptStop) { +// if ([action.library isEqualToString:@"Camera"]) { +// hasCameraAction = YES; +// *stop = YES; +// *scriptStop = YES; +// } +// }]; +// }]; +// return hasCameraAction; +//} - (BOOL)missionNeedsMicrophone { @@ -177,16 +168,6 @@ - (BOOL)missionNeedsMicrophone return hasLoudSoundEvent; } -- (BOOL)hasPermissionToSavePhotos -{ - if (@available(iOS 8, *)) { - return [PHPhotoLibrary authorizationStatus] == PHAuthorizationStatusAuthorized; - } else { - return [ALAssetsLibrary authorizationStatus] == ALAuthorizationStatusAuthorized; - } - -} - - (BOOL)hasMicrophonePermission { // Older versions of iOS don't require permission to access the microphone