From daa14752eae5b0bb0e0deeb022aa819c604a12eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ce=CC=81dric=20Luthi?= Date: Thu, 2 May 2013 09:32:13 +0200 Subject: [PATCH 01/37] Initial commit --- .../project.pbxproj | 319 ++++++++++++++++++ .../contents.xcworkspacedata | 7 + YouTube Video Player Demo/AppDelegate.h | 19 ++ YouTube Video Player Demo/AppDelegate.m | 56 +++ YouTube Video Player Demo/Default-568h@2x.png | Bin 0 -> 18594 bytes YouTube Video Player Demo/Default.png | Bin 0 -> 6540 bytes YouTube Video Player Demo/Default@2x.png | Bin 0 -> 16107 bytes YouTube Video Player Demo/ViewController.h | 13 + YouTube Video Player Demo/ViewController.m | 29 ++ .../YouTube Video Player Demo-Info.plist | 45 +++ .../YouTube Video Player Demo-Prefix.pch | 14 + .../en.lproj/InfoPlist.strings | 2 + .../en.lproj/ViewController_iPad.xib | 121 +++++++ .../en.lproj/ViewController_iPhone.xib | 138 ++++++++ YouTube Video Player Demo/main.m | 18 + 15 files changed, 781 insertions(+) create mode 100644 YouTube Video Player Demo.xcodeproj/project.pbxproj create mode 100644 YouTube Video Player Demo.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 YouTube Video Player Demo/AppDelegate.h create mode 100644 YouTube Video Player Demo/AppDelegate.m create mode 100644 YouTube Video Player Demo/Default-568h@2x.png create mode 100644 YouTube Video Player Demo/Default.png create mode 100644 YouTube Video Player Demo/Default@2x.png create mode 100644 YouTube Video Player Demo/ViewController.h create mode 100644 YouTube Video Player Demo/ViewController.m create mode 100644 YouTube Video Player Demo/YouTube Video Player Demo-Info.plist create mode 100644 YouTube Video Player Demo/YouTube Video Player Demo-Prefix.pch create mode 100644 YouTube Video Player Demo/en.lproj/InfoPlist.strings create mode 100644 YouTube Video Player Demo/en.lproj/ViewController_iPad.xib create mode 100644 YouTube Video Player Demo/en.lproj/ViewController_iPhone.xib create mode 100644 YouTube Video Player Demo/main.m diff --git a/YouTube Video Player Demo.xcodeproj/project.pbxproj b/YouTube Video Player Demo.xcodeproj/project.pbxproj new file mode 100644 index 000000000..df3c4e557 --- /dev/null +++ b/YouTube Video Player Demo.xcodeproj/project.pbxproj @@ -0,0 +1,319 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + C29CC80D17324DD400581C7C /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C29CC80C17324DD400581C7C /* UIKit.framework */; }; + C29CC80F17324DD400581C7C /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C29CC80E17324DD400581C7C /* Foundation.framework */; }; + C29CC81117324DD400581C7C /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C29CC81017324DD400581C7C /* CoreGraphics.framework */; }; + C29CC81717324DD400581C7C /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = C29CC81517324DD400581C7C /* InfoPlist.strings */; }; + C29CC81917324DD400581C7C /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = C29CC81817324DD400581C7C /* main.m */; }; + C29CC81D17324DD400581C7C /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = C29CC81C17324DD400581C7C /* AppDelegate.m */; }; + C29CC81F17324DD400581C7C /* Default.png in Resources */ = {isa = PBXBuildFile; fileRef = C29CC81E17324DD400581C7C /* Default.png */; }; + C29CC82117324DD500581C7C /* Default@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = C29CC82017324DD500581C7C /* Default@2x.png */; }; + C29CC82317324DD500581C7C /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = C29CC82217324DD500581C7C /* Default-568h@2x.png */; }; + C29CC82617324DD500581C7C /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = C29CC82517324DD500581C7C /* ViewController.m */; }; + C29CC82917324DD500581C7C /* ViewController_iPhone.xib in Resources */ = {isa = PBXBuildFile; fileRef = C29CC82717324DD500581C7C /* ViewController_iPhone.xib */; }; + C29CC82C17324DD500581C7C /* ViewController_iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = C29CC82A17324DD500581C7C /* ViewController_iPad.xib */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + C29CC80917324DD400581C7C /* YouTube Video Player Demo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "YouTube Video Player Demo.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + C29CC80C17324DD400581C7C /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; + C29CC80E17324DD400581C7C /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + C29CC81017324DD400581C7C /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; + C29CC81417324DD400581C7C /* YouTube Video Player Demo-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "YouTube Video Player Demo-Info.plist"; sourceTree = ""; }; + C29CC81617324DD400581C7C /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; + C29CC81817324DD400581C7C /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + C29CC81A17324DD400581C7C /* YouTube Video Player Demo-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "YouTube Video Player Demo-Prefix.pch"; sourceTree = ""; }; + C29CC81B17324DD400581C7C /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; + C29CC81C17324DD400581C7C /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; + C29CC81E17324DD400581C7C /* Default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Default.png; sourceTree = ""; }; + C29CC82017324DD500581C7C /* Default@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default@2x.png"; sourceTree = ""; }; + C29CC82217324DD500581C7C /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-568h@2x.png"; sourceTree = ""; }; + C29CC82417324DD500581C7C /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = ""; }; + C29CC82517324DD500581C7C /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = ""; }; + C29CC82817324DD500581C7C /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/ViewController_iPhone.xib; sourceTree = ""; }; + C29CC82B17324DD500581C7C /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/ViewController_iPad.xib; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + C29CC80617324DD400581C7C /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + C29CC80D17324DD400581C7C /* UIKit.framework in Frameworks */, + C29CC80F17324DD400581C7C /* Foundation.framework in Frameworks */, + C29CC81117324DD400581C7C /* CoreGraphics.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + C29CC80017324DD400581C7C = { + isa = PBXGroup; + children = ( + C29CC81217324DD400581C7C /* YouTube Video Player Demo */, + C29CC80B17324DD400581C7C /* Frameworks */, + C29CC80A17324DD400581C7C /* Products */, + ); + sourceTree = ""; + }; + C29CC80A17324DD400581C7C /* Products */ = { + isa = PBXGroup; + children = ( + C29CC80917324DD400581C7C /* YouTube Video Player Demo.app */, + ); + name = Products; + sourceTree = ""; + }; + C29CC80B17324DD400581C7C /* Frameworks */ = { + isa = PBXGroup; + children = ( + C29CC80C17324DD400581C7C /* UIKit.framework */, + C29CC80E17324DD400581C7C /* Foundation.framework */, + C29CC81017324DD400581C7C /* CoreGraphics.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + C29CC81217324DD400581C7C /* YouTube Video Player Demo */ = { + isa = PBXGroup; + children = ( + C29CC81B17324DD400581C7C /* AppDelegate.h */, + C29CC81C17324DD400581C7C /* AppDelegate.m */, + C29CC82417324DD500581C7C /* ViewController.h */, + C29CC82517324DD500581C7C /* ViewController.m */, + C29CC82717324DD500581C7C /* ViewController_iPhone.xib */, + C29CC82A17324DD500581C7C /* ViewController_iPad.xib */, + C29CC81317324DD400581C7C /* Supporting Files */, + ); + path = "YouTube Video Player Demo"; + sourceTree = ""; + }; + C29CC81317324DD400581C7C /* Supporting Files */ = { + isa = PBXGroup; + children = ( + C29CC81417324DD400581C7C /* YouTube Video Player Demo-Info.plist */, + C29CC81517324DD400581C7C /* InfoPlist.strings */, + C29CC81817324DD400581C7C /* main.m */, + C29CC81A17324DD400581C7C /* YouTube Video Player Demo-Prefix.pch */, + C29CC81E17324DD400581C7C /* Default.png */, + C29CC82017324DD500581C7C /* Default@2x.png */, + C29CC82217324DD500581C7C /* Default-568h@2x.png */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + C29CC80817324DD400581C7C /* YouTube Video Player Demo */ = { + isa = PBXNativeTarget; + buildConfigurationList = C29CC82F17324DD500581C7C /* Build configuration list for PBXNativeTarget "YouTube Video Player Demo" */; + buildPhases = ( + C29CC80517324DD400581C7C /* Sources */, + C29CC80617324DD400581C7C /* Frameworks */, + C29CC80717324DD400581C7C /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "YouTube Video Player Demo"; + productName = "YouTube Video Player Demo"; + productReference = C29CC80917324DD400581C7C /* YouTube Video Player Demo.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + C29CC80117324DD400581C7C /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0460; + ORGANIZATIONNAME = "Cédric Luthi"; + }; + buildConfigurationList = C29CC80417324DD400581C7C /* Build configuration list for PBXProject "YouTube Video Player Demo" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = C29CC80017324DD400581C7C; + productRefGroup = C29CC80A17324DD400581C7C /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + C29CC80817324DD400581C7C /* YouTube Video Player Demo */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + C29CC80717324DD400581C7C /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + C29CC81717324DD400581C7C /* InfoPlist.strings in Resources */, + C29CC81F17324DD400581C7C /* Default.png in Resources */, + C29CC82117324DD500581C7C /* Default@2x.png in Resources */, + C29CC82317324DD500581C7C /* Default-568h@2x.png in Resources */, + C29CC82917324DD500581C7C /* ViewController_iPhone.xib in Resources */, + C29CC82C17324DD500581C7C /* ViewController_iPad.xib in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + C29CC80517324DD400581C7C /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + C29CC81917324DD400581C7C /* main.m in Sources */, + C29CC81D17324DD400581C7C /* AppDelegate.m in Sources */, + C29CC82617324DD500581C7C /* ViewController.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + C29CC81517324DD400581C7C /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + C29CC81617324DD400581C7C /* en */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; + C29CC82717324DD500581C7C /* ViewController_iPhone.xib */ = { + isa = PBXVariantGroup; + children = ( + C29CC82817324DD500581C7C /* en */, + ); + name = ViewController_iPhone.xib; + sourceTree = ""; + }; + C29CC82A17324DD500581C7C /* ViewController_iPad.xib */ = { + isa = PBXVariantGroup; + children = ( + C29CC82B17324DD500581C7C /* en */, + ); + name = ViewController_iPad.xib; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + C29CC82D17324DD500581C7C /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + 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_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 6.1; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + C29CC82E17324DD500581C7C /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 6.1; + OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1"; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + C29CC83017324DD500581C7C /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "YouTube Video Player Demo/YouTube Video Player Demo-Prefix.pch"; + INFOPLIST_FILE = "YouTube Video Player Demo/YouTube Video Player Demo-Info.plist"; + PRODUCT_NAME = "$(TARGET_NAME)"; + WRAPPER_EXTENSION = app; + }; + name = Debug; + }; + C29CC83117324DD500581C7C /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "YouTube Video Player Demo/YouTube Video Player Demo-Prefix.pch"; + INFOPLIST_FILE = "YouTube Video Player Demo/YouTube Video Player Demo-Info.plist"; + PRODUCT_NAME = "$(TARGET_NAME)"; + WRAPPER_EXTENSION = app; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + C29CC80417324DD400581C7C /* Build configuration list for PBXProject "YouTube Video Player Demo" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + C29CC82D17324DD500581C7C /* Debug */, + C29CC82E17324DD500581C7C /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + C29CC82F17324DD500581C7C /* Build configuration list for PBXNativeTarget "YouTube Video Player Demo" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + C29CC83017324DD500581C7C /* Debug */, + C29CC83117324DD500581C7C /* Release */, + ); + defaultConfigurationIsVisible = 0; + }; +/* End XCConfigurationList section */ + }; + rootObject = C29CC80117324DD400581C7C /* Project object */; +} diff --git a/YouTube Video Player Demo.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/YouTube Video Player Demo.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 000000000..ead1608a0 --- /dev/null +++ b/YouTube Video Player Demo.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/YouTube Video Player Demo/AppDelegate.h b/YouTube Video Player Demo/AppDelegate.h new file mode 100644 index 000000000..d3ef276a1 --- /dev/null +++ b/YouTube Video Player Demo/AppDelegate.h @@ -0,0 +1,19 @@ +// +// AppDelegate.h +// YouTube Video Player Demo +// +// Created by Cédric Luthi on 02.05.13. +// Copyright (c) 2013 Cédric Luthi. All rights reserved. +// + +#import + +@class ViewController; + +@interface AppDelegate : UIResponder + +@property (strong, nonatomic) UIWindow *window; + +@property (strong, nonatomic) ViewController *viewController; + +@end diff --git a/YouTube Video Player Demo/AppDelegate.m b/YouTube Video Player Demo/AppDelegate.m new file mode 100644 index 000000000..a87b16b84 --- /dev/null +++ b/YouTube Video Player Demo/AppDelegate.m @@ -0,0 +1,56 @@ +// +// AppDelegate.m +// YouTube Video Player Demo +// +// Created by Cédric Luthi on 02.05.13. +// Copyright (c) 2013 Cédric Luthi. All rights reserved. +// + +#import "AppDelegate.h" + +#import "ViewController.h" + +@implementation AppDelegate + +- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions +{ + self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; + // Override point for customization after application launch. + if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) { + self.viewController = [[ViewController alloc] initWithNibName:@"ViewController_iPhone" bundle:nil]; + } else { + self.viewController = [[ViewController alloc] initWithNibName:@"ViewController_iPad" bundle:nil]; + } + self.window.rootViewController = self.viewController; + [self.window makeKeyAndVisible]; + return YES; +} + +- (void)applicationWillResignActive:(UIApplication *)application +{ + // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. + // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. +} + +- (void)applicationDidEnterBackground:(UIApplication *)application +{ + // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. + // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. +} + +- (void)applicationWillEnterForeground:(UIApplication *)application +{ + // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background. +} + +- (void)applicationDidBecomeActive:(UIApplication *)application +{ + // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. +} + +- (void)applicationWillTerminate:(UIApplication *)application +{ + // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. +} + +@end diff --git a/YouTube Video Player Demo/Default-568h@2x.png b/YouTube Video Player Demo/Default-568h@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..0891b7aabfcf3422423b109c8beed2bab838c607 GIT binary patch literal 18594 zcmeI4X;f257Jx&9fS`ixvS;&$x8J@slQFSel)6zJN=?13FB7H(lQjRkSy8x_-S~tvu2gzn1oS+dLcF#eqtq$ z%tf9TTvX?`)R@}3uBI;jzS-=ZR-Td&MHaS&;!0?Ni*#$#`n*~CcQK)Q9vAQ~TUpnI!j)a2biYK^R)M~A5wUDZhx?ULMX z3x1P&qt=trOY6P2U67L=m=U?F|5#Uj(eCueNTZaHs_ceWiHeET+j+tp3Jt9g(ekqP z2WOvfR{qV+9r+o4J5?qK>7;;^+I7tGv-i)es$X_D=EoKF+S?zsyj^oRFElP}c}JT< zd8SUs-?O?}2YD#ngKbnHgzHBcboxK_2r9l(?eNCl-pEzkJm}fY?WC*jnS?VBE4EpY zO$fEejz6fU;W2Kl>JeQBZBl-%Irg`obSlg*@4QB;Dd1H7^Oi5wvt4d{RZ!8Og?^aE z)k0$1g+V3fd(gdQ3d&q2q-FL*uy#}|bc^=VhFsl0jBgUGJ+-s3U8MK9A!YJJMxpci z5hJ%|{DwV48fZn0{n5l$N_KcSb#NKE4plB`9I6Zt=Z!~-zw0{9tg$L&Ju1F0X)Cy8 zKF;(&lJ>x)Jw(=;p~sF(Sd9VWGwFE2rnyS9!f^DZ8+aCLq zQ};>lcJ1GDLqjm6Hd>|Eabno@P`~Bn(~6^aD_#yoEH(a?Nm1S<;S+hSxI5d16^<1lEM3NPFi zkqPrpL)+ zgnseFikg`gJVBha1&7C4;O6>h=dt~`ND+;Zd?W(4v2JIb7Pt>Td42%M-Ju-XAH#Pns762L}K3 zDhvsRqN0Ni(1UrishD2YvV?4*h2iFj$+&N||Fn$4n|^NSU+o?~jq`0jVQt8T9l{7b zXiwwODFh2V!Q6sqP9S>WH$oOf$N~=d0-bqTlD61!=`&0eAP-F>XN?*|gtOXX{ zQVTWyYo4ZK0GAw!GHf|pz9`D;-bbb*5LBX*{bnz|+)$@&P9|ORM2o?95{;ejvo&r- zq8cBhTN6nn)7~W>54U)%-F_-b?YKdfk5I8MHcuzBD5)!;yv#Z&R&^y=@=>VTIMy#r zX&U<=BsPkdqcMe<_}2+>H%XKyrr5ZR8_KVe>ZqYN z^=^~TFD};;rHJ$U;{~w^hYojl4hRI@SH$^K{YEo=sg)WY87r!*7blQK&qnpDo0`Vn zkl)9u9g=mCh&ZCJS(L4yN3k0kQ zuvg$h2KEEk51T+O0JQ+r0`R>g{jvqM0Mr6d3qUOZwE!?PI7HY@CE|dr sfw?Q;rAv?G4&^^8-z_>&sWXMxvD*gPOU4CBe-*@OtE+wfmVJNyHv)PfH~;_u literal 0 HcmV?d00001 diff --git a/YouTube Video Player Demo/Default.png b/YouTube Video Player Demo/Default.png new file mode 100644 index 0000000000000000000000000000000000000000..4c8ca6f693f96d511e9113c0eb59eec552354e42 GIT binary patch literal 6540 zcmeAS@N?(olHy`uVBq!ia0y~yU~~ZD2OMlbkt;o0To@QwR5G2N13aCb6#|O#(=u~X z85k@CTSM>X-wqM6>&y>YB4)1;;ojbLbbV-W^iFB1wa3^zCog^LCAReC4K0-?R_2{6 zrP*)4+_uWUy3w5N52M3PW_}MFMP9a~>YLvVZ1D_k*IMQ2QT^fwzoOb(*3gH$%aYWC zkHmcab=va2<#X%jakpJ;<1@F;k__#bwtC&%^D0v(FBh9K&$sK+<}2RJS609D)17$w ztdQP8(eLM8Ka}m_IQ@3wyMKP)l=oM4-?`YS_*P?4V_ORLPxsj&7Ju#kH;>6^Kp?T7~ zl+q?{UOOqV==?+d{=)5s|M~T1mwtH@+Z^$G&eEO9JNP^AX@3jZ*J*!!>lc|1-W%fA z@AOQpXZ_Lt>rxFXrGp*zLPiW@uo_c7C{As>j zWeX)wi+LTp_)@KYZCX{j;H?|1yXT4DnlS(Fr8gyP5|uaX_gLvaW0ScZdnG7o+u{T6 zFI-%d{ls*WuCDa5UJ@|RXv&ejZe}*BMkiWY51&pnRPw(hlykSzvj6e%mYz-GdvzBD zF10?szF_~!jS=?2HyQuPCvARXAe}C}WP|yQ*>5~~=*Nxq8+HHW1~FMDRCP^TcacKuk$ z(U#REVv)D!PhJ*ecH-ELFUrfyV&*)Z)>UCOuS?yd^L@Afk>ihynYPc{^CRwu+JHX+#$@YsC4c|l0tGigsn@jy) zXD($Ouk>H+V(Mr6NQT0S9BFM~V6nkj;1OBOz`zY;a|<&v%$g$sEJPk;hD4M^`1)8S z=jZArrsOB3>Q&?x097+E*i={nnYpPYi3%0DIeEoa6}C!X6;?ntNLXJ<0j#7X+g2&U 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 literal 0 HcmV?d00001 diff --git a/YouTube Video Player Demo/ViewController.h b/YouTube Video Player Demo/ViewController.h new file mode 100644 index 000000000..3bfca9774 --- /dev/null +++ b/YouTube Video Player Demo/ViewController.h @@ -0,0 +1,13 @@ +// +// ViewController.h +// YouTube Video Player Demo +// +// Created by Cédric Luthi on 02.05.13. +// Copyright (c) 2013 Cédric Luthi. All rights reserved. +// + +#import + +@interface ViewController : UIViewController + +@end diff --git a/YouTube Video Player Demo/ViewController.m b/YouTube Video Player Demo/ViewController.m new file mode 100644 index 000000000..06f12e270 --- /dev/null +++ b/YouTube Video Player Demo/ViewController.m @@ -0,0 +1,29 @@ +// +// ViewController.m +// YouTube Video Player Demo +// +// Created by Cédric Luthi on 02.05.13. +// Copyright (c) 2013 Cédric Luthi. All rights reserved. +// + +#import "ViewController.h" + +@interface ViewController () + +@end + +@implementation ViewController + +- (void)viewDidLoad +{ + [super viewDidLoad]; + // Do any additional setup after loading the view, typically from a nib. +} + +- (void)didReceiveMemoryWarning +{ + [super didReceiveMemoryWarning]; + // Dispose of any resources that can be recreated. +} + +@end diff --git a/YouTube Video Player Demo/YouTube Video Player Demo-Info.plist b/YouTube Video Player Demo/YouTube Video Player Demo-Info.plist new file mode 100644 index 000000000..01287e4b1 --- /dev/null +++ b/YouTube Video Player Demo/YouTube Video Player Demo-Info.plist @@ -0,0 +1,45 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleDisplayName + ${PRODUCT_NAME} + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ch.pitaya.${PRODUCT_NAME:rfc1034identifier} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + LSRequiresIPhoneOS + + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/YouTube Video Player Demo/YouTube Video Player Demo-Prefix.pch b/YouTube Video Player Demo/YouTube Video Player Demo-Prefix.pch new file mode 100644 index 000000000..89a274b8b --- /dev/null +++ b/YouTube Video Player Demo/YouTube Video Player Demo-Prefix.pch @@ -0,0 +1,14 @@ +// +// Prefix header for all source files of the 'YouTube Video Player Demo' target in the 'YouTube Video Player Demo' project +// + +#import + +#ifndef __IPHONE_4_0 +#warning "This project uses features only available in iOS SDK 4.0 and later." +#endif + +#ifdef __OBJC__ + #import + #import +#endif diff --git a/YouTube Video Player Demo/en.lproj/InfoPlist.strings b/YouTube Video Player Demo/en.lproj/InfoPlist.strings new file mode 100644 index 000000000..477b28ff8 --- /dev/null +++ b/YouTube Video Player Demo/en.lproj/InfoPlist.strings @@ -0,0 +1,2 @@ +/* Localized versions of Info.plist keys */ + diff --git a/YouTube Video Player Demo/en.lproj/ViewController_iPad.xib b/YouTube Video Player Demo/en.lproj/ViewController_iPad.xib new file mode 100644 index 000000000..963bcaa5f --- /dev/null +++ b/YouTube Video Player Demo/en.lproj/ViewController_iPad.xib @@ -0,0 +1,121 @@ + + + + 1536 + 12A206j + 2519 + 1172.1 + 613.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 1856 + + + IBProxyObject + IBUIView + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + + IBFilesOwner + IBIPadFramework + + + IBFirstResponder + IBIPadFramework + + + + 274 + {{0, 20}, {768, 1004}} + + + + 3 + MQA + + 2 + + + + 2 + + IBIPadFramework + + + + + + + view + + + + 3 + + + + + + 0 + + + + + + -1 + + + File's Owner + + + -2 + + + + + 2 + + + + + + + ViewController + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + 3 + + + + + ViewController + UIViewController + + IBProjectSource + ./Classes/ViewController.h + + + + + 0 + IBIPadFramework + YES + 3 + YES + 1856 + + diff --git a/YouTube Video Player Demo/en.lproj/ViewController_iPhone.xib b/YouTube Video Player Demo/en.lproj/ViewController_iPhone.xib new file mode 100644 index 000000000..18825b5a6 --- /dev/null +++ b/YouTube Video Player Demo/en.lproj/ViewController_iPhone.xib @@ -0,0 +1,138 @@ + + + + 1536 + 12A269 + 2835 + 1187 + 624.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 1919 + + + IBProxyObject + IBUIView + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + + 274 + {{0, 20}, {320, 548}} + + + + + 3 + MC43NQA + + 2 + + + NO + + + IBUIScreenMetrics + + YES + + + + + + {320, 568} + {568, 320} + + + IBCocoaTouchFramework + Retina 4 Full Screen + 2 + + IBCocoaTouchFramework + + + + + + + view + + + + 7 + + + + + + 0 + + + + + + -1 + + + File's Owner + + + -2 + + + + + 6 + + + + + + + ViewController + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + 7 + + + + + ViewController + UIViewController + + IBProjectSource + ./Classes/ViewController.h + + + + + 0 + IBCocoaTouchFramework + YES + 3 + YES + 1919 + + diff --git a/YouTube Video Player Demo/main.m b/YouTube Video Player Demo/main.m new file mode 100644 index 000000000..e5ba4f927 --- /dev/null +++ b/YouTube Video Player Demo/main.m @@ -0,0 +1,18 @@ +// +// main.m +// YouTube Video Player Demo +// +// Created by Cédric Luthi on 02.05.13. +// Copyright (c) 2013 Cédric Luthi. All rights reserved. +// + +#import + +#import "AppDelegate.h" + +int main(int argc, char *argv[]) +{ + @autoreleasepool { + return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); + } +} From 44a58b19b9fd4e91b0d1aee74a71a57f8976893e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ce=CC=81dric=20Luthi?= Date: Thu, 2 May 2013 09:43:48 +0200 Subject: [PATCH 02/37] Project cleanup --- .../project.pbxproj | 61 +++------ YouTube Video Player Demo/AppDelegate.h | 8 -- YouTube Video Player Demo/AppDelegate.m | 45 +------ ...{ViewController.h => DemoViewController.h} | 4 +- .../DemoViewController.m | 13 ++ ...ller_iPhone.xib => DemoViewController.xib} | 25 ++-- YouTube Video Player Demo/ViewController.m | 29 ----- .../YouTube Video Player Demo-Info.plist | 8 +- .../en.lproj/InfoPlist.strings | 2 - .../en.lproj/ViewController_iPad.xib | 121 ------------------ YouTube Video Player Demo/main.m | 7 +- 11 files changed, 55 insertions(+), 268 deletions(-) rename YouTube Video Player Demo/{ViewController.h => DemoViewController.h} (70%) create mode 100644 YouTube Video Player Demo/DemoViewController.m rename YouTube Video Player Demo/{en.lproj/ViewController_iPhone.xib => DemoViewController.xib} (88%) delete mode 100644 YouTube Video Player Demo/ViewController.m delete mode 100644 YouTube Video Player Demo/en.lproj/InfoPlist.strings delete mode 100644 YouTube Video Player Demo/en.lproj/ViewController_iPad.xib diff --git a/YouTube Video Player Demo.xcodeproj/project.pbxproj b/YouTube Video Player Demo.xcodeproj/project.pbxproj index df3c4e557..e048476fe 100644 --- a/YouTube Video Player Demo.xcodeproj/project.pbxproj +++ b/YouTube Video Player Demo.xcodeproj/project.pbxproj @@ -7,27 +7,25 @@ objects = { /* Begin PBXBuildFile section */ + C285F6D717324F7500D81C59 /* DemoViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = C285F6D617324F7500D81C59 /* DemoViewController.xib */; }; C29CC80D17324DD400581C7C /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C29CC80C17324DD400581C7C /* UIKit.framework */; }; C29CC80F17324DD400581C7C /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C29CC80E17324DD400581C7C /* Foundation.framework */; }; C29CC81117324DD400581C7C /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C29CC81017324DD400581C7C /* CoreGraphics.framework */; }; - C29CC81717324DD400581C7C /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = C29CC81517324DD400581C7C /* InfoPlist.strings */; }; C29CC81917324DD400581C7C /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = C29CC81817324DD400581C7C /* main.m */; }; C29CC81D17324DD400581C7C /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = C29CC81C17324DD400581C7C /* AppDelegate.m */; }; C29CC81F17324DD400581C7C /* Default.png in Resources */ = {isa = PBXBuildFile; fileRef = C29CC81E17324DD400581C7C /* Default.png */; }; C29CC82117324DD500581C7C /* Default@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = C29CC82017324DD500581C7C /* Default@2x.png */; }; C29CC82317324DD500581C7C /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = C29CC82217324DD500581C7C /* Default-568h@2x.png */; }; - C29CC82617324DD500581C7C /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = C29CC82517324DD500581C7C /* ViewController.m */; }; - C29CC82917324DD500581C7C /* ViewController_iPhone.xib in Resources */ = {isa = PBXBuildFile; fileRef = C29CC82717324DD500581C7C /* ViewController_iPhone.xib */; }; - C29CC82C17324DD500581C7C /* ViewController_iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = C29CC82A17324DD500581C7C /* ViewController_iPad.xib */; }; + C29CC82617324DD500581C7C /* DemoViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = C29CC82517324DD500581C7C /* DemoViewController.m */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ + C285F6D617324F7500D81C59 /* DemoViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = DemoViewController.xib; sourceTree = ""; }; C29CC80917324DD400581C7C /* YouTube Video Player Demo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "YouTube Video Player Demo.app"; sourceTree = BUILT_PRODUCTS_DIR; }; C29CC80C17324DD400581C7C /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; C29CC80E17324DD400581C7C /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; C29CC81017324DD400581C7C /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; C29CC81417324DD400581C7C /* YouTube Video Player Demo-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "YouTube Video Player Demo-Info.plist"; sourceTree = ""; }; - C29CC81617324DD400581C7C /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; C29CC81817324DD400581C7C /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; C29CC81A17324DD400581C7C /* YouTube Video Player Demo-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "YouTube Video Player Demo-Prefix.pch"; sourceTree = ""; }; C29CC81B17324DD400581C7C /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; @@ -35,10 +33,8 @@ C29CC81E17324DD400581C7C /* Default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Default.png; sourceTree = ""; }; C29CC82017324DD500581C7C /* Default@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default@2x.png"; sourceTree = ""; }; C29CC82217324DD500581C7C /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-568h@2x.png"; sourceTree = ""; }; - C29CC82417324DD500581C7C /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = ""; }; - C29CC82517324DD500581C7C /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = ""; }; - C29CC82817324DD500581C7C /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/ViewController_iPhone.xib; sourceTree = ""; }; - C29CC82B17324DD500581C7C /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/ViewController_iPad.xib; sourceTree = ""; }; + C29CC82417324DD500581C7C /* DemoViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DemoViewController.h; sourceTree = ""; }; + C29CC82517324DD500581C7C /* DemoViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = DemoViewController.m; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -62,7 +58,10 @@ C29CC80B17324DD400581C7C /* Frameworks */, C29CC80A17324DD400581C7C /* Products */, ); + indentWidth = 4; sourceTree = ""; + tabWidth = 4; + usesTabs = 1; }; C29CC80A17324DD400581C7C /* Products */ = { isa = PBXGroup; @@ -87,10 +86,9 @@ children = ( C29CC81B17324DD400581C7C /* AppDelegate.h */, C29CC81C17324DD400581C7C /* AppDelegate.m */, - C29CC82417324DD500581C7C /* ViewController.h */, - C29CC82517324DD500581C7C /* ViewController.m */, - C29CC82717324DD500581C7C /* ViewController_iPhone.xib */, - C29CC82A17324DD500581C7C /* ViewController_iPad.xib */, + C29CC82417324DD500581C7C /* DemoViewController.h */, + C29CC82517324DD500581C7C /* DemoViewController.m */, + C285F6D617324F7500D81C59 /* DemoViewController.xib */, C29CC81317324DD400581C7C /* Supporting Files */, ); path = "YouTube Video Player Demo"; @@ -100,7 +98,6 @@ isa = PBXGroup; children = ( C29CC81417324DD400581C7C /* YouTube Video Player Demo-Info.plist */, - C29CC81517324DD400581C7C /* InfoPlist.strings */, C29CC81817324DD400581C7C /* main.m */, C29CC81A17324DD400581C7C /* YouTube Video Player Demo-Prefix.pch */, C29CC81E17324DD400581C7C /* Default.png */, @@ -161,12 +158,10 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - C29CC81717324DD400581C7C /* InfoPlist.strings in Resources */, C29CC81F17324DD400581C7C /* Default.png in Resources */, C29CC82117324DD500581C7C /* Default@2x.png in Resources */, C29CC82317324DD500581C7C /* Default-568h@2x.png in Resources */, - C29CC82917324DD500581C7C /* ViewController_iPhone.xib in Resources */, - C29CC82C17324DD500581C7C /* ViewController_iPad.xib in Resources */, + C285F6D717324F7500D81C59 /* DemoViewController.xib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -179,39 +174,12 @@ files = ( C29CC81917324DD400581C7C /* main.m in Sources */, C29CC81D17324DD400581C7C /* AppDelegate.m in Sources */, - C29CC82617324DD500581C7C /* ViewController.m in Sources */, + C29CC82617324DD500581C7C /* DemoViewController.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ -/* Begin PBXVariantGroup section */ - C29CC81517324DD400581C7C /* InfoPlist.strings */ = { - isa = PBXVariantGroup; - children = ( - C29CC81617324DD400581C7C /* en */, - ); - name = InfoPlist.strings; - sourceTree = ""; - }; - C29CC82717324DD500581C7C /* ViewController_iPhone.xib */ = { - isa = PBXVariantGroup; - children = ( - C29CC82817324DD500581C7C /* en */, - ); - name = ViewController_iPhone.xib; - sourceTree = ""; - }; - C29CC82A17324DD500581C7C /* ViewController_iPad.xib */ = { - isa = PBXVariantGroup; - children = ( - C29CC82B17324DD500581C7C /* en */, - ); - name = ViewController_iPad.xib; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - /* Begin XCBuildConfiguration section */ C29CC82D17324DD500581C7C /* Debug */ = { isa = XCBuildConfiguration; @@ -260,11 +228,11 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = YES; GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_PREPROCESSOR_DEFINITIONS = "NS_BLOCK_ASSERTIONS=1"; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 6.1; - OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1"; SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; @@ -312,6 +280,7 @@ C29CC83117324DD500581C7C /* Release */, ); defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; }; /* End XCConfigurationList section */ }; diff --git a/YouTube Video Player Demo/AppDelegate.h b/YouTube Video Player Demo/AppDelegate.h index d3ef276a1..d97eaf8a2 100644 --- a/YouTube Video Player Demo/AppDelegate.h +++ b/YouTube Video Player Demo/AppDelegate.h @@ -6,14 +6,6 @@ // Copyright (c) 2013 Cédric Luthi. All rights reserved. // -#import - -@class ViewController; - @interface AppDelegate : UIResponder -@property (strong, nonatomic) UIWindow *window; - -@property (strong, nonatomic) ViewController *viewController; - @end diff --git a/YouTube Video Player Demo/AppDelegate.m b/YouTube Video Player Demo/AppDelegate.m index a87b16b84..2487c021e 100644 --- a/YouTube Video Player Demo/AppDelegate.m +++ b/YouTube Video Player Demo/AppDelegate.m @@ -8,49 +8,18 @@ #import "AppDelegate.h" -#import "ViewController.h" +#import "DemoViewController.h" @implementation AppDelegate -- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions -{ - self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; - // Override point for customization after application launch. - if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) { - self.viewController = [[ViewController alloc] initWithNibName:@"ViewController_iPhone" bundle:nil]; - } else { - self.viewController = [[ViewController alloc] initWithNibName:@"ViewController_iPad" bundle:nil]; - } - self.window.rootViewController = self.viewController; - [self.window makeKeyAndVisible]; - return YES; -} - -- (void)applicationWillResignActive:(UIApplication *)application -{ - // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. - // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. -} - -- (void)applicationDidEnterBackground:(UIApplication *)application -{ - // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. - // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. -} - -- (void)applicationWillEnterForeground:(UIApplication *)application -{ - // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background. -} - -- (void)applicationDidBecomeActive:(UIApplication *)application -{ - // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. -} +@synthesize window = _window; -- (void)applicationWillTerminate:(UIApplication *)application +- (BOOL) application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { - // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. + self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; + self.window.rootViewController = [DemoViewController new]; + [self.window makeKeyAndVisible]; + return YES; } @end diff --git a/YouTube Video Player Demo/ViewController.h b/YouTube Video Player Demo/DemoViewController.h similarity index 70% rename from YouTube Video Player Demo/ViewController.h rename to YouTube Video Player Demo/DemoViewController.h index 3bfca9774..1cf58425e 100644 --- a/YouTube Video Player Demo/ViewController.h +++ b/YouTube Video Player Demo/DemoViewController.h @@ -6,8 +6,6 @@ // Copyright (c) 2013 Cédric Luthi. All rights reserved. // -#import - -@interface ViewController : UIViewController +@interface DemoViewController : UIViewController @end diff --git a/YouTube Video Player Demo/DemoViewController.m b/YouTube Video Player Demo/DemoViewController.m new file mode 100644 index 000000000..9d667f566 --- /dev/null +++ b/YouTube Video Player Demo/DemoViewController.m @@ -0,0 +1,13 @@ +// +// ViewController.m +// YouTube Video Player Demo +// +// Created by Cédric Luthi on 02.05.13. +// Copyright (c) 2013 Cédric Luthi. All rights reserved. +// + +#import "DemoViewController.h" + +@implementation DemoViewController + +@end diff --git a/YouTube Video Player Demo/en.lproj/ViewController_iPhone.xib b/YouTube Video Player Demo/DemoViewController.xib similarity index 88% rename from YouTube Video Player Demo/en.lproj/ViewController_iPhone.xib rename to YouTube Video Player Demo/DemoViewController.xib index 18825b5a6..fa16e63f8 100644 --- a/YouTube Video Player Demo/en.lproj/ViewController_iPhone.xib +++ b/YouTube Video Player Demo/DemoViewController.xib @@ -1,14 +1,14 @@ - 1536 - 12A269 - 2835 - 1187 - 624.00 + 1552 + 12D78 + 3084 + 1187.37 + 626.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1919 + 2083 IBProxyObject @@ -33,6 +33,7 @@ 274 + {{0, 20}, {320, 548}} @@ -99,12 +100,13 @@ 6 + - ViewController + DemoViewController com.apple.InterfaceBuilder.IBCocoaTouchPlugin UIResponder com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -114,16 +116,16 @@ - 7 + 11 - ViewController + DemoViewController UIViewController IBProjectSource - ./Classes/ViewController.h + ./Classes/DemoViewController.h @@ -132,7 +134,6 @@ IBCocoaTouchFramework YES 3 - YES - 1919 + 2083 diff --git a/YouTube Video Player Demo/ViewController.m b/YouTube Video Player Demo/ViewController.m deleted file mode 100644 index 06f12e270..000000000 --- a/YouTube Video Player Demo/ViewController.m +++ /dev/null @@ -1,29 +0,0 @@ -// -// ViewController.m -// YouTube Video Player Demo -// -// Created by Cédric Luthi on 02.05.13. -// Copyright (c) 2013 Cédric Luthi. All rights reserved. -// - -#import "ViewController.h" - -@interface ViewController () - -@end - -@implementation ViewController - -- (void)viewDidLoad -{ - [super viewDidLoad]; - // Do any additional setup after loading the view, typically from a nib. -} - -- (void)didReceiveMemoryWarning -{ - [super didReceiveMemoryWarning]; - // Dispose of any resources that can be recreated. -} - -@end diff --git a/YouTube Video Player Demo/YouTube Video Player Demo-Info.plist b/YouTube Video Player Demo/YouTube Video Player Demo-Info.plist index 01287e4b1..afef42cf7 100644 --- a/YouTube Video Player Demo/YouTube Video Player Demo-Info.plist +++ b/YouTube Video Player Demo/YouTube Video Player Demo-Info.plist @@ -9,7 +9,7 @@ CFBundleExecutable ${EXECUTABLE_NAME} CFBundleIdentifier - ch.pitaya.${PRODUCT_NAME:rfc1034identifier} + ch.pitaya.xcdyoutubevideoplayerviewcontroller.demo CFBundleInfoDictionaryVersion 6.0 CFBundleName @@ -17,11 +17,9 @@ CFBundlePackageType APPL CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? + 0.0.1 CFBundleVersion - 1.0 + 0 LSRequiresIPhoneOS UIRequiredDeviceCapabilities diff --git a/YouTube Video Player Demo/en.lproj/InfoPlist.strings b/YouTube Video Player Demo/en.lproj/InfoPlist.strings deleted file mode 100644 index 477b28ff8..000000000 --- a/YouTube Video Player Demo/en.lproj/InfoPlist.strings +++ /dev/null @@ -1,2 +0,0 @@ -/* Localized versions of Info.plist keys */ - diff --git a/YouTube Video Player Demo/en.lproj/ViewController_iPad.xib b/YouTube Video Player Demo/en.lproj/ViewController_iPad.xib deleted file mode 100644 index 963bcaa5f..000000000 --- a/YouTube Video Player Demo/en.lproj/ViewController_iPad.xib +++ /dev/null @@ -1,121 +0,0 @@ - - - - 1536 - 12A206j - 2519 - 1172.1 - 613.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1856 - - - IBProxyObject - IBUIView - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - PluginDependencyRecalculationVersion - - - - - IBFilesOwner - IBIPadFramework - - - IBFirstResponder - IBIPadFramework - - - - 274 - {{0, 20}, {768, 1004}} - - - - 3 - MQA - - 2 - - - - 2 - - IBIPadFramework - - - - - - - view - - - - 3 - - - - - - 0 - - - - - - -1 - - - File's Owner - - - -2 - - - - - 2 - - - - - - - ViewController - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - - - 3 - - - - - ViewController - UIViewController - - IBProjectSource - ./Classes/ViewController.h - - - - - 0 - IBIPadFramework - YES - 3 - YES - 1856 - - diff --git a/YouTube Video Player Demo/main.m b/YouTube Video Player Demo/main.m index e5ba4f927..dfd7a74ce 100644 --- a/YouTube Video Player Demo/main.m +++ b/YouTube Video Player Demo/main.m @@ -6,13 +6,12 @@ // Copyright (c) 2013 Cédric Luthi. All rights reserved. // -#import - #import "AppDelegate.h" int main(int argc, char *argv[]) { - @autoreleasepool { - return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); + @autoreleasepool + { + return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); } } From d23d9739576dfc6fe4021c49eb5e8c0aea9e24ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ce=CC=81dric=20Luthi?= Date: Thu, 2 May 2013 09:48:31 +0200 Subject: [PATCH 03/37] Set deployment target to iOS 5.0 --- YouTube Video Player Demo.xcodeproj/project.pbxproj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/YouTube Video Player Demo.xcodeproj/project.pbxproj b/YouTube Video Player Demo.xcodeproj/project.pbxproj index e048476fe..849f35fa9 100644 --- a/YouTube Video Player Demo.xcodeproj/project.pbxproj +++ b/YouTube Video Player Demo.xcodeproj/project.pbxproj @@ -206,7 +206,7 @@ GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 6.1; + IPHONEOS_DEPLOYMENT_TARGET = 5.0; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; @@ -232,7 +232,7 @@ GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 6.1; + IPHONEOS_DEPLOYMENT_TARGET = 5.0; SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; From 46726bbefb14b0491728f3679d68a3f13882bd11 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ce=CC=81dric=20Luthi?= Date: Thu, 2 May 2013 09:48:48 +0200 Subject: [PATCH 04/37] Basic demo view controller --- .../DemoViewController.m | 9 ++ .../DemoViewController.xib | 139 +++++++++++++++++- 2 files changed, 142 insertions(+), 6 deletions(-) diff --git a/YouTube Video Player Demo/DemoViewController.m b/YouTube Video Player Demo/DemoViewController.m index 9d667f566..ee0fb0ff1 100644 --- a/YouTube Video Player Demo/DemoViewController.m +++ b/YouTube Video Player Demo/DemoViewController.m @@ -8,6 +8,15 @@ #import "DemoViewController.h" +@interface DemoViewController () +@property (nonatomic, weak) IBOutlet UITextField *videoIdentifierTextField; +@end + @implementation DemoViewController +- (IBAction) playYouTubeVideo:(id)sender +{ + NSLog(@"TODO: play '%@'", self.videoIdentifierTextField.text); +} + @end diff --git a/YouTube Video Player Demo/DemoViewController.xib b/YouTube Video Player Demo/DemoViewController.xib index fa16e63f8..53a50a2dc 100644 --- a/YouTube Video Player Demo/DemoViewController.xib +++ b/YouTube Video Player Demo/DemoViewController.xib @@ -12,6 +12,8 @@ IBProxyObject + IBUIButton + IBUITextField IBUIView @@ -33,7 +35,80 @@ 274 - + + + + 293 + {{76, 120}, {169, 44}} + + + + _NS:9 + NO + IBCocoaTouchFramework + 0 + 0 + 1 + Play YouTube Video + + 3 + MQA + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + 3 + MC41AA + + + 2 + 15 + + + Helvetica-Bold + 15 + 16 + + + + + 293 + {{20, 182}, {280, 30}} + + + _NS:9 + NO + YES + IBCocoaTouchFramework + 0 + 9bZkp7q19f0 + 3 + + 3 + MAA + + 2 + + + 1 + YES + 17 + + IBCocoaTouchFramework + + + 1 + 14 + + + Helvetica + 14 + 16 + + + {{0, 20}, {320, 548}} @@ -41,9 +116,7 @@ 3 MC43NQA - - 2 - + NO @@ -77,6 +150,23 @@ 7 + + + videoIdentifierTextField + + + + 17 + + + + playYouTubeVideo: + + + 7 + + 16 + @@ -100,9 +190,22 @@ 6 - + + + + + + 14 + + + + + 15 + + + @@ -110,19 +213,43 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin UIResponder com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 11 + 17 DemoViewController UIViewController + + playYouTubeVideo: + id + + + playYouTubeVideo: + + playYouTubeVideo: + id + + + + videoIdentifierTextField + UITextField + + + videoIdentifierTextField + + videoIdentifierTextField + UITextField + + IBProjectSource ./Classes/DemoViewController.h From bea6bbe479404d457d7b13588ad3ca3f91c468b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ce=CC=81dric=20Luthi?= Date: Thu, 2 May 2013 09:58:42 +0200 Subject: [PATCH 05/37] XCDYouTubeVideoPlayerViewController skeleton --- .../XCDYouTubeVideoPlayerViewController.h | 15 ++++++++++++ .../XCDYouTubeVideoPlayerViewController.m | 23 +++++++++++++++++++ .../project.pbxproj | 18 +++++++++++++++ 3 files changed, 56 insertions(+) create mode 100644 XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.h create mode 100644 XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.m diff --git a/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.h b/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.h new file mode 100644 index 000000000..9e32473c4 --- /dev/null +++ b/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.h @@ -0,0 +1,15 @@ +// +// XCDYouTubeVideoPlayerViewController.h +// YouTube Video Player Demo +// +// Created by Cédric Luthi on 02.05.13. +// Copyright (c) 2013 Cédric Luthi. All rights reserved. +// + +#import + +@interface XCDYouTubeVideoPlayerViewController : MPMoviePlayerViewController + +- (id) initWithYouTubeVideoIdentifier:(NSString *)videoIdentifier; + +@end diff --git a/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.m b/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.m new file mode 100644 index 000000000..9f670241e --- /dev/null +++ b/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.m @@ -0,0 +1,23 @@ +// +// XCDYouTubeVideoPlayerViewController.m +// YouTube Video Player Demo +// +// Created by Cédric Luthi on 02.05.13. +// Copyright (c) 2013 Cédric Luthi. All rights reserved. +// + +#import "XCDYouTubeVideoPlayerViewController.h" + +@implementation XCDYouTubeVideoPlayerViewController + +- (id) initWithYouTubeVideoIdentifier:(NSString *)videoIdentifier +{ + if (!(self = [super initWithContentURL:nil])) + return nil; + + + + return self; +} + +@end diff --git a/YouTube Video Player Demo.xcodeproj/project.pbxproj b/YouTube Video Player Demo.xcodeproj/project.pbxproj index 849f35fa9..a1e11bad0 100644 --- a/YouTube Video Player Demo.xcodeproj/project.pbxproj +++ b/YouTube Video Player Demo.xcodeproj/project.pbxproj @@ -8,6 +8,8 @@ /* Begin PBXBuildFile section */ C285F6D717324F7500D81C59 /* DemoViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = C285F6D617324F7500D81C59 /* DemoViewController.xib */; }; + C285F6DC1732522300D81C59 /* XCDYouTubeVideoPlayerViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = C285F6DB1732522300D81C59 /* XCDYouTubeVideoPlayerViewController.m */; }; + C285F6DE1732523400D81C59 /* MediaPlayer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C285F6DD1732523400D81C59 /* MediaPlayer.framework */; }; C29CC80D17324DD400581C7C /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C29CC80C17324DD400581C7C /* UIKit.framework */; }; C29CC80F17324DD400581C7C /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C29CC80E17324DD400581C7C /* Foundation.framework */; }; C29CC81117324DD400581C7C /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C29CC81017324DD400581C7C /* CoreGraphics.framework */; }; @@ -21,6 +23,9 @@ /* Begin PBXFileReference section */ C285F6D617324F7500D81C59 /* DemoViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = DemoViewController.xib; sourceTree = ""; }; + C285F6DA1732522300D81C59 /* XCDYouTubeVideoPlayerViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XCDYouTubeVideoPlayerViewController.h; sourceTree = ""; }; + C285F6DB1732522300D81C59 /* XCDYouTubeVideoPlayerViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XCDYouTubeVideoPlayerViewController.m; sourceTree = ""; }; + C285F6DD1732523400D81C59 /* MediaPlayer.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MediaPlayer.framework; path = System/Library/Frameworks/MediaPlayer.framework; sourceTree = SDKROOT; }; C29CC80917324DD400581C7C /* YouTube Video Player Demo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "YouTube Video Player Demo.app"; sourceTree = BUILT_PRODUCTS_DIR; }; C29CC80C17324DD400581C7C /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; C29CC80E17324DD400581C7C /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; @@ -45,15 +50,26 @@ C29CC80D17324DD400581C7C /* UIKit.framework in Frameworks */, C29CC80F17324DD400581C7C /* Foundation.framework in Frameworks */, C29CC81117324DD400581C7C /* CoreGraphics.framework in Frameworks */, + C285F6DE1732523400D81C59 /* MediaPlayer.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + C285F6D91732520500D81C59 /* XCDYouTubeVideoPlayerViewController */ = { + isa = PBXGroup; + children = ( + C285F6DA1732522300D81C59 /* XCDYouTubeVideoPlayerViewController.h */, + C285F6DB1732522300D81C59 /* XCDYouTubeVideoPlayerViewController.m */, + ); + path = XCDYouTubeVideoPlayerViewController; + sourceTree = ""; + }; C29CC80017324DD400581C7C = { isa = PBXGroup; children = ( + C285F6D91732520500D81C59 /* XCDYouTubeVideoPlayerViewController */, C29CC81217324DD400581C7C /* YouTube Video Player Demo */, C29CC80B17324DD400581C7C /* Frameworks */, C29CC80A17324DD400581C7C /* Products */, @@ -77,6 +93,7 @@ C29CC80C17324DD400581C7C /* UIKit.framework */, C29CC80E17324DD400581C7C /* Foundation.framework */, C29CC81017324DD400581C7C /* CoreGraphics.framework */, + C285F6DD1732523400D81C59 /* MediaPlayer.framework */, ); name = Frameworks; sourceTree = ""; @@ -175,6 +192,7 @@ C29CC81917324DD400581C7C /* main.m in Sources */, C29CC81D17324DD400581C7C /* AppDelegate.m in Sources */, C29CC82617324DD500581C7C /* DemoViewController.m in Sources */, + C285F6DC1732522300D81C59 /* XCDYouTubeVideoPlayerViewController.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; From 142dceb44e27b78e298ae050c03330e44a3803c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ce=CC=81dric=20Luthi?= Date: Thu, 2 May 2013 09:59:16 +0200 Subject: [PATCH 06/37] Use XCDYouTubeVideoPlayerViewController in demo view controller --- YouTube Video Player Demo/DemoViewController.m | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/YouTube Video Player Demo/DemoViewController.m b/YouTube Video Player Demo/DemoViewController.m index ee0fb0ff1..1bbf04035 100644 --- a/YouTube Video Player Demo/DemoViewController.m +++ b/YouTube Video Player Demo/DemoViewController.m @@ -8,6 +8,8 @@ #import "DemoViewController.h" +#import "XCDYouTubeVideoPlayerViewController.h" + @interface DemoViewController () @property (nonatomic, weak) IBOutlet UITextField *videoIdentifierTextField; @end @@ -16,7 +18,8 @@ @implementation DemoViewController - (IBAction) playYouTubeVideo:(id)sender { - NSLog(@"TODO: play '%@'", self.videoIdentifierTextField.text); + XCDYouTubeVideoPlayerViewController *videoPlayerViewController = [[XCDYouTubeVideoPlayerViewController alloc] initWithYouTubeVideoIdentifier:self.videoIdentifierTextField.text]; + [self presentMoviePlayerViewControllerAnimated:videoPlayerViewController]; } @end From b602866c310af8645884d54a3be34f2d405ceb17 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ce=CC=81dric=20Luthi?= Date: Thu, 2 May 2013 11:40:45 +0200 Subject: [PATCH 07/37] Implement XCDYouTubeVideoPlayerViewController --- .../XCDYouTubeVideoPlayerViewController.h | 9 +++ .../XCDYouTubeVideoPlayerViewController.m | 65 +++++++++++++++++++ 2 files changed, 74 insertions(+) diff --git a/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.h b/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.h index 9e32473c4..cfd1ac62a 100644 --- a/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.h +++ b/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.h @@ -8,8 +8,17 @@ #import +typedef NS_ENUM(NSUInteger, XCDYouTubeVideoQuality) { + XCDYouTubeVideoQualitySmall240 = 36, + XCDYouTubeVideoQualityMedium360 = 18, + XCDYouTubeVideoQualityHD720 = 22, + XCDYouTubeVideoQualityHD1080 = 37, +}; + @interface XCDYouTubeVideoPlayerViewController : MPMoviePlayerViewController - (id) initWithYouTubeVideoIdentifier:(NSString *)videoIdentifier; +@property (nonatomic, strong) NSArray *preferredVideoQuality; + @end diff --git a/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.m b/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.m index 9f670241e..7aacfda28 100644 --- a/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.m +++ b/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.m @@ -8,6 +8,23 @@ #import "XCDYouTubeVideoPlayerViewController.h" +static NSDictionary *DictionaryWithQueryString(NSString *string, NSStringEncoding encoding) +{ + NSMutableDictionary *dictionary = [NSMutableDictionary new]; + NSArray *fields = [string componentsSeparatedByString:@"&"]; + for (NSString *field in fields) + { + NSArray *pair = [field componentsSeparatedByString:@"="]; + if (pair.count == 2) + { + NSString *key = pair[0]; + NSString *value = [pair[1] stringByReplacingPercentEscapesUsingEncoding:encoding]; + dictionary[key] = value; + } + } + return dictionary; +} + @implementation XCDYouTubeVideoPlayerViewController - (id) initWithYouTubeVideoIdentifier:(NSString *)videoIdentifier @@ -15,9 +32,57 @@ - (id) initWithYouTubeVideoIdentifier:(NSString *)videoIdentifier if (!(self = [super initWithContentURL:nil])) return nil; + if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) + _preferredVideoQuality = @[ @(XCDYouTubeVideoQualityHD720), @(XCDYouTubeVideoQualityMedium360), @(XCDYouTubeVideoQualitySmall240) ]; + else + _preferredVideoQuality = @[ @(XCDYouTubeVideoQualityHD1080), @(XCDYouTubeVideoQualityHD720), @(XCDYouTubeVideoQualityMedium360), @(XCDYouTubeVideoQualitySmall240) ]; + NSURL *videoInfoURL = [NSURL URLWithString:[NSString stringWithFormat:@"https://www.youtube.com/get_video_info?video_id=%@", videoIdentifier]]; + NSURLRequest *request = [[NSURLRequest alloc] initWithURL:videoInfoURL cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10]; + [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue new] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) { + NSString *videoQuery = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding]; + NSStringEncoding queryEncoding = NSUTF8StringEncoding; + NSDictionary *video = DictionaryWithQueryString(videoQuery, queryEncoding); + NSArray *streamQueries = [video[@"url_encoded_fmt_stream_map"] componentsSeparatedByString:@","]; + + NSMutableDictionary *streamURLs = [NSMutableDictionary new]; + for (NSString *streamQuery in streamQueries) + { + NSDictionary *stream = DictionaryWithQueryString(streamQuery, queryEncoding); + NSString *type = stream[@"type"]; + if ([type hasPrefix:@"video/mp4"] || [type hasPrefix:@"video/3gpp"]) + { + NSURL *streamURL = [NSURL URLWithString:[NSString stringWithFormat:@"%@&signature=%@", stream[@"url"], stream[@"sig"]]]; + streamURLs[@([stream[@"itag"] integerValue])] = streamURL; + } + } + + NSURL *streamURL = nil; + for (NSNumber *videoQuality in self.preferredVideoQuality) + { + streamURL = streamURLs[videoQuality]; + if (streamURL) + { + [self performSelectorOnMainThread:@selector(setStreamURL:) withObject:streamURL waitUntilDone:NO]; + break; + } + } + + if (!streamURL) + [self performSelectorOnMainThread:@selector(dismiss) withObject:nil waitUntilDone:NO]; + }]; return self; } +- (void) setStreamURL:(NSURL *)streamURL +{ + self.moviePlayer.contentURL = streamURL; +} + +- (void) dismiss +{ + [self.presentingViewController dismissMoviePlayerViewControllerAnimated]; +} + @end From ebb2300c05e1e52b9e59ed4776488ab0b77ae82e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ce=CC=81dric=20Luthi?= Date: Thu, 2 May 2013 11:44:21 +0200 Subject: [PATCH 08/37] Document the preferredVideoQuality property --- .../XCDYouTubeVideoPlayerViewController.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.h b/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.h index cfd1ac62a..fcc64807a 100644 --- a/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.h +++ b/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.h @@ -19,6 +19,9 @@ typedef NS_ENUM(NSUInteger, XCDYouTubeVideoQuality) { - (id) initWithYouTubeVideoIdentifier:(NSString *)videoIdentifier; +// On iPhone, defaults to @[ @(XCDYouTubeVideoQualityHD720), @(XCDYouTubeVideoQualityMedium360), @(XCDYouTubeVideoQualitySmall240) ] +// On iPad, defaults to @[ @(XCDYouTubeVideoQualityHD1080), @(XCDYouTubeVideoQualityHD720), @(XCDYouTubeVideoQualityMedium360), @(XCDYouTubeVideoQualitySmall240) ] +// If you really know what you are doing, you can use the `itag` values as described on http://en.wikipedia.org/wiki/YouTube#Quality_and_codecs @property (nonatomic, strong) NSArray *preferredVideoQuality; @end From 42444c5a6e305a147dc24aa2d0bc083c967fd654 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ce=CC=81dric=20Luthi?= Date: Thu, 2 May 2013 14:53:09 +0200 Subject: [PATCH 09/37] Replace "+" with " " when decoding query string --- .../XCDYouTubeVideoPlayerViewController.m | 1 + 1 file changed, 1 insertion(+) diff --git a/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.m b/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.m index 7aacfda28..0bbfbb713 100644 --- a/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.m +++ b/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.m @@ -19,6 +19,7 @@ { NSString *key = pair[0]; NSString *value = [pair[1] stringByReplacingPercentEscapesUsingEncoding:encoding]; + value = [value stringByReplacingOccurrencesOfString:@"+" withString:@" "]; dictionary[key] = value; } } From 451e62f5cc7559c6863d57e50bf853a879e125e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ce=CC=81dric=20Luthi?= Date: Thu, 2 May 2013 15:32:32 +0200 Subject: [PATCH 10/37] Add a low quality switch in demo view controller --- .../DemoViewController.m | 3 + .../DemoViewController.xib | 115 +++++++++++++++--- 2 files changed, 104 insertions(+), 14 deletions(-) diff --git a/YouTube Video Player Demo/DemoViewController.m b/YouTube Video Player Demo/DemoViewController.m index 1bbf04035..fff0e1264 100644 --- a/YouTube Video Player Demo/DemoViewController.m +++ b/YouTube Video Player Demo/DemoViewController.m @@ -12,6 +12,7 @@ @interface DemoViewController () @property (nonatomic, weak) IBOutlet UITextField *videoIdentifierTextField; +@property (nonatomic, weak) IBOutlet UISwitch *lowQualitySwitch; @end @implementation DemoViewController @@ -19,6 +20,8 @@ @implementation DemoViewController - (IBAction) playYouTubeVideo:(id)sender { XCDYouTubeVideoPlayerViewController *videoPlayerViewController = [[XCDYouTubeVideoPlayerViewController alloc] initWithYouTubeVideoIdentifier:self.videoIdentifierTextField.text]; + if (self.lowQualitySwitch.on) + videoPlayerViewController.preferredVideoQuality = @[ @(XCDYouTubeVideoQualitySmall240), @(XCDYouTubeVideoQualityMedium360) ]; [self presentMoviePlayerViewControllerAnimated:videoPlayerViewController]; } diff --git a/YouTube Video Player Demo/DemoViewController.xib b/YouTube Video Player Demo/DemoViewController.xib index 53a50a2dc..b533e1d70 100644 --- a/YouTube Video Player Demo/DemoViewController.xib +++ b/YouTube Video Player Demo/DemoViewController.xib @@ -13,6 +13,8 @@ IBProxyObject IBUIButton + IBUILabel + IBUISwitch IBUITextField IBUIView @@ -98,21 +100,72 @@ IBCocoaTouchFramework - + 1 - 14 + 17 - + Helvetica - 14 + 17 16 + + + 293 + + + + 300 + {{10, 19}, {104, 21}} + + + _NS:9 + NO + YES + 7 + NO + IBCocoaTouchFramework + Low Quality: + + 1 + MCAwIDAAA + darkTextColor + + + 0 + 2 + + + NO + + + + 297 + {{117, 16}, {94, 27}} + + + _NS:9 + NO + IBCocoaTouchFramework + 0 + 0 + + + {{46, 216}, {229, 60}} + + + _NS:10 + + 3 + MCAwAA + + IBCocoaTouchFramework + {{0, 20}, {320, 548}} - 3 MC43NQA @@ -158,6 +211,14 @@ 17 + + + lowQualitySwitch + + + + 20 + playYouTubeVideo: @@ -193,6 +254,7 @@ + @@ -206,6 +268,25 @@ + + 21 + + + + + + + + + 18 + + + + + 19 + + + @@ -215,13 +296,16 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 17 + 21 @@ -239,17 +323,20 @@ id - - videoIdentifierTextField - UITextField - - - videoIdentifierTextField - + + UISwitch + UITextField + + + + lowQualitySwitch + UISwitch + + videoIdentifierTextField UITextField - + IBProjectSource ./Classes/DemoViewController.h From 8c7de904fc246ae5a64c70d5161b7616feb697d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ce=CC=81dric=20Luthi?= Date: Tue, 7 May 2013 13:29:10 +0200 Subject: [PATCH 11/37] Polish demo view controller --- YouTube Video Player Demo/AppDelegate.m | 2 +- .../DemoViewController.m | 13 +++++- .../DemoViewController.xib | 45 ++++++++++--------- 3 files changed, 38 insertions(+), 22 deletions(-) diff --git a/YouTube Video Player Demo/AppDelegate.m b/YouTube Video Player Demo/AppDelegate.m index 2487c021e..33bfefccf 100644 --- a/YouTube Video Player Demo/AppDelegate.m +++ b/YouTube Video Player Demo/AppDelegate.m @@ -17,7 +17,7 @@ @implementation AppDelegate - (BOOL) application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; - self.window.rootViewController = [DemoViewController new]; + self.window.rootViewController = [[UINavigationController alloc] initWithRootViewController:[DemoViewController new]]; [self.window makeKeyAndVisible]; return YES; } diff --git a/YouTube Video Player Demo/DemoViewController.m b/YouTube Video Player Demo/DemoViewController.m index fff0e1264..a9c3748a0 100644 --- a/YouTube Video Player Demo/DemoViewController.m +++ b/YouTube Video Player Demo/DemoViewController.m @@ -10,13 +10,18 @@ #import "XCDYouTubeVideoPlayerViewController.h" -@interface DemoViewController () +@interface DemoViewController () @property (nonatomic, weak) IBOutlet UITextField *videoIdentifierTextField; @property (nonatomic, weak) IBOutlet UISwitch *lowQualitySwitch; @end @implementation DemoViewController +- (NSString *) title +{ + return [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleDisplayName"]; +} + - (IBAction) playYouTubeVideo:(id)sender { XCDYouTubeVideoPlayerViewController *videoPlayerViewController = [[XCDYouTubeVideoPlayerViewController alloc] initWithYouTubeVideoIdentifier:self.videoIdentifierTextField.text]; @@ -25,4 +30,10 @@ - (IBAction) playYouTubeVideo:(id)sender [self presentMoviePlayerViewControllerAnimated:videoPlayerViewController]; } +- (BOOL) textFieldShouldReturn:(UITextField *)textField +{ + [self playYouTubeVideo:textField]; + return YES; +} + @end diff --git a/YouTube Video Player Demo/DemoViewController.xib b/YouTube Video Player Demo/DemoViewController.xib index b533e1d70..7b9843f4d 100644 --- a/YouTube Video Player Demo/DemoViewController.xib +++ b/YouTube Video Player Demo/DemoViewController.xib @@ -41,7 +41,7 @@ 293 - {{76, 120}, {169, 44}} + {{76, 33}, {169, 44}} @@ -77,9 +77,10 @@ 293 - {{20, 182}, {280, 30}} + {{20, 95}, {280, 30}} + _NS:9 NO YES @@ -100,6 +101,7 @@ IBCocoaTouchFramework + 1 1 17 @@ -120,6 +122,7 @@ {{10, 19}, {104, 21}} + _NS:9 NO YES @@ -152,9 +155,10 @@ 0 - {{46, 216}, {229, 60}} + {{46, 129}, {229, 60}} + _NS:10 3 @@ -163,9 +167,10 @@ IBCocoaTouchFramework - {{0, 20}, {320, 548}} + {{0, 64}, {320, 416}} + 3 MC43NQA @@ -173,6 +178,9 @@ NO + + NO + IBUIScreenMetrics @@ -182,13 +190,13 @@ - {320, 568} - {568, 320} + {320, 480} + {480, 320} IBCocoaTouchFramework - Retina 4 Full Screen - 2 + Retina 3.5 Full Screen + 0 IBCocoaTouchFramework @@ -228,6 +236,14 @@ 16 + + + delegate + + + + 24 + @@ -305,24 +321,13 @@ - 21 + 25 DemoViewController UIViewController - - playYouTubeVideo: - id - - - playYouTubeVideo: - - playYouTubeVideo: - id - - UISwitch UITextField From 0bc5afff2151000bea7b39baab49a862d2734670 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ce=CC=81dric=20Luthi?= Date: Tue, 7 May 2013 13:33:34 +0200 Subject: [PATCH 12/37] Make the videoIdentifier a readwrite property --- .../XCDYouTubeVideoPlayerViewController.h | 2 ++ .../XCDYouTubeVideoPlayerViewController.m | 12 ++++++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.h b/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.h index fcc64807a..a525f7d63 100644 --- a/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.h +++ b/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.h @@ -19,6 +19,8 @@ typedef NS_ENUM(NSUInteger, XCDYouTubeVideoQuality) { - (id) initWithYouTubeVideoIdentifier:(NSString *)videoIdentifier; +@property (nonatomic, strong) NSString *videoIdentifier; + // On iPhone, defaults to @[ @(XCDYouTubeVideoQualityHD720), @(XCDYouTubeVideoQualityMedium360), @(XCDYouTubeVideoQualitySmall240) ] // On iPad, defaults to @[ @(XCDYouTubeVideoQualityHD1080), @(XCDYouTubeVideoQualityHD720), @(XCDYouTubeVideoQualityMedium360), @(XCDYouTubeVideoQualitySmall240) ] // If you really know what you are doing, you can use the `itag` values as described on http://en.wikipedia.org/wiki/YouTube#Quality_and_codecs diff --git a/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.m b/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.m index 0bbfbb713..06fabc984 100644 --- a/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.m +++ b/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.m @@ -38,6 +38,16 @@ - (id) initWithYouTubeVideoIdentifier:(NSString *)videoIdentifier else _preferredVideoQuality = @[ @(XCDYouTubeVideoQualityHD1080), @(XCDYouTubeVideoQualityHD720), @(XCDYouTubeVideoQualityMedium360), @(XCDYouTubeVideoQualitySmall240) ]; + if (videoIdentifier) + self.videoIdentifier = videoIdentifier; + + return self; +} + +- (void) setVideoIdentifier:(NSString *)videoIdentifier +{ + _videoIdentifier = videoIdentifier; + NSURL *videoInfoURL = [NSURL URLWithString:[NSString stringWithFormat:@"https://www.youtube.com/get_video_info?video_id=%@", videoIdentifier]]; NSURLRequest *request = [[NSURLRequest alloc] initWithURL:videoInfoURL cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10]; [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue new] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) { @@ -72,8 +82,6 @@ - (id) initWithYouTubeVideoIdentifier:(NSString *)videoIdentifier if (!streamURL) [self performSelectorOnMainThread:@selector(dismiss) withObject:nil waitUntilDone:NO]; }]; - - return self; } - (void) setStreamURL:(NSURL *)streamURL From 9fb02614ac22627cdf334fef015b539fa29f2bd1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ce=CC=81dric=20Luthi?= Date: Tue, 7 May 2013 15:30:28 +0200 Subject: [PATCH 13/37] Ignore responses from potential older requests --- .../XCDYouTubeVideoPlayerViewController.m | 3 +++ 1 file changed, 3 insertions(+) diff --git a/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.m b/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.m index 06fabc984..defa98eb9 100644 --- a/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.m +++ b/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.m @@ -51,6 +51,9 @@ - (void) setVideoIdentifier:(NSString *)videoIdentifier NSURL *videoInfoURL = [NSURL URLWithString:[NSString stringWithFormat:@"https://www.youtube.com/get_video_info?video_id=%@", videoIdentifier]]; NSURLRequest *request = [[NSURLRequest alloc] initWithURL:videoInfoURL cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10]; [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue new] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) { + if (_videoIdentifier && ![_videoIdentifier isEqual:videoIdentifier]) + return; + NSString *videoQuery = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding]; NSStringEncoding queryEncoding = NSUTF8StringEncoding; NSDictionary *video = DictionaryWithQueryString(videoQuery, queryEncoding); From 4198a547f6d1512b5f43392640c52011bb10ca59 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ce=CC=81dric=20Luthi?= Date: Mon, 13 May 2013 09:59:49 +0200 Subject: [PATCH 14/37] Better init methods --- .../XCDYouTubeVideoPlayerViewController.h | 2 +- .../XCDYouTubeVideoPlayerViewController.m | 14 ++++++++++++-- YouTube Video Player Demo/DemoViewController.m | 2 +- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.h b/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.h index a525f7d63..22c7edfef 100644 --- a/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.h +++ b/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.h @@ -17,7 +17,7 @@ typedef NS_ENUM(NSUInteger, XCDYouTubeVideoQuality) { @interface XCDYouTubeVideoPlayerViewController : MPMoviePlayerViewController -- (id) initWithYouTubeVideoIdentifier:(NSString *)videoIdentifier; +- (id) initWithVideoIdentifier:(NSString *)videoIdentifier; @property (nonatomic, strong) NSString *videoIdentifier; diff --git a/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.m b/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.m index defa98eb9..aa206d77e 100644 --- a/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.m +++ b/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.m @@ -28,9 +28,19 @@ @implementation XCDYouTubeVideoPlayerViewController -- (id) initWithYouTubeVideoIdentifier:(NSString *)videoIdentifier +- (id) init { - if (!(self = [super initWithContentURL:nil])) + return [self initWithVideoIdentifier:nil]; +} + +- (id) initWithContentURL:(NSURL *)contentURL +{ + @throw [NSException exceptionWithName:NSGenericException reason:@"Use the `initWithVideoIdentifier:` method instead." userInfo:nil]; +} + +- (id) initWithVideoIdentifier:(NSString *)videoIdentifier +{ + if (!(self = [super init])) return nil; if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) diff --git a/YouTube Video Player Demo/DemoViewController.m b/YouTube Video Player Demo/DemoViewController.m index a9c3748a0..c8be2785e 100644 --- a/YouTube Video Player Demo/DemoViewController.m +++ b/YouTube Video Player Demo/DemoViewController.m @@ -24,7 +24,7 @@ - (NSString *) title - (IBAction) playYouTubeVideo:(id)sender { - XCDYouTubeVideoPlayerViewController *videoPlayerViewController = [[XCDYouTubeVideoPlayerViewController alloc] initWithYouTubeVideoIdentifier:self.videoIdentifierTextField.text]; + XCDYouTubeVideoPlayerViewController *videoPlayerViewController = [[XCDYouTubeVideoPlayerViewController alloc] initWithVideoIdentifier:self.videoIdentifierTextField.text]; if (self.lowQualitySwitch.on) videoPlayerViewController.preferredVideoQuality = @[ @(XCDYouTubeVideoQualitySmall240), @(XCDYouTubeVideoQualityMedium360) ]; [self presentMoviePlayerViewControllerAnimated:videoPlayerViewController]; From 570a2483e9c6fa9befbb0308bd24742f29979883 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ce=CC=81dric=20Luthi?= Date: Mon, 13 May 2013 10:15:46 +0200 Subject: [PATCH 15/37] Use the real NSURLConnection asynchronous API --- .../XCDYouTubeVideoPlayerViewController.m | 102 +++++++++++------- 1 file changed, 64 insertions(+), 38 deletions(-) diff --git a/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.m b/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.m index aa206d77e..2eae2a530 100644 --- a/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.m +++ b/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.m @@ -26,6 +26,11 @@ return dictionary; } +@interface XCDYouTubeVideoPlayerViewController () +@property (nonatomic, strong) NSURLConnection *connection; +@property (nonatomic, strong) NSMutableData *connectionData; +@end + @implementation XCDYouTubeVideoPlayerViewController - (id) init @@ -56,55 +61,76 @@ - (id) initWithVideoIdentifier:(NSString *)videoIdentifier - (void) setVideoIdentifier:(NSString *)videoIdentifier { + if (![NSThread isMainThread]) + { + [self performSelectorOnMainThread:_cmd withObject:videoIdentifier waitUntilDone:NO]; + return; + } + _videoIdentifier = videoIdentifier; NSURL *videoInfoURL = [NSURL URLWithString:[NSString stringWithFormat:@"https://www.youtube.com/get_video_info?video_id=%@", videoIdentifier]]; NSURLRequest *request = [[NSURLRequest alloc] initWithURL:videoInfoURL cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10]; - [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue new] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) { - if (_videoIdentifier && ![_videoIdentifier isEqual:videoIdentifier]) - return; - - NSString *videoQuery = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding]; - NSStringEncoding queryEncoding = NSUTF8StringEncoding; - NSDictionary *video = DictionaryWithQueryString(videoQuery, queryEncoding); - NSArray *streamQueries = [video[@"url_encoded_fmt_stream_map"] componentsSeparatedByString:@","]; - - NSMutableDictionary *streamURLs = [NSMutableDictionary new]; - for (NSString *streamQuery in streamQueries) - { - NSDictionary *stream = DictionaryWithQueryString(streamQuery, queryEncoding); - NSString *type = stream[@"type"]; - if ([type hasPrefix:@"video/mp4"] || [type hasPrefix:@"video/3gpp"]) - { - NSURL *streamURL = [NSURL URLWithString:[NSString stringWithFormat:@"%@&signature=%@", stream[@"url"], stream[@"sig"]]]; - streamURLs[@([stream[@"itag"] integerValue])] = streamURL; - } - } - - NSURL *streamURL = nil; - for (NSNumber *videoQuality in self.preferredVideoQuality) - { - streamURL = streamURLs[videoQuality]; - if (streamURL) - { - [self performSelectorOnMainThread:@selector(setStreamURL:) withObject:streamURL waitUntilDone:NO]; - break; - } - } - - if (!streamURL) - [self performSelectorOnMainThread:@selector(dismiss) withObject:nil waitUntilDone:NO]; - }]; + [self.connection cancel]; + self.connection = [[NSURLConnection alloc] initWithRequest:request delegate:self]; +} + +#pragma mark - NSURLConnectionDataDelegate / NSURLConnectionDelegate + +- (void) connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response +{ + NSUInteger capacity = response.expectedContentLength == NSURLResponseUnknownLength ? 0 : response.expectedContentLength; + self.connectionData = [[NSMutableData alloc] initWithCapacity:capacity]; +} + +- (void) connection:(NSURLConnection *)connection didReceiveData:(NSData *)data +{ + [self.connectionData appendData:data]; } -- (void) setStreamURL:(NSURL *)streamURL +- (void) connectionDidFinishLoading:(NSURLConnection *)connection; { - self.moviePlayer.contentURL = streamURL; + NSURL *videoURL = [self videoURLWithData:self.connectionData]; + if (videoURL) + self.moviePlayer.contentURL = videoURL; + else + [self.presentingViewController dismissMoviePlayerViewControllerAnimated]; } -- (void) dismiss +- (void) connection:(NSURLConnection *)connection didFailWithError:(NSError *)error { [self.presentingViewController dismissMoviePlayerViewControllerAnimated]; } +#pragma mark - URL Parsing + +- (NSURL *) videoURLWithData:(NSData *)data +{ + NSString *videoQuery = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding]; + NSStringEncoding queryEncoding = NSUTF8StringEncoding; + NSDictionary *video = DictionaryWithQueryString(videoQuery, queryEncoding); + NSArray *streamQueries = [video[@"url_encoded_fmt_stream_map"] componentsSeparatedByString:@","]; + + NSMutableDictionary *streamURLs = [NSMutableDictionary new]; + for (NSString *streamQuery in streamQueries) + { + NSDictionary *stream = DictionaryWithQueryString(streamQuery, queryEncoding); + NSString *type = stream[@"type"]; + if ([type hasPrefix:@"video/mp4"] || [type hasPrefix:@"video/3gpp"]) + { + NSURL *streamURL = [NSURL URLWithString:[NSString stringWithFormat:@"%@&signature=%@", stream[@"url"], stream[@"sig"]]]; + streamURLs[@([stream[@"itag"] integerValue])] = streamURL; + } + } + + for (NSNumber *videoQuality in self.preferredVideoQuality) + { + NSURL *streamURL = streamURLs[videoQuality]; + if (streamURL) + return streamURL; + } + + return nil; +} + @end From 72031b4333a8b7dcf9e5134835c089fc92fa1846 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ce=CC=81dric=20Luthi?= Date: Mon, 13 May 2013 14:45:31 +0200 Subject: [PATCH 16/37] Remove semicolon in method declaration --- .../XCDYouTubeVideoPlayerViewController.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.m b/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.m index 2eae2a530..6c18fcbfb 100644 --- a/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.m +++ b/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.m @@ -88,7 +88,7 @@ - (void) connection:(NSURLConnection *)connection didReceiveData:(NSData *)data [self.connectionData appendData:data]; } -- (void) connectionDidFinishLoading:(NSURLConnection *)connection; +- (void) connectionDidFinishLoading:(NSURLConnection *)connection { NSURL *videoURL = [self videoURLWithData:self.connectionData]; if (videoURL) From c2e8f167ff49718a0934541d9624d6af44808cfa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ce=CC=81dric=20Luthi?= Date: Tue, 14 May 2013 00:45:15 +0200 Subject: [PATCH 17/37] Log MPMoviePlayerPlaybackDidFinishNotification notifications --- .../DemoViewController.m | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/YouTube Video Player Demo/DemoViewController.m b/YouTube Video Player Demo/DemoViewController.m index c8be2785e..e0c7e817a 100644 --- a/YouTube Video Player Demo/DemoViewController.m +++ b/YouTube Video Player Demo/DemoViewController.m @@ -17,6 +17,21 @@ @interface DemoViewController () @implementation DemoViewController +- (id) initWithNibName:(NSString *)nibName bundle:(NSBundle *)nibBundle +{ + if (!(self = [super initWithNibName:nibName bundle:nibBundle])) + return nil; + + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlayerPlaybackDidFinish:) name:MPMoviePlayerPlaybackDidFinishNotification object:nil]; + + return self; +} + +- (void) dealloc +{ + [[NSNotificationCenter defaultCenter] removeObserver:self]; +} + - (NSString *) title { return [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleDisplayName"]; @@ -36,4 +51,25 @@ - (BOOL) textFieldShouldReturn:(UITextField *)textField return YES; } +#pragma mark - Notifications + +- (void) moviePlayerPlaybackDidFinish:(NSNotification *)notification +{ + MPMovieFinishReason finishReason = [notification.userInfo[MPMoviePlayerPlaybackDidFinishReasonUserInfoKey] integerValue]; + NSString *reason = @"Unknown Reason"; + switch (finishReason) + { + case MPMovieFinishReasonPlaybackEnded: + reason = @"Playback Ended"; + break; + case MPMovieFinishReasonPlaybackError: + reason = @"Playback Error"; + break; + case MPMovieFinishReasonUserExited: + reason = @"User Exited"; + break; + } + NSLog(@"moviePlayerPlaybackDidFinish: %@", reason); +} + @end From 2cb50243ba9c349219c62688809fbfb09173b8bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ce=CC=81dric=20Luthi?= Date: Tue, 14 May 2013 00:53:04 +0200 Subject: [PATCH 18/37] Post MPMoviePlayerPlaybackDidFinishNotification on error --- .../XCDYouTubeVideoPlayerViewController.m | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.m b/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.m index 6c18fcbfb..e9d93c275 100644 --- a/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.m +++ b/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.m @@ -75,6 +75,14 @@ - (void) setVideoIdentifier:(NSString *)videoIdentifier self.connection = [[NSURLConnection alloc] initWithRequest:request delegate:self]; } +- (void) finishWithPlaybackError +{ + NSDictionary *userInfo = @{ MPMoviePlayerPlaybackDidFinishReasonUserInfoKey: @(MPMovieFinishReasonPlaybackError) }; + [[NSNotificationCenter defaultCenter] postNotificationName:MPMoviePlayerPlaybackDidFinishNotification object:self.moviePlayer userInfo:userInfo]; + + [self.presentingViewController dismissMoviePlayerViewControllerAnimated]; +} + #pragma mark - NSURLConnectionDataDelegate / NSURLConnectionDelegate - (void) connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response @@ -94,12 +102,12 @@ - (void) connectionDidFinishLoading:(NSURLConnection *)connection if (videoURL) self.moviePlayer.contentURL = videoURL; else - [self.presentingViewController dismissMoviePlayerViewControllerAnimated]; + [self finishWithPlaybackError]; } - (void) connection:(NSURLConnection *)connection didFailWithError:(NSError *)error { - [self.presentingViewController dismissMoviePlayerViewControllerAnimated]; + [self finishWithPlaybackError]; } #pragma mark - URL Parsing From da61d79d7e09f93d873e8090ea4f73516e06034f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ce=CC=81dric=20Luthi?= Date: Tue, 14 May 2013 15:06:16 +0200 Subject: [PATCH 19/37] Try different get_video_info URLs before failing The URLs are from the youtube-dl project: https://github.com/rg3/youtube-dl/ --- .../XCDYouTubeVideoPlayerViewController.m | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.m b/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.m index e9d93c275..9a4ea6e48 100644 --- a/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.m +++ b/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.m @@ -29,6 +29,7 @@ @interface XCDYouTubeVideoPlayerViewController () @property (nonatomic, strong) NSURLConnection *connection; @property (nonatomic, strong) NSMutableData *connectionData; +@property (nonatomic, strong) NSMutableArray *elFields; @end @implementation XCDYouTubeVideoPlayerViewController @@ -69,7 +70,19 @@ - (void) setVideoIdentifier:(NSString *)videoIdentifier _videoIdentifier = videoIdentifier; - NSURL *videoInfoURL = [NSURL URLWithString:[NSString stringWithFormat:@"https://www.youtube.com/get_video_info?video_id=%@", videoIdentifier]]; + self.elFields = [[NSMutableArray alloc] initWithArray:@[ @"embedded", @"detailpage", @"vevo", @"" ]]; + + [self startVideoInfoRequest]; +} + +- (void) startVideoInfoRequest +{ + NSString *elField = [self.elFields objectAtIndex:0]; + [self.elFields removeObjectAtIndex:0]; + if (elField.length > 0) + elField = [@"&el=" stringByAppendingString:elField]; + + NSURL *videoInfoURL = [NSURL URLWithString:[NSString stringWithFormat:@"https://www.youtube.com/get_video_info?video_id=%@%@&ps=default&eurl=&gl=US&hl=en", self.videoIdentifier, elField]]; NSURLRequest *request = [[NSURLRequest alloc] initWithURL:videoInfoURL cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10]; [self.connection cancel]; self.connection = [[NSURLConnection alloc] initWithRequest:request delegate:self]; @@ -101,6 +114,8 @@ - (void) connectionDidFinishLoading:(NSURLConnection *)connection NSURL *videoURL = [self videoURLWithData:self.connectionData]; if (videoURL) self.moviePlayer.contentURL = videoURL; + else if (self.elFields.count > 0) + [self startVideoInfoRequest]; else [self finishWithPlaybackError]; } From 60ebc21272984e828434a9e09cc460d10ed05f49 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ce=CC=81dric=20Luthi?= Date: Tue, 14 May 2013 17:02:10 +0200 Subject: [PATCH 20/37] Log more movie player notifications --- .../DemoViewController.m | 50 ++++++++++++++++++- 1 file changed, 48 insertions(+), 2 deletions(-) diff --git a/YouTube Video Player Demo/DemoViewController.m b/YouTube Video Player Demo/DemoViewController.m index e0c7e817a..bd2cf543f 100644 --- a/YouTube Video Player Demo/DemoViewController.m +++ b/YouTube Video Player Demo/DemoViewController.m @@ -23,6 +23,8 @@ - (id) initWithNibName:(NSString *)nibName bundle:(NSBundle *)nibBundle return nil; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlayerPlaybackDidFinish:) name:MPMoviePlayerPlaybackDidFinishNotification object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlayerPlaybackStateDidChange:) name:MPMoviePlayerPlaybackStateDidChangeNotification object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlayerLoadStateDidChange:) name:MPMoviePlayerLoadStateDidChangeNotification object:nil]; return self; } @@ -56,7 +58,7 @@ - (BOOL) textFieldShouldReturn:(UITextField *)textField - (void) moviePlayerPlaybackDidFinish:(NSNotification *)notification { MPMovieFinishReason finishReason = [notification.userInfo[MPMoviePlayerPlaybackDidFinishReasonUserInfoKey] integerValue]; - NSString *reason = @"Unknown Reason"; + NSString *reason = @"Unknown"; switch (finishReason) { case MPMovieFinishReasonPlaybackEnded: @@ -69,7 +71,51 @@ - (void) moviePlayerPlaybackDidFinish:(NSNotification *)notification reason = @"User Exited"; break; } - NSLog(@"moviePlayerPlaybackDidFinish: %@", reason); + NSLog(@"Finish Reason: %@", reason); +} + +- (void) moviePlayerPlaybackStateDidChange:(NSNotification *)notification +{ + MPMoviePlayerController *moviePlayerController = notification.object; + NSString *playbackState = @"Unknown"; + switch (moviePlayerController.playbackState) + { + case MPMoviePlaybackStateStopped: + playbackState = @"Stopped"; + break; + case MPMoviePlaybackStatePlaying: + playbackState = @"Playing"; + break; + case MPMoviePlaybackStatePaused: + playbackState = @"Paused"; + break; + case MPMoviePlaybackStateInterrupted: + playbackState = @"Interrupted"; + break; + case MPMoviePlaybackStateSeekingForward: + playbackState = @"Seeking Forward"; + break; + case MPMoviePlaybackStateSeekingBackward: + playbackState = @"Seeking Backward"; + break; + } + NSLog(@"Playback State: %@", playbackState); +} + +- (void) moviePlayerLoadStateDidChange:(NSNotification *)notification +{ + MPMoviePlayerController *moviePlayerController = notification.object; + + NSMutableString *loadState = [NSMutableString new]; + MPMovieLoadState state = moviePlayerController.loadState; + if (state & MPMovieLoadStatePlayable) + [loadState appendString:@" | Playable"]; + if (state & MPMovieLoadStatePlaythroughOK) + [loadState appendString:@" | Playthrough OK"]; + if (state & MPMovieLoadStateStalled) + [loadState appendString:@" | Stalled"]; + + NSLog(@"Load State: %@", loadState.length > 0 ? [loadState substringFromIndex:3] : @"N/A"); } @end From 7c29919feefb4bb3b6c2990b53a6f437c59e83dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ce=CC=81dric=20Luthi?= Date: Tue, 14 May 2013 17:23:50 +0200 Subject: [PATCH 21/37] Cancel the connection when the view controller is dismissed This hopefully fixes the (hard to reproduce) problem where the video is playing even after being dismissed --- .../XCDYouTubeVideoPlayerViewController.m | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.m b/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.m index 9a4ea6e48..b12c6123a 100644 --- a/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.m +++ b/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.m @@ -96,6 +96,16 @@ - (void) finishWithPlaybackError [self.presentingViewController dismissMoviePlayerViewControllerAnimated]; } +#pragma mark - UIViewController + +- (void) viewWillDisappear:(BOOL)animated +{ + [super viewWillDisappear:animated]; + + if ([self isBeingDismissed]) + [self.connection cancel]; +} + #pragma mark - NSURLConnectionDataDelegate / NSURLConnectionDelegate - (void) connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response From 1a4ebdaa2a893f1dcfa873b0859c440b73983f8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ce=CC=81dric=20Luthi?= Date: Wed, 15 May 2013 01:40:07 +0200 Subject: [PATCH 22/37] Asynchronous video identifier loading demo --- .../DemoViewController.m | 19 ++ .../DemoViewController.xib | 315 +++++++++++------- .../YouTube Video Player Demo-Prefix.pch | 1 + 3 files changed, 215 insertions(+), 120 deletions(-) diff --git a/YouTube Video Player Demo/DemoViewController.m b/YouTube Video Player Demo/DemoViewController.m index bd2cf543f..b03494a1c 100644 --- a/YouTube Video Player Demo/DemoViewController.m +++ b/YouTube Video Player Demo/DemoViewController.m @@ -39,6 +39,11 @@ - (NSString *) title return [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleDisplayName"]; } +- (void) viewDidLoad +{ + self.videoIdentifierTextField.superview.layer.cornerRadius = 10.f; +} + - (IBAction) playYouTubeVideo:(id)sender { XCDYouTubeVideoPlayerViewController *videoPlayerViewController = [[XCDYouTubeVideoPlayerViewController alloc] initWithVideoIdentifier:self.videoIdentifierTextField.text]; @@ -47,6 +52,20 @@ - (IBAction) playYouTubeVideo:(id)sender [self presentMoviePlayerViewControllerAnimated:videoPlayerViewController]; } +- (IBAction) playTrendingVideo:(id)sender +{ + XCDYouTubeVideoPlayerViewController *videoPlayerViewController = [XCDYouTubeVideoPlayerViewController new]; + [self presentMoviePlayerViewControllerAnimated:videoPlayerViewController]; + + // https://developers.google.com/youtube/2.0/developers_guide_protocol_video_feeds#Standard_feeds + NSURL *url = [NSURL URLWithString:@"https://gdata.youtube.com/feeds/api/standardfeeds/on_the_web?v=2&alt=json&max-results=1"]; + [NSURLConnection sendAsynchronousRequest:[NSURLRequest requestWithURL:url] queue:[NSOperationQueue new] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) { + id json = [NSJSONSerialization JSONObjectWithData:data ?: [NSData new] options:0 error:NULL]; + NSString *videoIdentifier = [[[json valueForKeyPath:@"feed.entry.media$group.yt$videoid.$t"] lastObject] description]; + videoPlayerViewController.videoIdentifier = videoIdentifier; + }]; +} + - (BOOL) textFieldShouldReturn:(UITextField *)textField { [self playYouTubeVideo:textField]; diff --git a/YouTube Video Player Demo/DemoViewController.xib b/YouTube Video Player Demo/DemoViewController.xib index 7b9843f4d..b3a158bfe 100644 --- a/YouTube Video Player Demo/DemoViewController.xib +++ b/YouTube Video Player Demo/DemoViewController.xib @@ -38,139 +38,175 @@ 274 - - - 293 - {{76, 33}, {169, 44}} - - - - _NS:9 - NO - IBCocoaTouchFramework - 0 - 0 - 1 - Play YouTube Video - - 3 - MQA - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - 3 - MC41AA - - - 2 - 15 - - - Helvetica-Bold - 15 - 16 - - - - - 293 - {{20, 95}, {280, 30}} - - - - _NS:9 - NO - YES - IBCocoaTouchFramework - 0 - 9bZkp7q19f0 - 3 - - 3 - MAA - - 2 - - - 1 - YES - 17 - - IBCocoaTouchFramework - - 1 - - 1 - 17 - - - Helvetica - 17 - 16 - - - + 293 - - - 300 - {{10, 19}, {104, 21}} - + + + 269 + + + + 300 + {{10, 19}, {104, 21}} + + + + _NS:9 + NO + YES + 7 + NO + IBCocoaTouchFramework + Low Quality: + + 3 + MQA + + + 0 + 2 + + 1 + 17 + + + Helvetica + 17 + 16 + + NO + + + + 297 + {{117, 16}, {94, 27}} + + + + _NS:9 + NO + IBCocoaTouchFramework + 0 + 0 + + + {{36, 63}, {229, 60}} + - + + _NS:10 + + 3 + MCAwAA + + IBCocoaTouchFramework + + + + 293 + {{20, 20}, {100, 44}} + + + _NS:9 NO - YES - 7 - NO IBCocoaTouchFramework - Low Quality: - + 0 + 0 + 1 + Play Video + + 1 - MCAwIDAAA - darkTextColor + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + 3 + MC41AA + + + 2 + 15 + + + Helvetica-Bold + 15 + 16 - - 0 - 2 - - - NO - - - 297 - {{117, 16}, {94, 27}} - + + + 293 + {{128, 27}, {152, 30}} + + _NS:9 NO + YES IBCocoaTouchFramework - 0 0 + 9bZkp7q19f0 + 3 + + 3 + MAA + + 2 + + + 1 + YES + 17 + + IBCocoaTouchFramework + + 1 + + - {{46, 129}, {229, 60}} + {{10, 10}, {300, 131}} - + _NS:10 3 - MCAwAA + MC4zMzMzMzMzMzMzAA IBCocoaTouchFramework + + + 293 + {{76, 149}, {169, 44}} + + + + _NS:9 + NO + IBCocoaTouchFramework + 0 + 0 + 1 + Play Trending Video + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + + + {{0, 64}, {320, 416}} - + 3 MC43NQA @@ -213,19 +249,19 @@ - videoIdentifierTextField + lowQualitySwitch - + - 17 + 20 - lowQualitySwitch + videoIdentifierTextField - + - 20 + 17 @@ -244,6 +280,15 @@ 24 + + + playTrendingVideo: + + + 7 + + 30 + @@ -268,30 +313,34 @@ 6 - - - + + - 14 - + 27 + - 15 - + 29 + + + + + + 21 - + - + 18 @@ -303,6 +352,16 @@ + + 14 + + + + + 15 + + + @@ -315,19 +374,35 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 25 + 30 DemoViewController UIViewController + + id + id + + + + playTrendingVideo: + id + + + playYouTubeVideo: + id + + UISwitch UITextField diff --git a/YouTube Video Player Demo/YouTube Video Player Demo-Prefix.pch b/YouTube Video Player Demo/YouTube Video Player Demo-Prefix.pch index 89a274b8b..7148aca03 100644 --- a/YouTube Video Player Demo/YouTube Video Player Demo-Prefix.pch +++ b/YouTube Video Player Demo/YouTube Video Player Demo-Prefix.pch @@ -11,4 +11,5 @@ #ifdef __OBJC__ #import #import + #import #endif From d0912598c7dca0e4d578b7611485a072e48ea60c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ce=CC=81dric=20Luthi?= Date: Thu, 16 May 2013 00:51:23 +0200 Subject: [PATCH 23/37] Add NSError in MPMoviePlayerPlaybackDidFinishNotification userInfo --- .../XCDYouTubeVideoPlayerViewController.h | 3 ++ .../XCDYouTubeVideoPlayerViewController.m | 30 ++++++++++++++----- 2 files changed, 26 insertions(+), 7 deletions(-) diff --git a/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.h b/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.h index 22c7edfef..15ebcc9ca 100644 --- a/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.h +++ b/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.h @@ -15,6 +15,9 @@ typedef NS_ENUM(NSUInteger, XCDYouTubeVideoQuality) { XCDYouTubeVideoQualityHD1080 = 37, }; +MP_EXTERN NSString *const XCDYouTubeVideoErrorDomain; +MP_EXTERN NSString *const XCDMoviePlayerPlaybackDidFinishErrorUserInfoKey; // NSError + @interface XCDYouTubeVideoPlayerViewController : MPMoviePlayerViewController - (id) initWithVideoIdentifier:(NSString *)videoIdentifier; diff --git a/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.m b/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.m index b12c6123a..f33969fe7 100644 --- a/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.m +++ b/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.m @@ -8,6 +8,9 @@ #import "XCDYouTubeVideoPlayerViewController.h" +NSString *const XCDYouTubeVideoErrorDomain = @"XCDYouTubeVideoErrorDomain"; +NSString *const XCDMoviePlayerPlaybackDidFinishErrorUserInfoKey = @"XCDMoviePlayerPlaybackDidFinishErrorUserInfoKey"; + static NSDictionary *DictionaryWithQueryString(NSString *string, NSStringEncoding encoding) { NSMutableDictionary *dictionary = [NSMutableDictionary new]; @@ -82,15 +85,16 @@ - (void) startVideoInfoRequest if (elField.length > 0) elField = [@"&el=" stringByAppendingString:elField]; - NSURL *videoInfoURL = [NSURL URLWithString:[NSString stringWithFormat:@"https://www.youtube.com/get_video_info?video_id=%@%@&ps=default&eurl=&gl=US&hl=en", self.videoIdentifier, elField]]; + NSURL *videoInfoURL = [NSURL URLWithString:[NSString stringWithFormat:@"https://www.youtube.com/get_video_info?video_id=%@%@&ps=default&eurl=&gl=US&hl=en", self.videoIdentifier ?: @"", elField]]; NSURLRequest *request = [[NSURLRequest alloc] initWithURL:videoInfoURL cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10]; [self.connection cancel]; self.connection = [[NSURLConnection alloc] initWithRequest:request delegate:self]; } -- (void) finishWithPlaybackError +- (void) finishWithError:(NSError *)error { - NSDictionary *userInfo = @{ MPMoviePlayerPlaybackDidFinishReasonUserInfoKey: @(MPMovieFinishReasonPlaybackError) }; + NSDictionary *userInfo = @{ MPMoviePlayerPlaybackDidFinishReasonUserInfoKey: @(MPMovieFinishReasonPlaybackError), + XCDMoviePlayerPlaybackDidFinishErrorUserInfoKey: error }; [[NSNotificationCenter defaultCenter] postNotificationName:MPMoviePlayerPlaybackDidFinishNotification object:self.moviePlayer userInfo:userInfo]; [self.presentingViewController dismissMoviePlayerViewControllerAnimated]; @@ -121,23 +125,24 @@ - (void) connection:(NSURLConnection *)connection didReceiveData:(NSData *)data - (void) connectionDidFinishLoading:(NSURLConnection *)connection { - NSURL *videoURL = [self videoURLWithData:self.connectionData]; + NSError *error = nil; + NSURL *videoURL = [self videoURLWithData:self.connectionData error:&error]; if (videoURL) self.moviePlayer.contentURL = videoURL; else if (self.elFields.count > 0) [self startVideoInfoRequest]; else - [self finishWithPlaybackError]; + [self finishWithError:error]; } - (void) connection:(NSURLConnection *)connection didFailWithError:(NSError *)error { - [self finishWithPlaybackError]; + [self finishWithError:error]; } #pragma mark - URL Parsing -- (NSURL *) videoURLWithData:(NSData *)data +- (NSURL *) videoURLWithData:(NSData *)data error:(NSError **)error { NSString *videoQuery = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding]; NSStringEncoding queryEncoding = NSUTF8StringEncoding; @@ -163,6 +168,17 @@ - (NSURL *) videoURLWithData:(NSData *)data return streamURL; } + if (error) + { + NSMutableDictionary *userInfo = [@{ NSURLErrorKey: self.connection.originalRequest.URL } mutableCopy]; + NSString *reason = video[@"reason"]; + if (reason) + userInfo[NSLocalizedDescriptionKey] = reason; + + NSInteger code = [video[@"errorcode"] integerValue]; + *error = [NSError errorWithDomain:XCDYouTubeVideoErrorDomain code:code userInfo:userInfo]; + } + return nil; } From dbdab2085d7a1b57b96d98afc333423f580226d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ce=CC=81dric=20Luthi?= Date: Thu, 16 May 2013 00:54:57 +0200 Subject: [PATCH 24/37] Log error --- YouTube Video Player Demo/DemoViewController.m | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/YouTube Video Player Demo/DemoViewController.m b/YouTube Video Player Demo/DemoViewController.m index b03494a1c..ce2b13c8c 100644 --- a/YouTube Video Player Demo/DemoViewController.m +++ b/YouTube Video Player Demo/DemoViewController.m @@ -77,6 +77,7 @@ - (BOOL) textFieldShouldReturn:(UITextField *)textField - (void) moviePlayerPlaybackDidFinish:(NSNotification *)notification { MPMovieFinishReason finishReason = [notification.userInfo[MPMoviePlayerPlaybackDidFinishReasonUserInfoKey] integerValue]; + NSError *error = notification.userInfo[XCDMoviePlayerPlaybackDidFinishErrorUserInfoKey]; NSString *reason = @"Unknown"; switch (finishReason) { @@ -90,7 +91,7 @@ - (void) moviePlayerPlaybackDidFinish:(NSNotification *)notification reason = @"User Exited"; break; } - NSLog(@"Finish Reason: %@", reason); + NSLog(@"Finish Reason: %@%@", reason, error ? [@"\n" stringByAppendingString:[error description]] : @""); } - (void) moviePlayerPlaybackStateDidChange:(NSNotification *)notification From 8c61a50e890e808895d3311ff62ade3a6f0b9d2f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ce=CC=81dric=20Luthi?= Date: Thu, 16 May 2013 00:56:54 +0200 Subject: [PATCH 25/37] Hide keyboard when tapping outside the text field --- YouTube Video Player Demo/DemoViewController.m | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/YouTube Video Player Demo/DemoViewController.m b/YouTube Video Player Demo/DemoViewController.m index ce2b13c8c..3fa89cdbe 100644 --- a/YouTube Video Player Demo/DemoViewController.m +++ b/YouTube Video Player Demo/DemoViewController.m @@ -44,6 +44,11 @@ - (void) viewDidLoad self.videoIdentifierTextField.superview.layer.cornerRadius = 10.f; } +- (void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event +{ + [self.view endEditing:YES]; +} + - (IBAction) playYouTubeVideo:(id)sender { XCDYouTubeVideoPlayerViewController *videoPlayerViewController = [[XCDYouTubeVideoPlayerViewController alloc] initWithVideoIdentifier:self.videoIdentifierTextField.text]; From 9b774935135621814824a060958ee29e16fe2468 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ce=CC=81dric=20Luthi?= Date: Thu, 16 May 2013 01:39:44 +0200 Subject: [PATCH 26/37] Use `isPlayableExtendedMIMEType:` instead of hardcoding MIME types --- .../XCDYouTubeVideoPlayerViewController.m | 4 +++- YouTube Video Player Demo.xcodeproj/project.pbxproj | 8 ++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.m b/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.m index f33969fe7..f0fd8edcd 100644 --- a/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.m +++ b/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.m @@ -8,6 +8,8 @@ #import "XCDYouTubeVideoPlayerViewController.h" +#import + NSString *const XCDYouTubeVideoErrorDomain = @"XCDYouTubeVideoErrorDomain"; NSString *const XCDMoviePlayerPlaybackDidFinishErrorUserInfoKey = @"XCDMoviePlayerPlaybackDidFinishErrorUserInfoKey"; @@ -154,7 +156,7 @@ - (NSURL *) videoURLWithData:(NSData *)data error:(NSError **)error { NSDictionary *stream = DictionaryWithQueryString(streamQuery, queryEncoding); NSString *type = stream[@"type"]; - if ([type hasPrefix:@"video/mp4"] || [type hasPrefix:@"video/3gpp"]) + if ([AVURLAsset isPlayableExtendedMIMEType:type]) { NSURL *streamURL = [NSURL URLWithString:[NSString stringWithFormat:@"%@&signature=%@", stream[@"url"], stream[@"sig"]]]; streamURLs[@([stream[@"itag"] integerValue])] = streamURL; diff --git a/YouTube Video Player Demo.xcodeproj/project.pbxproj b/YouTube Video Player Demo.xcodeproj/project.pbxproj index a1e11bad0..682a7e30c 100644 --- a/YouTube Video Player Demo.xcodeproj/project.pbxproj +++ b/YouTube Video Player Demo.xcodeproj/project.pbxproj @@ -7,6 +7,7 @@ objects = { /* Begin PBXBuildFile section */ + C261FBDD17444FF2005FDFCA /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C261FBDC17444FF2005FDFCA /* AVFoundation.framework */; }; C285F6D717324F7500D81C59 /* DemoViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = C285F6D617324F7500D81C59 /* DemoViewController.xib */; }; C285F6DC1732522300D81C59 /* XCDYouTubeVideoPlayerViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = C285F6DB1732522300D81C59 /* XCDYouTubeVideoPlayerViewController.m */; }; C285F6DE1732523400D81C59 /* MediaPlayer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C285F6DD1732523400D81C59 /* MediaPlayer.framework */; }; @@ -22,6 +23,7 @@ /* End PBXBuildFile section */ /* Begin PBXFileReference section */ + C261FBDC17444FF2005FDFCA /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; C285F6D617324F7500D81C59 /* DemoViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = DemoViewController.xib; sourceTree = ""; }; C285F6DA1732522300D81C59 /* XCDYouTubeVideoPlayerViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XCDYouTubeVideoPlayerViewController.h; sourceTree = ""; }; C285F6DB1732522300D81C59 /* XCDYouTubeVideoPlayerViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XCDYouTubeVideoPlayerViewController.m; sourceTree = ""; }; @@ -51,6 +53,7 @@ C29CC80F17324DD400581C7C /* Foundation.framework in Frameworks */, C29CC81117324DD400581C7C /* CoreGraphics.framework in Frameworks */, C285F6DE1732523400D81C59 /* MediaPlayer.framework in Frameworks */, + C261FBDD17444FF2005FDFCA /* AVFoundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -90,10 +93,11 @@ C29CC80B17324DD400581C7C /* Frameworks */ = { isa = PBXGroup; children = ( - C29CC80C17324DD400581C7C /* UIKit.framework */, - C29CC80E17324DD400581C7C /* Foundation.framework */, + C261FBDC17444FF2005FDFCA /* AVFoundation.framework */, C29CC81017324DD400581C7C /* CoreGraphics.framework */, + C29CC80E17324DD400581C7C /* Foundation.framework */, C285F6DD1732523400D81C59 /* MediaPlayer.framework */, + C29CC80C17324DD400581C7C /* UIKit.framework */, ); name = Frameworks; sourceTree = ""; From 4a434110190547099b45ad82e5f987a055cf1bab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ce=CC=81dric=20Luthi?= Date: Fri, 17 May 2013 15:05:13 +0200 Subject: [PATCH 27/37] Do not unnecessarily relaunch the video info request --- .../XCDYouTubeVideoPlayerViewController.m | 3 +++ 1 file changed, 3 insertions(+) diff --git a/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.m b/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.m index f0fd8edcd..a60bf255c 100644 --- a/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.m +++ b/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.m @@ -73,6 +73,9 @@ - (void) setVideoIdentifier:(NSString *)videoIdentifier return; } + if ([videoIdentifier isEqual:self.videoIdentifier]) + return; + _videoIdentifier = videoIdentifier; self.elFields = [[NSMutableArray alloc] initWithArray:@[ @"embedded", @"detailpage", @"vevo", @"" ]]; From d789b76b8988e9ae9e4b1bf820219f7154cf45fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ce=CC=81dric=20Luthi?= Date: Fri, 17 May 2013 15:13:02 +0200 Subject: [PATCH 28/37] Implement an embedded video player --- .../XCDYouTubeVideoPlayerViewController.h | 3 ++ .../XCDYouTubeVideoPlayerViewController.m | 34 ++++++++++++++++++- 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.h b/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.h index 15ebcc9ca..f6a42c387 100644 --- a/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.h +++ b/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.h @@ -29,4 +29,7 @@ MP_EXTERN NSString *const XCDMoviePlayerPlaybackDidFinishErrorUserInfoKey; // NS // If you really know what you are doing, you can use the `itag` values as described on http://en.wikipedia.org/wiki/YouTube#Quality_and_codecs @property (nonatomic, strong) NSArray *preferredVideoQuality; +// Ownership of the `moviePlayer` property is transferred to the view. +- (void) presentInView:(UIView *)view; + @end diff --git a/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.m b/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.m index a60bf255c..ab0a3f4a8 100644 --- a/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.m +++ b/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.m @@ -9,6 +9,7 @@ #import "XCDYouTubeVideoPlayerViewController.h" #import +#import NSString *const XCDYouTubeVideoErrorDomain = @"XCDYouTubeVideoErrorDomain"; NSString *const XCDMoviePlayerPlaybackDidFinishErrorUserInfoKey = @"XCDMoviePlayerPlaybackDidFinishErrorUserInfoKey"; @@ -35,10 +36,13 @@ @interface XCDYouTubeVideoPlayerViewController () @property (nonatomic, strong) NSURLConnection *connection; @property (nonatomic, strong) NSMutableData *connectionData; @property (nonatomic, strong) NSMutableArray *elFields; +@property (nonatomic, assign, getter = isEmbedded) BOOL embedded; @end @implementation XCDYouTubeVideoPlayerViewController +static void *MoviePlayerKey = &MoviePlayerKey; + - (id) init { return [self initWithVideoIdentifier:nil]; @@ -83,6 +87,16 @@ - (void) setVideoIdentifier:(NSString *)videoIdentifier [self startVideoInfoRequest]; } +- (void) presentInView:(UIView *)view +{ + self.embedded = YES; + + self.moviePlayer.controlStyle = MPMovieControlStyleEmbedded; + self.moviePlayer.view.frame = CGRectMake(0.f, 0.f, CGRectGetWidth(view.bounds), CGRectGetHeight(view.bounds)); + [view addSubview:self.moviePlayer.view]; + objc_setAssociatedObject(view, MoviePlayerKey, self.moviePlayer, OBJC_ASSOCIATION_RETAIN_NONATOMIC); +} + - (void) startVideoInfoRequest { NSString *elField = [self.elFields objectAtIndex:0]; @@ -102,11 +116,22 @@ - (void) finishWithError:(NSError *)error XCDMoviePlayerPlaybackDidFinishErrorUserInfoKey: error }; [[NSNotificationCenter defaultCenter] postNotificationName:MPMoviePlayerPlaybackDidFinishNotification object:self.moviePlayer userInfo:userInfo]; - [self.presentingViewController dismissMoviePlayerViewControllerAnimated]; + if (self.isEmbedded) + [self.moviePlayer.view removeFromSuperview]; + else + [self.presentingViewController dismissMoviePlayerViewControllerAnimated]; } #pragma mark - UIViewController +- (void) viewWillAppear:(BOOL)animated +{ + [super viewWillAppear:animated]; + + if ([self isBeingPresented]) + self.moviePlayer.controlStyle = MPMovieControlStyleFullscreen; +} + - (void) viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; @@ -133,11 +158,18 @@ - (void) connectionDidFinishLoading:(NSURLConnection *)connection NSError *error = nil; NSURL *videoURL = [self videoURLWithData:self.connectionData error:&error]; if (videoURL) + { self.moviePlayer.contentURL = videoURL; + [self.moviePlayer prepareToPlay]; + } else if (self.elFields.count > 0) + { [self startVideoInfoRequest]; + } else + { [self finishWithError:error]; + } } - (void) connection:(NSURLConnection *)connection didFailWithError:(NSError *)error From d4ccac0fb352ef043d90a6c18ec4e31a0c5e8031 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ce=CC=81dric=20Luthi?= Date: Fri, 17 May 2013 15:19:35 +0200 Subject: [PATCH 29/37] Use embedded player in demo --- .../DemoViewController.m | 28 +++- .../DemoViewController.xib | 129 +++++++++++++++++- 2 files changed, 148 insertions(+), 9 deletions(-) diff --git a/YouTube Video Player Demo/DemoViewController.m b/YouTube Video Player Demo/DemoViewController.m index 3fa89cdbe..2b43744d1 100644 --- a/YouTube Video Player Demo/DemoViewController.m +++ b/YouTube Video Player Demo/DemoViewController.m @@ -13,6 +13,10 @@ @interface DemoViewController () @property (nonatomic, weak) IBOutlet UITextField *videoIdentifierTextField; @property (nonatomic, weak) IBOutlet UISwitch *lowQualitySwitch; +@property (nonatomic, weak) IBOutlet UIView *videoContainerView; +@property (nonatomic, weak) IBOutlet UISwitch *fullScreenSwitch; + +@property (nonatomic, strong) XCDYouTubeVideoPlayerViewController *videoPlayerViewController; @end @implementation DemoViewController @@ -51,16 +55,32 @@ - (void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event - (IBAction) playYouTubeVideo:(id)sender { - XCDYouTubeVideoPlayerViewController *videoPlayerViewController = [[XCDYouTubeVideoPlayerViewController alloc] initWithVideoIdentifier:self.videoIdentifierTextField.text]; + if (!self.videoPlayerViewController) + self.videoPlayerViewController = [[XCDYouTubeVideoPlayerViewController alloc] initWithVideoIdentifier:self.videoIdentifierTextField.text]; + else + self.videoPlayerViewController.videoIdentifier = self.videoIdentifierTextField.text; + if (self.lowQualitySwitch.on) - videoPlayerViewController.preferredVideoQuality = @[ @(XCDYouTubeVideoQualitySmall240), @(XCDYouTubeVideoQualityMedium360) ]; - [self presentMoviePlayerViewControllerAnimated:videoPlayerViewController]; + self.videoPlayerViewController.preferredVideoQuality = @[ @(XCDYouTubeVideoQualitySmall240), @(XCDYouTubeVideoQualityMedium360) ]; + + if (self.fullScreenSwitch.on) + [self presentMoviePlayerViewControllerAnimated:self.videoPlayerViewController]; + else if (![self.videoContainerView.subviews containsObject:self.videoPlayerViewController.moviePlayer.view]) + [self.videoPlayerViewController presentInView:self.videoContainerView]; } - (IBAction) playTrendingVideo:(id)sender { XCDYouTubeVideoPlayerViewController *videoPlayerViewController = [XCDYouTubeVideoPlayerViewController new]; - [self presentMoviePlayerViewControllerAnimated:videoPlayerViewController]; + if (self.fullScreenSwitch.on) + { + [self presentMoviePlayerViewControllerAnimated:videoPlayerViewController]; + } + else + { + [self.videoContainerView.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)]; + [videoPlayerViewController presentInView:self.videoContainerView]; + } // https://developers.google.com/youtube/2.0/developers_guide_protocol_video_feeds#Standard_feeds NSURL *url = [NSURL URLWithString:@"https://gdata.youtube.com/feeds/api/standardfeeds/on_the_web?v=2&alt=json&max-results=1"]; diff --git a/YouTube Video Player Demo/DemoViewController.xib b/YouTube Video Player Demo/DemoViewController.xib index b3a158bfe..913501f58 100644 --- a/YouTube Video Player Demo/DemoViewController.xib +++ b/YouTube Video Player Demo/DemoViewController.xib @@ -81,7 +81,7 @@ 297 - {{117, 16}, {94, 27}} + {{118, 16}, {94, 27}} @@ -92,12 +92,12 @@ 0 - {{36, 63}, {229, 60}} + {{36, 63}, {230, 60}} _NS:10 - + 3 MCAwAA @@ -185,7 +185,7 @@ {{76, 149}, {169, 44}} - + _NS:9 NO IBCocoaTouchFramework @@ -202,6 +202,68 @@ + + + 282 + + {{20, 200}, {280, 174}} + + + + _NS:9 + + 3 + MC42NjY2NjY2NjY3AA + + IBCocoaTouchFramework + + + + 269 + + + + 300 + {{10, 11}, {104, 21}} + + + + _NS:9 + NO + YES + 7 + NO + IBCocoaTouchFramework + Full Screen: + + 0 + 2 + + + NO + + + + 297 + {{118, 8}, {94, 27}} + + + _NS:9 + NO + IBCocoaTouchFramework + 0 + 0 + YES + + + {{45, 373}, {230, 43}} + + + + _NS:10 + + IBCocoaTouchFramework + {{0, 64}, {320, 416}} @@ -263,6 +325,22 @@ 17 + + + videoContainerView + + + + 32 + + + + fullScreenSwitch + + + + 38 + playYouTubeVideo: @@ -315,6 +393,8 @@ + + @@ -362,6 +442,31 @@ + + 31 + + + + + + 35 + + + + + + + + + 37 + + + + + 36 + + + @@ -376,13 +481,17 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 30 + 38 @@ -404,14 +513,24 @@ + UISwitch UISwitch + UIView UITextField + + fullScreenSwitch + UISwitch + lowQualitySwitch UISwitch + + videoContainerView + UIView + videoIdentifierTextField UITextField From 83f618a9d0d5748cadddbc2addb84bfb7d051a11 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ce=CC=81dric=20Luthi?= Date: Fri, 17 May 2013 15:22:46 +0200 Subject: [PATCH 30/37] Make sure the embedded player view frame matches its container view --- .../XCDYouTubeVideoPlayerViewController.m | 1 + 1 file changed, 1 insertion(+) diff --git a/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.m b/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.m index ab0a3f4a8..afbf8627f 100644 --- a/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.m +++ b/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.m @@ -93,6 +93,7 @@ - (void) presentInView:(UIView *)view self.moviePlayer.controlStyle = MPMovieControlStyleEmbedded; self.moviePlayer.view.frame = CGRectMake(0.f, 0.f, CGRectGetWidth(view.bounds), CGRectGetHeight(view.bounds)); + self.moviePlayer.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; [view addSubview:self.moviePlayer.view]; objc_setAssociatedObject(view, MoviePlayerKey, self.moviePlayer, OBJC_ASSOCIATION_RETAIN_NONATOMIC); } From ea9bb1ade26109aef84524695ba5c66480584791 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ce=CC=81dric=20Luthi?= Date: Fri, 17 May 2013 15:51:41 +0200 Subject: [PATCH 31/37] Change the videoIdentifier property semantics from strong to copy --- .../XCDYouTubeVideoPlayerViewController.h | 2 +- .../XCDYouTubeVideoPlayerViewController.m | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.h b/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.h index f6a42c387..78d3f26ec 100644 --- a/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.h +++ b/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.h @@ -22,7 +22,7 @@ MP_EXTERN NSString *const XCDMoviePlayerPlaybackDidFinishErrorUserInfoKey; // NS - (id) initWithVideoIdentifier:(NSString *)videoIdentifier; -@property (nonatomic, strong) NSString *videoIdentifier; +@property (nonatomic, copy) NSString *videoIdentifier; // On iPhone, defaults to @[ @(XCDYouTubeVideoQualityHD720), @(XCDYouTubeVideoQualityMedium360), @(XCDYouTubeVideoQualitySmall240) ] // On iPad, defaults to @[ @(XCDYouTubeVideoQualityHD1080), @(XCDYouTubeVideoQualityHD720), @(XCDYouTubeVideoQualityMedium360), @(XCDYouTubeVideoQualitySmall240) ] diff --git a/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.m b/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.m index afbf8627f..30177ee86 100644 --- a/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.m +++ b/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.m @@ -80,7 +80,7 @@ - (void) setVideoIdentifier:(NSString *)videoIdentifier if ([videoIdentifier isEqual:self.videoIdentifier]) return; - _videoIdentifier = videoIdentifier; + _videoIdentifier = [videoIdentifier copy]; self.elFields = [[NSMutableArray alloc] initWithArray:@[ @"embedded", @"detailpage", @"vevo", @"" ]]; From e1920a76ddb869b71dca554b74ccf8a1a976c04a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ce=CC=81dric=20Luthi?= Date: Fri, 17 May 2013 16:03:48 +0200 Subject: [PATCH 32/37] Rename preferredVideoQuality into preferredVideoQualities --- .../XCDYouTubeVideoPlayerViewController.h | 2 +- .../XCDYouTubeVideoPlayerViewController.m | 6 +++--- YouTube Video Player Demo/DemoViewController.m | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.h b/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.h index 78d3f26ec..81cc24286 100644 --- a/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.h +++ b/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.h @@ -27,7 +27,7 @@ MP_EXTERN NSString *const XCDMoviePlayerPlaybackDidFinishErrorUserInfoKey; // NS // On iPhone, defaults to @[ @(XCDYouTubeVideoQualityHD720), @(XCDYouTubeVideoQualityMedium360), @(XCDYouTubeVideoQualitySmall240) ] // On iPad, defaults to @[ @(XCDYouTubeVideoQualityHD1080), @(XCDYouTubeVideoQualityHD720), @(XCDYouTubeVideoQualityMedium360), @(XCDYouTubeVideoQualitySmall240) ] // If you really know what you are doing, you can use the `itag` values as described on http://en.wikipedia.org/wiki/YouTube#Quality_and_codecs -@property (nonatomic, strong) NSArray *preferredVideoQuality; +@property (nonatomic, strong) NSArray *preferredVideoQualities; // Ownership of the `moviePlayer` property is transferred to the view. - (void) presentInView:(UIView *)view; diff --git a/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.m b/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.m index 30177ee86..499fdf7b4 100644 --- a/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.m +++ b/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.m @@ -59,9 +59,9 @@ - (id) initWithVideoIdentifier:(NSString *)videoIdentifier return nil; if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) - _preferredVideoQuality = @[ @(XCDYouTubeVideoQualityHD720), @(XCDYouTubeVideoQualityMedium360), @(XCDYouTubeVideoQualitySmall240) ]; + _preferredVideoQualities = @[ @(XCDYouTubeVideoQualityHD720), @(XCDYouTubeVideoQualityMedium360), @(XCDYouTubeVideoQualitySmall240) ]; else - _preferredVideoQuality = @[ @(XCDYouTubeVideoQualityHD1080), @(XCDYouTubeVideoQualityHD720), @(XCDYouTubeVideoQualityMedium360), @(XCDYouTubeVideoQualitySmall240) ]; + _preferredVideoQualities = @[ @(XCDYouTubeVideoQualityHD1080), @(XCDYouTubeVideoQualityHD720), @(XCDYouTubeVideoQualityMedium360), @(XCDYouTubeVideoQualitySmall240) ]; if (videoIdentifier) self.videoIdentifier = videoIdentifier; @@ -199,7 +199,7 @@ - (NSURL *) videoURLWithData:(NSData *)data error:(NSError **)error } } - for (NSNumber *videoQuality in self.preferredVideoQuality) + for (NSNumber *videoQuality in self.preferredVideoQualities) { NSURL *streamURL = streamURLs[videoQuality]; if (streamURL) diff --git a/YouTube Video Player Demo/DemoViewController.m b/YouTube Video Player Demo/DemoViewController.m index 2b43744d1..deef9a8e4 100644 --- a/YouTube Video Player Demo/DemoViewController.m +++ b/YouTube Video Player Demo/DemoViewController.m @@ -61,7 +61,7 @@ - (IBAction) playYouTubeVideo:(id)sender self.videoPlayerViewController.videoIdentifier = self.videoIdentifierTextField.text; if (self.lowQualitySwitch.on) - self.videoPlayerViewController.preferredVideoQuality = @[ @(XCDYouTubeVideoQualitySmall240), @(XCDYouTubeVideoQualityMedium360) ]; + self.videoPlayerViewController.preferredVideoQualities = @[ @(XCDYouTubeVideoQualitySmall240), @(XCDYouTubeVideoQualityMedium360) ]; if (self.fullScreenSwitch.on) [self presentMoviePlayerViewControllerAnimated:self.videoPlayerViewController]; From f8f0f414f226d2066cb18e72c495ed05f691b120 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ce=CC=81dric=20Luthi?= Date: Fri, 17 May 2013 17:18:12 +0200 Subject: [PATCH 33/37] Remove dependency on CoreGraphics --- .../XCDYouTubeVideoPlayerViewController.m | 2 +- YouTube Video Player Demo.xcodeproj/project.pbxproj | 4 ---- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.m b/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.m index 499fdf7b4..23beb15c1 100644 --- a/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.m +++ b/XCDYouTubeVideoPlayerViewController/XCDYouTubeVideoPlayerViewController.m @@ -92,7 +92,7 @@ - (void) presentInView:(UIView *)view self.embedded = YES; self.moviePlayer.controlStyle = MPMovieControlStyleEmbedded; - self.moviePlayer.view.frame = CGRectMake(0.f, 0.f, CGRectGetWidth(view.bounds), CGRectGetHeight(view.bounds)); + self.moviePlayer.view.frame = CGRectMake(0.f, 0.f, view.bounds.size.width, view.bounds.size.height); self.moviePlayer.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; [view addSubview:self.moviePlayer.view]; objc_setAssociatedObject(view, MoviePlayerKey, self.moviePlayer, OBJC_ASSOCIATION_RETAIN_NONATOMIC); diff --git a/YouTube Video Player Demo.xcodeproj/project.pbxproj b/YouTube Video Player Demo.xcodeproj/project.pbxproj index 682a7e30c..f76b291b3 100644 --- a/YouTube Video Player Demo.xcodeproj/project.pbxproj +++ b/YouTube Video Player Demo.xcodeproj/project.pbxproj @@ -13,7 +13,6 @@ C285F6DE1732523400D81C59 /* MediaPlayer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C285F6DD1732523400D81C59 /* MediaPlayer.framework */; }; C29CC80D17324DD400581C7C /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C29CC80C17324DD400581C7C /* UIKit.framework */; }; C29CC80F17324DD400581C7C /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C29CC80E17324DD400581C7C /* Foundation.framework */; }; - C29CC81117324DD400581C7C /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C29CC81017324DD400581C7C /* CoreGraphics.framework */; }; C29CC81917324DD400581C7C /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = C29CC81817324DD400581C7C /* main.m */; }; C29CC81D17324DD400581C7C /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = C29CC81C17324DD400581C7C /* AppDelegate.m */; }; C29CC81F17324DD400581C7C /* Default.png in Resources */ = {isa = PBXBuildFile; fileRef = C29CC81E17324DD400581C7C /* Default.png */; }; @@ -31,7 +30,6 @@ C29CC80917324DD400581C7C /* YouTube Video Player Demo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "YouTube Video Player Demo.app"; sourceTree = BUILT_PRODUCTS_DIR; }; C29CC80C17324DD400581C7C /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; C29CC80E17324DD400581C7C /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; - C29CC81017324DD400581C7C /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; C29CC81417324DD400581C7C /* YouTube Video Player Demo-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "YouTube Video Player Demo-Info.plist"; sourceTree = ""; }; C29CC81817324DD400581C7C /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; C29CC81A17324DD400581C7C /* YouTube Video Player Demo-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "YouTube Video Player Demo-Prefix.pch"; sourceTree = ""; }; @@ -51,7 +49,6 @@ files = ( C29CC80D17324DD400581C7C /* UIKit.framework in Frameworks */, C29CC80F17324DD400581C7C /* Foundation.framework in Frameworks */, - C29CC81117324DD400581C7C /* CoreGraphics.framework in Frameworks */, C285F6DE1732523400D81C59 /* MediaPlayer.framework in Frameworks */, C261FBDD17444FF2005FDFCA /* AVFoundation.framework in Frameworks */, ); @@ -94,7 +91,6 @@ isa = PBXGroup; children = ( C261FBDC17444FF2005FDFCA /* AVFoundation.framework */, - C29CC81017324DD400581C7C /* CoreGraphics.framework */, C29CC80E17324DD400581C7C /* Foundation.framework */, C285F6DD1732523400D81C59 /* MediaPlayer.framework */, C29CC80C17324DD400581C7C /* UIKit.framework */, From 4726be92c9078c0e40e326812162589149d79e97 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ce=CC=81dric=20Luthi?= Date: Fri, 17 May 2013 17:56:50 +0200 Subject: [PATCH 34/37] Add README and LICENSE --- LICENSE | 22 ++++++ README.md | 73 ++++++++++++++++++ .../XCDYouTubeVideoPlayerViewController.png | Bin 0 -> 786852 bytes 3 files changed, 95 insertions(+) create mode 100644 LICENSE create mode 100644 README.md create mode 100644 Screenshots/XCDYouTubeVideoPlayerViewController.png diff --git a/LICENSE b/LICENSE new file mode 100644 index 000000000..65f5e653c --- /dev/null +++ b/LICENSE @@ -0,0 +1,22 @@ +The MIT License (MIT) + +Copyright (c) 2013 Cédric Luthi + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + diff --git a/README.md b/README.md new file mode 100644 index 000000000..f006489a1 --- /dev/null +++ b/README.md @@ -0,0 +1,73 @@ +## About + +**XCDYouTubeVideoPlayerViewController** is a YouTube video player for iPhone and iPad. + + + +To the best of my knowledge, the only *official* way of playing a YouTube video on iOS is with a UIWebView and the [iframe player API](https://developers.google.com/youtube/iframe_api_reference). Unfortunately, this is very slow and quite ugly, so I wrote XCDYouTubeVideoPlayerViewController which gives the user a better viewing experience. + +XCDYouTubeVideoPlayerViewController uses progressive download, so remember that some restrictions apply if you submit your app to the App Store, as stated in +[HTTP Live Streaming — Requirements for Apps](https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/StreamingMediaGuide/UsingHTTPLiveStreaming/UsingHTTPLiveStreaming.html#//apple_ref/doc/uid/TP40008332-CH102-SW5): +> **Warning**: iOS apps submitted for distribution in the App Store must conform to these requirements. +> +> If your app delivers video over cellular networks, and the video exceeds either 10 minutes duration or 5 MB of data in a five minute period, you are required to use HTTP Live Streaming. (Progressive download may be used for smaller clips.) + +## Requirements + +- Runs on iOS 5.0 and later +- Must be compiled with ARC + +## Installation + +XCDYouTubeVideoPlayerViewController is available through CocoaPods. + +Alternatively, you can install it manually: + +1. Copy the `XCDYouTubeVideoPlayerViewController.h` and `XCDYouTubeVideoPlayerViewController.m` files in your project. +2. Add `MediaPlayer.framework` and `AVFoundation.framework` in your project. + +## Usage + +Use `XCDYouTubeVideoPlayerViewController` the same way you use a `MPMoviePlayerViewController`, except you initialize it with a YouTube video identifier instead of a content URL. + +#### Present the video in full-screen + +``` +XCDYouTubeVideoPlayerViewController *videoPlayerViewController = [[XCDYouTubeVideoPlayerViewController alloc] initWithVideoIdentifier:@"9bZkp7q19f0"]; +[self presentMoviePlayerViewControllerAnimated:videoPlayerViewController]; +``` + +#### Fetch the video identifier asynchronously + +``` +XCDYouTubeVideoPlayerViewController *videoPlayerViewController = [XCDYouTubeVideoPlayerViewController new]; +[self presentMoviePlayerViewControllerAnimated:videoPlayerViewController]; + +NSURL *url = [NSURL URLWithString:@"https://gdata.youtube.com/feeds/api/standardfeeds/on_the_web?v=2&alt=json&max-results=1"]; +[NSURLConnection sendAsynchronousRequest:[NSURLRequest requestWithURL:url] queue:[NSOperationQueue new] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) { + id json = [NSJSONSerialization JSONObjectWithData:data ?: [NSData new] options:0 error:NULL]; + NSString *videoIdentifier = [[[json valueForKeyPath:@"feed.entry.media$group.yt$videoid.$t"] lastObject] description]; + videoPlayerViewController.videoIdentifier = videoIdentifier; +}]; +``` + +#### Present the video in a non full-screen view + +``` +XCDYouTubeVideoPlayerViewController *videoPlayerViewController = [[XCDYouTubeVideoPlayerViewController alloc] initWithVideoIdentifier:@"9bZkp7q19f0"]; +[videoPlayerViewController presentInView:self.videoContainerView]; +``` + +See the demo project for more sample code. + +## Contact + +Cédric Luthi + +- http://github.com/0xced +- http://twitter.com/0xced +- cedric.luthi@gmail.com + +## License + +XCDYouTubeVideoPlayerViewController is available under the MIT license. See the LICENSE file for more information. \ No newline at end of file diff --git a/Screenshots/XCDYouTubeVideoPlayerViewController.png b/Screenshots/XCDYouTubeVideoPlayerViewController.png new file mode 100644 index 0000000000000000000000000000000000000000..9104a59321d8263aed7543d753d34b3794668824 GIT binary patch literal 786852 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

DHLQDdF}x;^I{J&>NU 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𗆽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

s0)k;ME)x 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

H^gbO;WLa^!)S5x`?K3`& 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 gVJ1$Y-5*uetgtP106Ze&y9u2%mlVGRD7x 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 tLenmPHt(?C+?J? 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 z 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�!GqA~E87asoluuqm%sh?Tb79*4qwsPUs~ZaQLkKK zmBMOugq^iAv26i2b#LmAz-`#Q>1P#`kIk4s3-`L6W!Fa zaKyT5xO&}{CUj1?QU+)!UioZRQt}g~Nm!#7yu6f0)syCta`W8jA$ca0=>u@qe%J6Lq?Ckd%HZbhOm)|>|t-ahhEM)&!=A37x~4@nmal8;~T zSZ2k-*4FxP^X9A2d&sw{kC6Ry$`B0%L2B@k>|h+(ff78l?I=-0w#^Qx_=motMn3s# zbT0WP06ZfD$ZxsU9uUvJv=79|U&>865dXp&Eu4OVv+LMS>SgM^pGwjOQbT8pfF$Fu zJ8=un!Mo_9j_}JOXbLWWQv#msDS26@a{amAJ6!LRaST^a>AE#uZ}sc)W}SVhx|1Fy zAq9Fm&kvdA;5_BP6%ZogB#HIFB6&{Di<~fesXIJbB#zy`y4hn0g+I0=8QLe3r%}_r zV9=}*7ZiWJl&w4qxC0lgi8E+IJa7-)6Vt#6N190US|!fP!lO5NPm+n(X+nh z`~-+-lUd;u z*kInYupy%~;$sl7tWFg&3LOI-JsF?!aGP}I`IJ}SCSHR-8UM#TqgvCk%5oJ3{ghJj9WQ5_T$K@@<)knz9va3YSF`w({(ZgpvVJa|liV zNhdX(5|q2kikB8VPM>`($g87;IXnS6SdLUq{O6e&vYcR1^2UoDmQ@PlAWS}}uEM4= zc|xowHCt|%S*QGIz{OLVw~h&K(%L*UTI?*&GE2JT5;;1rL4Z7!Z%1YK59qct3pF># z;0B|_Q*?4gYKH@QZr|Ca;bj>WdxEUAjmd>0_OW5w4LgEuegs|MD#L#^t9z;@uwCgSniAxtR#+cdO zegHpcya0d54E7E)n9}`V<(Lznw};<<^annd@k!|Itfp?CffySxaoOawUuWbsi0nMy zzk8R?^&+dC*Qpca3#}KBmz`~Ajq5NK_n)2|vyy>EGKZ!}Z%7h4OK&rw=-#8^WbTL* z#hdIGrf9~IQc06%=wPLcvwn^e#;|AsPu+U_r@Vb_>8sxRUikqz^h`MNpH&{vO;#Jj zCF#pctDK~JAsyiAEtyXZD!Iu~nb8F{os%wN@=vXo*fjLV{f!$ zJj)yov$V7_?9J^4rpBs=Vg2&`cVfJL@Zl%JAHVuKdT5Of&^oJ1u3gz0e*V*299~5& z;`^A>Q&^77C|}xI8UD?`_{DJT>gMqKPe03nat>U$T4Re(V7+nk6_&!gDg`M9f0sMQ zFvR3vUff`YXbqCsYqNe@IDh1U45sW6eSdJR{c4ejR>rXP@yS*^v7h@hq9HQgJ3tP~ zIU^O>V@m^2!^b(S35OOPd>gJIyPthJeD>)d%oclx&LK3cSqkbY^=E`0Ih&7IWi|-( z)5#>AWjsgsrAoJW+@5ru&qPKI02kww>xfF{IRR3`fjhT+loglDe*^gUfJ1!b3m8Ehwle`E7e(F>!qjoUu4#IV{M(Ku&)j8yz#SPePL^OgkD}{ zHjfgMj#Wq0>C&xrSI%mWqj14AOwA8*D__ycK|qa02^huWfe4Xl2^uiAW3)f)P0gW- zz!kK3lWU1gfqw33(U3?^-5N|&)wo~_*dz3Kr?t8K6hM#{AN zbq;t-(;wq9csEhhz(MBJG2%Spe~}fLG?#G#>+G+7`77%Bwc&sL{Xeku`9row+#kMV zWyoz-?rd{zfOW;ruXgbQ{BRpXI#%dv+kV?vgWm8gw)-aVt6z&|KP`JXdL@p?Ro>%%`v`nv1l9oC#>@`^|W< zS50jc0;(@Sr_Z`hhj*XVL4KXWS#1v(-DBHPws0{soH_vfj=B<$-S~Ih*l3LfI}OZ2dp$Q-c#}<2$+skI#R*|d@-FzDy$I8fI|Rji0sH} zoTdU079ytzDhwKBgu%i`h>`pfaPPn(o_I#_b_SXy&jDeXMK|$sOFrTtql|M(!Lp)> z=aR}UTJd=1XCj*ls{$uaN5FN(6f%}!sjU??o8B4S5r+GYYF}-Iecvx#suV-3;EYe? zoIn>14{6l}PsQoTn4^Rv!Q%%KT%%%!c)+3v-urF4vy8#|BzB5qJM4Wyj~_%KhRBl17S zP4HyQY@^j3HGPN@0_uI+K>{VV`f);#eZi-W$S9o7p zVR;uujK-XwaZ(cPjBB?!Sd!!T0WXd0fNA8+5-88aR@rkYnahYBVP9ImJFH(@1`qaM zr*e=Wd{c!(>rMpUC>Oct8=AwezUq?v3?c{9S~la1+?Zzt&yF@}TjNuDg~;abzxg0T zD;P(YIPH0ZPK}2*Z9m)|zTrTeJATg>L*)2ynx%4k!|#6k@$mZ({{R4&pF6JsD&V5A zA|2OQ7JXrDgYP}NSN&l4@S~5Jb==NU=u4c6eeK#+4D6NR&f*>XABVr{MfZIxJ09NU zY>S1IKT5a$kP-tK`I67%>3~Ez=^Y;lkp|hBMR_8hCTZF`zmtArIA$Xqp?L@0av0yt z%Q(W72|6MpQ`6GXsTMIt=w{tBNjW@oKyBb*b~$8)DCfv8k-3|`sxx(Tb02 z^i}({xO%I*U&i%VuJ{t9ZKfy0JD?>^>1QD$Joy9F%-7iqb%*uH&a3-gUH&@<&#JwE zBLYCCOcldkG`TEKR_^eeTFkqi2K)FtHwxpS;@Iis;=R5j>;rfp^k?%BOMKx!rGQ7Q z0OF8B_tUHMok6!vus&J`kER$f#Ls$N?GlM8;{hk-K4P!Fr{*emi<|=d>h)JR?Cj?7 z%B5F^)!B_<`|*7SChukNQazzudCwndOcxsAXBouaXsHr-*p@^kC9VNgx}<`3wk_4( zlzxm1zz^$^xaZJA2G308<<=D~g2F{~Iz02%kx^pi<$HggP5a{L4lG+HWhXWp?F9lp zN-(ndMm}I6FGy25CWK0;<%;MElPz93`5(9z#kM=?o-Wn|+#m8Nn5<6V9#z)(LoTr) zZrx%v#-IIsc*v*gKKSkL(C6Fe-|FN$>uYD%)85tU4iYIp&i0BUL&ic)y|Mi2dY3k5SM-^xNk)vE?aPPiv9KKM$AL?mVI1nbuTsN2(PErCtc#H)iKD?10H-ESMdSnnbO zC8w6BC~O^#%+XU3Uc5A4Cv?{{Q8_E6h+VY8L52^@$%~vo@A~4 zqKz?48zFq#?HVkQhQJDZ>RAMCaFJ5-=C$9mm0V~*M0Im`it;!X?U4% zSW9Z<7T#iETu7f8&Wq{kKqvWhkI1-iiWDP=rA@`^#ZH*CDo-aJr7>*>>%GHr8`Tmv z^8$nPXZeI@rwWncda9y}3A>I6m7sIpB@hFp-gN3f^@4vRd95I1L;2}3o9D!>%L0)` zzKTcueZV_?JVM9VwWuu#v``GHv9h98M5|pn#iZgkB&o`V_HgUu_|2GxSY%=9jNctF z6fnZmfd)x&PdJrTII(;1NQJNva4bf$FcnA}B8U=W-VOto#`ojy<}zf*k~u|0%|gyGiVHyo~dh{FKKsP?KC9BAvBAqyR+AyN`ANs}hwwOuN(q zzSvoFKZuGmvK}4!1Od}`lCLkjOqM}GcNKBNt(yATHmq_Y9Bfgwx6$&@mBXt34bC=HbZ z02uEeqj@#UVO)NaU>U<}f!Qy$?E+=k*ji#xf`hu45q5^ghScx+W?2e!pJFC=Rznxu zG>DzS;ZW>sX%Jq?6?QBJ#p(Xeu>F9}FQ1-S+qyi=&`D9Ck4Zo6x<=?o&OgeP>>~fl z4?I*R<)^YCtq`tU%4UqCh-K+9WlQ7Pffo<5vV%ECr^wlQ4@`Q*OuZ-g+Htc3d|{1m z|KjHf%vxBXGjx~XQyAX+ zbd$O)9{vzc$msRShobM3e&n1ExA4URSwQYiksJ5tlUuFOuq-_L?PX7z_c?l??TJ+a z@@W2C!2)_#=a+ZtMRbyUrby=IQe;2r6-T&y)6LFMzZX}dBQmQ9T@M|=LFP0hFRt@x zq>Yuxyq&#=>=~ZHxJ2>5H+1gNBa2bX@YE&9h;`9(17WG3bKP0ksFWVqk#lrTI2oqtbRnoQ#J_t?3Z1Y^iVN&0{=krKJ zcAzOuLF%0mzTZXEf}eUCUC!SkdFjrSU*yDdB0Pmu+`~WWwW~YarlXu_D%jMNNlba6 zzXqorHwOVV$ed|%(D9K2PWZ1e=yB=dB{~VOROgpLiU-?whrjzDe?R=!|MuU9?-=y5 z9ZHcYuWYj1G0uDe+dPAl%RBv3=UATT@A#O;m}A%LTVxmDndKmoCAO2KzM8X5r|fP{ zLyI#|TWwo$Vhl@0P1+xZOy)Hi^QE3CZW*s)hh3+PU{7ebowCa54BfAbzMTL#i3216 z2htf&Vni5%fHG7{xsO>AQD!yU+|s;>JBzjK?8+hS z%Itn>m!N0hTAd&sT$*rpY^7=FC66h)aEk)K;mNwwN)rF^b5IMo#-hYC-1qNu@?wrQ z2cw3#*n8M+*`6m-D!%||y5Tv1stEp;%ae3}2{#$7L-4MDe;17JmPMghVK9A()hw=d z)E=3FzDOE@J;fMmd?YGf%D(9%BRuN71+MqdT)HD;3jBminqV>E$z%MR{5%-~Hsr;w$Q^DxHaZ2Br9@Qu}iN#y3&(Q|VIV#Ooo75N2ZxsZ`{a&Rim7 zWUVaP9E!A!c^NSh!%8g7Dol)b1jD@x#&cBm#F1slBdXHQrD2jz3PcvjQ|0013{Pkgny}1- z<(6|CxZ~%5oWXJ*s2yEx;_w7`Sw0HIgsp(j(0dAav4S?44MHNq$ zv=djQ%6o$lD#}~`AYK(m{2fdIR}@+HMDU#B*KL5iV&mC#?4cr-G_7c?)LDI<-jWcS@xURh)R>x18FKw@&JQa zejDgv7s^*3(C8idjM};!OipLZ_77Li}K-e40qQReJ9Z0A-K{ukLTG)KQ8!X~ZcjJCFC+ z19=yo9M^Jo@b@!UE>S)@gof~McZW}D(ZfI3bq}cZ8hVj=_An}Y(gr#^s(t6q{qW(+ zE zGW&Pn8XC`-zIP-aSv>djyM%soYlB0{USs+57OOs3CXWGrZ}-9Q*(aY3 zfBUz8H+=X3%VL=sOdXpjB`ARD1Ru!1stqnYI&Mf={AbZogDvS@t<2#MN-T zV5_iV%RwUIDl4u$+TcqW4u+nx9Qp)%Pg`8AVwD%Jm`FSSQUD=Y4*xC~{xb~XAI+d_KJ zA$R7f?XPVqubo^IX!2D+g^hBx!`nN))%hh3e?E(?wDInx^PMb5em;*~m+?q4-jyn! zt;AMJenF#PH;He_!2`UCYn9Gei3#5Qd)ux^4$ zRti7!Vk4T5mP3>nVo)&^p@Rin3}*yap{->~#HA2bC^`qJEaYXyHXj?lmM#q&f~0^b z>|$Pcm`{}=-UQW%gu;Y?VPx6SB$mhr-l#ztaj?=?geQLuacQNE=SUYcSVd1dC*Wd* z36#(VF|}OX8ORJsW-n0mE@iex*f49Ny^QM>y1EgSqRXFUV{Qb`6dpXtn>N71pxPuS>B9{B_9zi8bwjbSN#P6wAc(y!HKH4dYFt$q0QI9gcU|#=VtA^ zkspS%g)mQPFC_V|OgZBoWl8$vK)BHi%gM3eS2L92BOGyOi5;Cu^YZ(7>HMOI9pOtB z;>e|P6L#MNEL}~djGsKh&?XOY@_@I|K^U`$?4pW(n)?DG%K7^FX0O z(2=)xcC%cJ{8U_-^~MmFM}AsGq%Ij2f z{y9M6N`d$nrBc=fRtR{_GBZ@m2^DC|qY>lGElWR_7CAKP(s1R<wOxML-?jK zGR;X;%0(RjRkRiBEJr5e13P0h%<~-BrrhlB?F?Uk%|S!V^ltEpohw%_=Uc&>n{<-s zEV)N`IDd$NaGY=0&NJKK-tgM$pzKl>M)Eaks?I{U6v1+vvvpHR#9#3sK`4r0)OlAO zfB0yf9vPCRop1s6A|AB*HW9r)3T~7t#x5LjkbwH29(8m-Bm6u|j}b0Bizkrz6@SCK z8$m2j6iU((Y>51>J1~$X>jqNm*S6T#yOr5|*qctU`#Iev;2_kr#yq-6BiI4A751)c z+`4r@V>rvTodpGVjZP0qTPBW5%5T8BRMNVc)fRT_Rp}x^xSjHWI_VPVjrB|Dtd#^h zD+P*NmX1>JVqNqv1j08CzsQg;A&f1-%RA|#b4Im2LRmA`vml+xfADbChWMPSs9}<; zNi;xf8w_zMd*sjHDDx4>v;oOz@<;fU{iN>;pOuU7&$>%2^;ES8V$5G~Ht&k3ghWad zeDW&WfOybceeUX<@R#x_RqC89{G1*Zam*PUe0M*_h*SzWeOw|NZdom){Nd zzPmSk_swl)^VvSaprmcs=zt;e3hBt#Jf)@b6Z8l$Z)HS-({Bs=IX#{FKQ<9@#K;v& zRZ;?lnNg9dujXf4tG)th>UmK{!UTpq{1YziO+bs;lWv5|litsHLoO+!t29JKj2$dJ zhAzUeoy@kZUbYDcg=cxxGvy|p?XF9UT%zka9HFnW1>GzkQ4+7)b*Al?&|-u`ZC7VG zxM`SaxKRgLc|(2lTewFIP#UH@sPhFbzMC5xY<>6zw&CIMH~;Cc8RTNchv}6U>N})o zsXrV-4{tDIX1jWd9zKDmu>tvUu-VmGF5$I~xMIpPT4HlHnFwAM2v>6Klbq)d7>0|u z(jbTOgs!Y7S-9D92eiEL%N`cea^^jH!5pftiCg};g^i+wGrs!Vj%ij_ks>Sq(8=N(Ss_7@ z#--%iFsu@zJ#}DtA3JnUp20tJ@{mfm%{X{&U8*vpuSr)2#g)EPDVTRw8j34_YDhGB zd-e`)c`Ggy#iZoeML+UtIjLi0{+)p0=^3y)xJYO&4g_JTE7;QYE>(${ZMt= z!K%|kSMjL_kzMV5%SakK$9d#O>ZYFvt%6iXWa4hR(S^S_<`PIRN#tcBk&nV`aFd>A zQ)pI?V)iHf`g0YgqA2j)RU8Z5k*EUrE)hyp>dlTyAg_g z2D#x7Od&;LoF$W(rRX7aGmc^)kwF)bUJhYf*=-OE)5Xs_fBxr|c$HU$*bOX!3RMEo z6#5k$9&kOUdK>?i|76S(XBl5%-6Sa*QOPM^8m=*rf^T##@rWSN2uwL}kUuMKuMAHl zoOrP;Vp929J&TXUJK-4Oy~7~?blH%puGMK^- zbs`3j3NMYFm4LVwKaE+G5HIpK0Ya3%&2WKdjyftD8k3!Ik(tD#?BM3R$|STFoR^@u zI~wXNDi2i-@V7H6e&XdK6oZv<`Jke;EG}c!@UEoN2VkkR(hO(WsMwZErO;(eg*U_U z##K6*=>WRFlcW|}ST1pP=^tNJ2~1&3@6Vv1?ciy!7~m=1jBwI;dYY)SDe60y{s_ap zkDdgZnK0rxm^3}*rwKH!Ewls&V{s&3m;CA6!y~`MH3JgP8e=@kkH{6}%V(;{Lj%qc zR{5P#cj=3QwWCQPQY66B;Li_>%;1`jjga3hCPnESaF9;YdCDa}$gMPWmKfq;#LO_t zd~taFjW>qNSFa)iq+I3@5tf=h;&VStfAQU4zNcwJJhPWhzXuU{0_)!6hr`yTtr!_o zO$I`o;*Q1r(=LJ{@2o$TT^T6_o^pq0_!ZF!qx>pUoPH$<#aG$plI4e|ERTe4fC)Sg z6xn52wBL?~)zl|s)urV`a2zsnCp85d`j;UqKGNFw9*(uk43l)UF||HEW(l?VX`tEJ z-QC?9me=^q3dZ3A`@0UEG^%g%a>AuKvT6y4J)squfCZHF^MIKRJ8zK$M zFiu(qFH2l9WE?&1G-lAqpqFq@#x=cpOgadt3$4w=Tr4oS@tOvbyEIXE&`48x zz_rjkkxhrbupSqrDngL`GWFNGp6~lQh-ef@J;O=2 zGc12z=LG1>mpE0Jxz^V&7fbI)OD;8r?F!tTQcimHs@LQkgFC zH{S$v<2guIUdmDicGPPYBq_P+8laM)u~$8{m;u92i`&EcJ;D8D;x50QNTSdLUqec^ z`mB^Kr5p3k+nEN#*}NTejC#@m%!31XP5pI%>B5CgPR8A2pZ}$_hkLub!)=y2 z-)6POHmB;k65xQry2_h6f~+DnyviqaMd=GsC)>Q|34EnXsT%c=_KM+RUk~b@s-w!k z<&!t0K_4hfwuP3Vez=pR?BiatyEiyGkDkk;4o znUu@t=xLtaN|gazXe)iP-6-KCB69xF39%aj0Ds^syM`&q%5}+w1NYQP4t#WJ`|d6S zTj&)1b zCmbK4ua8+lC!*x*N=7eV=NU|~UMC+Lc>MS$EQsDH%fkpyJ;h9Z z$wB2<`1<42P53Lb=@c3lTukndTYwyxmyad^rBOURV*4W&pb0MMRNB2=W`4c)(68DZ z+Ntx#pG?DgDlC{A?5T zQ=3!_LzHLVwQt;BSCb!+QQM3%HB#2