SDK Reference

Initialization

initWithRecipeId

/**
 Init PrintIO widget. To get view controller, use '[self.printIO viewController]'
 
 @param recipeId Recipe Id provided by Gooten
 @param isInTestMode Default value is NO
 */
-(id)initWithRecipeId:(NSString *)recipeId isInTestMode:(BOOL)isInTestMode;

// Sample code
PrintIO *printIO = [[PrintIO alloc]initWithRecipeId:kRecipeID isInTestMode:YES];

initWithViewController

/**
 Init PrintIO widget with parent view controller.
 
 @param viewController Parent view controller. From this view controller, widget will open.
 @param recipeId Production recipeId provided by Gooten
 @param isInTestMode Default value is
 */
-(id)initWithViewController:(id)viewController recipeId:(NSString *)recipeId isInTestMode:(BOOL)isInTestMode;

// Sample code:
PrintIO *printIO = [[PrintIO alloc]initWithViewController:self
                                                 recipeId:kRecipeID
                                             isInTestMode:YES];

setIsInTestMode

/**
 Use to place live orders in production mode, without payment verification
 
 @param testMode Default value is NO
 */
-(void)setIsInTestMode:(BOOL)testMode;

// Sample code:
[self.printIO setIsInTestMode:YES];
// other customization ...
[self.printIO open];

useStagingModeWithRecipeID

/**
 Run SDK in staging environment
 
 @param recipeID Staging recipeID provided by Gooten
 */
-(void)useStagingModeWithRecipeID:(NSString *)recipeID;

// Sample code:
[self.printIO useStagingModeWithRecipeID:kRecipeID];
// other customization ...
[self.printIO open];

setIsRootController

/**
 Root controller flag. Set to YES if the PrintIO widget is the root controller of your application.
 
 @param isRootController Root controller flag.
 */
-(void)setIsRootController:(BOOL)isRootController;

// Sample code:
[printIO setIsRootController:NO];

Opening and closing

open

/**
 Open widget by presenting view from bottom
 */
- (void)open;

// Sample code:
PrintIO *printIO = [[PrintIO alloc]initWithViewController:self
                                              environment:PRINTIO_STAGING
                                       productionRecipeId:nil
                                          stagingRecipeId:@"00000000-0000-0000-0000-000000000000"];
//... other customization
[printIO open];

openWithOption

/**
 Open widget with option

 @param option Set the options
 PRINTIO_OPTION_PRESENT_VIEW_FROM_LEFT,
 PRINTIO_OPTION_PRESENT_VIEW_FROM_RIGHT,
 PRINTIO_OPTION_PRESENT_VIEW_FROM_BOTTOM,
 PRINTIO_JUMP_TO_SCREEN_SHOPPING_CART
 PRINTIO_ENABLE_BACK_BUTTON
 */
- (void)openWithOption:(int)option;

// Sample code:
PrintIO *printIO = [[PrintIO alloc]initWithViewController:self
                                              environment:PRINTIO_STAGING
                                       productionRecipeId:nil
                                          stagingRecipeId:@"00000000-0000-0000-0000-000000000000"];
//... other customization
[printIO openWithOption:PRINTIO_OPTION_PRESENT_VIEW_FROM_BOTTOM | PRINTIO_ENABLE_BACK_BUTTON];

presentFromViewController

/**
 Present widget from view controller with option
 
 @param option Set the options
 PRINTIO_OPTION_PRESENT_VIEW_FROM_LEFT,
 PRINTIO_OPTION_PRESENT_VIEW_FROM_RIGHT,
 PRINTIO_OPTION_PRESENT_VIEW_FROM_BOTTOM,
 PRINTIO_JUMP_TO_SCREEN_SHOPPING_CART
 PRINTIO_ENABLE_BACK_BUTTON
 */
- (void)presentFromViewController:(UIViewController *)viewController
                       withOption:(int)option;

// Sample code:
PrintIO *printIO = [[PrintIO alloc]initWithViewController:self
                                              environment:PRINTIO_STAGING
                                       productionRecipeId:nil
                                          stagingRecipeId:@"00000000-0000-0000-0000-000000000000"];
//... other customization
[printIO presentFromViewController:self withOption:PRINTIO_OPTION_PRESENT_VIEW_FROM_BOTTOM];

viewController

/**
 Returns PrintIO view controller. Set all options before calling this method
 */
- (id)viewController;

// Sample code:
[printIO viewController];

close

/**
 Close widget
 */
- (void)close:(NSInteger)flag;

// Sample code:
[printIO close];

closeWithCompletionHandler

/**
 Close widget
 */
-(void)closeWithCompletionHandler:(void(^)(void))completionHandler;

// Sample code:
[printIO closeWithCompletionHandler:nil];

goToProductId

/**
 Jumps directly to product.

 @param productId Product identifier can be found in ProductIds.h and starts with PRODUCT_
 */
- (void)goToProductId:(int)productId;

// Sample code:
[printIO goToProductId:PRODUCT_PHONE_CASES()];
//... other customization
[printIO open];

goToProductId:withSKU

/**
 Jumps directly to product with sku

 @param productId Product identifier can be found in ProductIds.h and starts with PRODUCT_
 @param sku SKU for selected product
 */
- (void)goToProductId:(int)productId withSKU:(NSString *)sku;

// Sample code:
[printIO goToProductId:PRODUCT_PHONE_CASES() withSKU:@"PhoneCase-iphone5S-Matte"];
//... other customization
[printIO open];

Utils

turnOffLogs

/**
 Turn off logs

 @param set Default value is NO
 */
- (void)turnOffLogs:(BOOL)set;

// Sample code:
[printIO turnOffLogs:YES];

Country, Currency and Language

setCountryCode

/**
 Set country code

 @param countryCode Country code
 */
- (void)setCountryCode:(NSString *)countryCode;

// Sample code:
[printIO setCountryCode:@"US"];
//... other customization
[printIO open];

setCurrencyCode

/**
 Set currency code

 @param currencyCode Currency code
 */
- (void)setCurrencyCode:(NSString *)currencyCode;

// Sample code:
[printIO setCurrencyCode:@"usd"];
//... other customization
[printIO open];

setLanguageCode

/**
 Set language code

 @param languageCode Language code
 */
- (void)setLanguageCode:(NSString *)languageCode;

// Sample code:
[printIO setLanguageCode:@"en"];
//... other customization
[printIO open];

General UI customization

setCustomizationXML

/**
 Import customization XML file

 @param xmlData Customization xml file.
 */
- (void)setCustomizationXML:(NSData *)xmlData;

// Sample code:
NSString *xmlPath = [[NSBundle mainBundle] pathForResource:@"customization" ofType:@"xml"];
NSData *xmlData = [NSData dataWithContentsOfFile:xmlPath];

[printIO setCustomizationXML:xmlData];
//... other customization
[printIO open];

setFonts

/**
 Set custom fonts from main app bundle.

 @param fonts Array of string values that contains font name and type with the exact 
 order (light, medium, regular, bold). 
 
 Example: [@"font_light.otf", @"font_medium.otf", @"font_regular.otf", @"font_bold.otf"]. 
 
 Array must have four items, and fonts can be duplicated. Array also accepts system 
 (normal, bold and italic) UIFont objects.
 */
- (void)setFonts:(NSArray *)fonts;

// Sample code:
NSArray *fonts = @[@"timess.ttf", @"timess.ttf", @"aubrey.ttf", @"CaviarDreams_Bold.ttf"];
[printIO setFonts:fonts];
//... other customization
[printIO open];

changeSizeOfLightFontsBy

/**
 Change light fonts size

 @param Increase/decrease font size by 'value'
 */
- (void)changeSizeOfLightFontsBy:(float)value;

// Sample code:
[printIO changeSizeOfLightFontsBy:-1.0];

changeSizeOfMediumFontsBy

/**
 Change medium fonts size

 @param Increase/decrease font size by 'value'
 */
- (void)changeSizeOfMediumFontsBy:(float)value;

// Sample code:
[printIO changeSizeOfMediumFontsBy:-1.0];

changeSizeOfRegularFontsBy

/**
 Change regular fonts size

 @param Increase/decrease font size by 'value'
 */
- (void)changeSizeOfRegularFontsBy:(float)value;

// Sample code:
[printIO changeSizeOfRegularFontsBy:-1.0];

changeSizeOfBoldFontsBy

/**
 Change bold fonts size

 @param Increase/decrease font size by 'value'
 */
- (void)changeSizeOfBoldFontsBy:(float)value;

// Sample code:
[printIO changeSizeOfBoldFontsBy:-1.0];

setLoadingActivityIndicatorViewStyle

/**
 Toggles UIActivityIndicatorView on the loading view instead of the loading gif image. 
 Calling this method will override the gif image if it has previously been set.

 @param style UIActivityIndicatorView's style.
 */
- (void)setLoadingActivityIndicatorViewStyle:(UIActivityIndicatorViewStyle)style;

// Sample code:
[printIO setLoadingActivityIndicatorViewStyle:UIActivityIndicatorViewStyleGray];
//... other customization
[printIO open];

setLoadingGIF

/**
 Changes "Loading" GIF animation image. Calling this method will override the UIActivityIndicatorViewStyle if has previously been set.

 @param fileName GIF image file name.
 */
- (void)setLoadingGIF:(NSString *)fileName;

// Sample code:
[printIO setLoadingGIF:@"mg_loader"];
//... other customization
[printIO open];

setLoadingText

/**
 Change title of loading dialog

 @param lText New title for loading dialog.
 */
- (void)setLoadingText:(NSString *)lText;

// Sample code:
[printIO setLoadingText:@"Loading..."];
//... other customization
[printIO open];

setIconForHelpButton

/**
 Change icon for Help Button

 @param imagePath Path for image file
 */
- (void)setIconForHelpButton:(NSString *)imagePath;

// Sample code:
[printIO setIconForHelpButton:[[NSBundle mainBundle]pathForResource:@"icon" ofType:@"png"]];
//... other customization
[printIO open];

setLogoFileName

/**
 Change partner's logo in SDK

 @param fileName File name of logo image, without file type extension.
 Image file needs to be stored in main bundle.
 */
- (void)setLogoFileName:(NSString *)fileName;

// Sample code:
[printIO setLogoFileName:@"mg_s_logo"];
//... other customization
[printIO open];

setPositiveButtonsBackgroundColor

/**
 Change background color on positive buttons (Yes, Next, Ok, Save, Buy It, Create It...)

 @param bColor Background color
 @param tColor Title color
 */
- (void)setPositiveButtonsBackgroundColor:(UIColor *)bColor titleColor:(UIColor *)tColor;

// Sample code:
[printIO setPositiveButtonsBackgroundColor:[UIColor greenColor] titleColor:[UIColor whiteColor]];
//... other customization
[printIO open];

setNegativeButtonsBackgroundColor

/**
 Change background color on negative buttons (No, Back, Cancel, Close...)

 @param bColor Background color
 @param tColor Title color
 */
- (void)setNegativeButtonsBackgroundColor:(UIColor *)bColor titleColor:(UIColor *)tColor;

// Sample code:
[printIO setNegativeButtonsBackgroundColor:[UIColor redColor] titleColor:[UIColor whiteColor]];
//... other customization
[printIO open];

setTitleForChooseOptionsScreen

/**
 Change title for 'Customization Options' screen
 */
- (void)setTitleForChooseOptionsScreen:(NSString *)title;

// Sample code:
[printIO setTitleForChooseOptionsScreen:@"Title"];
//... other customization
[printIO open];

setSelectionColor

/**
 Set selection color for product customization steps
 
 @param color Selection color
 */
- (void)setSelectionColor:(UIColor *)color;

// Sample code:
[printIO setSelectionColor:[UIColor redColor]];
//... other customization
[printIO open];

navigationBarColor:titleColor:leftButtonBackgroundColor:rightButtonBackgroundColor:titleButtonIcon

/**
 Change navigation bar color and title font color.

 @param color Color for title bar (navigation bar). If nil default color is used.
 @param tColor Color of fonts on title bar. If nil default color is used.
 @param lColor Background color for left navigation bar button. If nil, transparent will be used.
 @param rColor Background color for right navigation bar button. If nil, transparent will be used.
 @param iPath Path to icon for button in the center of navigation bar. If nil, title will be shown, otherwise
 button will be shown. Click on button opens sub menu, which can be customized by PrintIO.
 */
- (void)navigationBarColor:(UIColor *)color
                titleColor:(UIColor *)tColor
 leftButtonBackgroundColor:(UIColor *)lColor
rightButtonBackgroundColor:(UIColor *)rColor
           titleButtonIcon:(NSString *)iPath;

// Sample code:
[printIO navigationBarColor:[UIColor colorWithRed:240.0/255.0 green:94.0/255.0 blue:79.0/255.0 alpha:1.0]
                 titleColor:[UIColor whiteColor]
  leftButtonBackgroundColor:[UIColor clearColor]
 rightButtonBackgroundColor:[UIColor colorWithRed:34.0/255.0 green:119.0/255.0 blue:212.0/255.0 alpha:1.0]
            titleButtonIcon:nil];
//... other customization
[printIO open];

setNavigationBarBackground

/**
 Set background image on Navigation Bar
 
 @param imagePath Path to image file.
 */
- (void)setNavigationBarBackground:(NSString *)imagePath;

// Sample code:
[printIO setNavigationBarBackground:[[NSBundle mainBundle]pathForResource:@"header" ofType:@"png"]];
//... other customization
[printIO open];

setNavigationBarBackgroundForCustomizeProduct

/**
 Set navigation bar background image on 'Customize Product' screen
 
 @param imagePath Path to image file.
 */
- (void)setNavigationBarBackgroundForCustomizeProduct:(NSString *)imagePath;

// Sample code:
[printIO setNavigationBarBackgroundForCustomizeProduct:[[NSBundle mainBundle]pathForResource:@"header" ofType:@"png"]];
//... other customization
[printIO open];

setIconForBackButton

/**
 Set icon for back button.

 @param path Path to image file.
 */
- (void)setIconForBackButton:(NSString *)iconPath;

// Sample code:
[printIO setIconForBackButton:[[NSBundle mainBundle]pathForResource:@"back" ofType:@"png"]];
//... other customization
[printIO open];

setStatusBarDark:hidden

/**
 Set status bar style and visibility.

 @param dark Default value is NO
 @param hidden Default value is NO
 */
- (void)setStatusBarDark:(BOOL)dark
                  hidden:(BOOL)hidden;

// Sample code:
[printIO setStatusBarDark:NO hidden:YES];
//... other customization
[printIO open];

setThreeButtonsNavigationBarStyle

/**
 Set three buttons Back, Menu and Cart button in navigation bar for Featured Products screen

 @param set Default value is NO
 */
- (void)setThreeButtonsNavigationBarStyle:(BOOL)set;

// Sample code:
[printIO setThreeButtonsNavigationBarStyle:YES];
//... other customization
[printIO open];

setNavigationBarSaveToCartBackgroundColor:titleColor:buttonBackgroundColor:buttonTitleColor

/**
 Set colors scheme for navigation bar with "Save to" shopping cart button
 https://github.com/printdotio/printio-ios-sdk/blob/master/ios_sdk_customization.md#save-to-shopping-cart-button
 
 @param bcgColor Navigation bar background color
 @param titleColor Navigation bar title color
 @param btnBcgColor Button's background color
 @param btnTitleColor Button's title color
 */
- (void)setNavigationBarSaveToCartBackgroundColor:(UIColor *)bcgColor
                                       titleColor:(UIColor *)titleColor
                            buttonBackgroundColor:(UIColor *)btnBcgColor
                                 buttonTitleColor:(UIColor *)btnTitleColor;

// Sample code:
[printIO setNavigationBarSaveToCartBackgroundColor:[UIColor greyColor]
                                        titleColor:[UIColor whiteColor]
                             buttonBackgroundColor:[UIColor redColor]
                                  buttonTitleColor:[UIColor whiteColor]];
//... other customization
[printIO open];

setBackButtonHidden

/**
 Set back button hidden
 
 @param set Default value is NO
 */
- (void)setBackButtonHidden:(BOOL)set;

// Sample code:
[printIO setBackButtonHidden:YES];
//... other customization
[printIO open];

setNavigationBarLogo

/**
 Set and show logo in navigation bar
 
 @param iconPath Path to image file
 */
-(void)setNavigationBarLogo:(NSString *)iconPath;

// Sample code:
[printIO setNavigationBarLogo:iconPath];
//... other customization
[printIO open];

Side menu

useSideMenuWithMenuIcon

/**
 Use Side Menu

 @param mIconPath Path to image for Menu icon. If nil, default icon will be used.
 */
- (void)useSideMenuWithMenuIcon:(NSString *)iconPath

// Sample code:
[printIO useSideMenuWithMenuIcon:[[NSBundle mainBundle]pathForResource:@"mg_icon_menu" ofType:@"png"]];
//... other customization
[printIO open];

setSideMenuItems

/**
 Set side menu items: array of options presented as PIOSideMenuButton:
 
 PIOSMButtonTypeQualityGuarantee,
 PIOSMButtonTypeAbout,
 PIOSMButtonTypeHowItWorks,
 PIOSMButtonTypePastOrders,
 PIOSMButtonTypeOrderStatus
 PIOSMButtonTypeContactUs
 PIOSMButtonTypeHelp
 
 By default all items are presented in side menu
 */
-(void)setSideMenuItems:(NSArray *)items;

// Sample code:
[printIO setSideMenuItems:items];
//... other customization
[printIO open];

defaultSideMenuItems

/**
 Get default side menu items, which you can edit and customize
 
 @return Array of PIOSideMenuButton objects
 */
- (NSArray *)defaultSideMenuItems;

// Sample code:
[printIO defaultSideMenuItems:items];
//... other customization
[printIO open];

slideSideMenuFromRight

/**
 Slide side menu from right. Default value is NO.

 @param set Default value is NO.
 */
- (void)slideSideMenuFromRight:(BOOL)set;

// Sample code:
[printIO slideSideMenuFromRight:YES];
//... other customization
[printIO open];

hidePhotoSourcesInSideMenu

/**
 Hide photo sources section in Side Menu

 @param set Default value is NO
 */
- (void)hidePhotoSourcesInSideMenu:(BOOL)set;

// Sample code:
[printIO hidePhotoSourcesInSideMenu:YES];
//... other customization
[printIO open];

setHowItWorksText

/**
 Provide text for "How It Works" screen

 @params text Text
 */
- (void)setHowItWorksText:(NSString *)text;

// Sample code:
[printIO setHowItWorksText:@"A lot of text..."];
//... other customization
[printIO open];

setAboutText

/**
 Provide text for "About" screen

 @param text About text
 */
- (void)setAboutText:(NSString *)text;

// Sample code:
[printIO setAboutText:@"About text is..."];
//... other customization
[printIO open];

setContactUsEmail

/**
 Set email for "Contact Us" button
 
 @param email Customer support email
 */
-(void)setContactUsEmail:(NSString *)email;

// Sample code:
[printIO setContactUsEmail:@"email"];
//... other customization
[printIO open];

hideVersionInSideMenu

/**
 Hide version label from side menu
 
 @param set Default value is NO
 */
- (void)hideVersionInSideMenu:(BOOL)set;

// Sample code:
[printIO hideVersionInSideMenu:YES];
//... other customization
[printIO open];

Screen ‘Choose Country’

setTitleForChooseCountryScreen

/**
 Change title on 'Choose Country' screen

 @param title New title
 */
- (void)setTitleForChooseCountryScreen:(NSString *)title;

// Sample code:
[printIO setTitleForChooseCountryScreen:@"Title"];
//... other customization
[printIO open];

hideSearchIconInChooseCountryScreen

/**
 Hide search icon from navigation bar on 'Choose Country' screen

 @param set Default value is NO
 */
- (void)hideSearchIconInChooseCountryScreen:(BOOL)set;

// Sample code:
[printIO hideSearchIconInChooseCountryScreen:YES];
//... other customization
[printIO open];

setPlaceholderTextForSearchBarInChooseCountryScreen:hideMagnifyingGlass

/**
 Change placeholder text in search bar, and set magnifying glass visible or hidden

 @param text Placeholder text
 @param set Default value is NO
 */
- (void)setPlaceholderTextForSearchBarInChooseCountryScreen:(NSString *)text
                                        hideMagnifyingGlass:(BOOL)set;

// Sample code:
[printIO setPlaceholderTextForSearchBarInChooseCountryScreen:@"Search..."
                                         hideMagnifyingGlass:NO];
//... other customization
[printIO open];

setNavigationBarBackgroundColorForChooseCountryScreen

/**
 Change the color of navigation bar in 'Choose Country' screen

 @param color Color to set
 */
- (void)setNavigationBarBackgroundColorForChooseCountryScreen:(UIColor *)color;

// Sample code:
[printIO setNavigationBarBackgroundColorForChooseCountryScreen:[UIColor redColor]];
//... other customization
[printIO open];

Screen ‘Products’

hideCategoriesInFeaturedProducts

/**
 Hide category+search view on Featured Products screen. Default value is NO;

 */
- (void)hideCategoriesInFeaturedProducts:(BOOL)hide;

// Sample code:
[printIO hideCategoriesInFeaturedProducts:YES];
//... other customization
[printIO open];

hideComingSoonProducts

/**
 Hide coming soon products from product's list
 
 @param hide Default value is NO
 */
- (void)hideComingSoonProducts:(BOOL)hide;

// Sample code:
[printIO hideComingSoonProducts:YES];
//... other customization
[printIO open];

showCountrySelectionOnScreen:backgroundColor

/**
 Show country selection. By default, country selection is always shown on Featured/All products

 @param screen Screen:
 
 PIO_SCREEN_FEATURED_PRODUCTS
 PIO_SCREEN_PRODUCT_DETAILS
 PIO_SCREEN_OPTIONS
 */
- (void)showCountrySelectionOnScreen:(PIOScreens)screen
                     backgroundColor:(UIColor *)backgroundColor;

// Sample code:
[printIO showCountrySelectionOnScreen:PIO_SCREEN_PRODUCT_DETAILS
                      backgroundColor:[UIColor redColor]];
//... other customization
[printIO open];

setTitleForFeaturedProductsScreen

/**
 Change title on Featured Products screen

 @param title New title
 */
- (void)setTitleForFeaturedProductsScreen:(NSString *)title;

// Sample code:
[printIO setTitleForFeaturedProductsScreen:@"Title"];
//... other customization
[printIO open];

setFeaturedProductsLeftLabelTextColor:rightLabelTextColor

/**
 Change label's color on items in list on Featured Products screen
 https://github.com/printdotio/printio-ios-sdk/blob/master/ios_sdk_customization.md#change-labels-color-on-items-in-list-on-featured-products-screen
 
 @param lColor Text color for left label
 @param rColor Text color for right label
 */
- (void)setFeaturedProductsLeftLabelTextColor:(UIColor *)lColor
                          rightLabelTextColor:(UIColor *)rColor;

// Sample code:
[printIO setFeaturedProductsLeftLabelTextColor:[UIColor redColor]
                           rightLabelTextColor:[UIColor blueColor]];
//... other customization
[printIO open];

setFeaturedProductsBackgroundImage

/**
 Set background image on Featured Products screen
 https://github.com/printdotio/printio-ios-sdk/blob/master/ios_sdk_customization.md#featured-products-background-image
 
 @param imagePath Path to image file.
 */
- (void)setFeaturedProductsBackgroundImage:(NSString *)imagePath;

// Sample code:
[printIO setFeaturedProductsBackgroundImage:[[NSBundle mainBundle] pathForResource:@"bcg" ofType:@"png"]];
//... other customization
[printIO open];

setAvailableProducts

/**
 Set available products. 
 
 @param availableProducts List of product ids, which will be shown in product's list
 
 Example:
 NSArray *availableProducts = @[[NSNumber numberWithInt:PRODUCT_MOUSEPADS()], [NSNumber numberWithInt:PRODUCT_PHONE_CASES()]];
 
 */
- (void)setAvailableProducts:(NSArray *)availableProducts;

// Sample code:
NSArray *availableProducts = @[[NSNumber numberWithInt:PRODUCT_MOUSEPADS()], [NSNumber numberWithInt:PRODUCT_PHONE_CASES()]];
[printIO setAvailableProducts:availableProducts];
//... other customization
[printIO open];

setProductsScreenVersion

/**
 Change version of Products Screen. 
 
 @param version Default screen version is PIOProductsScreenV1
 
 PIOProductsScreenV1
 PIOProductsScreenV2 - available from sdk v1.5.13(23). Dynamic products list view.
 PIOProductsScreenV3 - available from sdk v1.7.1(30). Products are in list/grid view.
 */
-(void)setProductsScreenVersion:(PIOProductsScreenVersion)version;

// Sample code:
[printIO setProductsScreenVersion:PIOProductsScreenV2];
//... other customization
[printIO open];

setProductsScreenImageUrl

/**
 Set image url for Dymanic products list view. In order to use this method, 
 PIOProductsScreenV2 needs to be enabled.
 Available from sdk v1.5.13(23)
 
 @param url Url to image file.
 */
-(void)setProductsScreenImageUrl:(NSString *)url;

// Sample code:
[printIO setProductsScreenImageUrl:imageUrl];
//... other customization
[printIO open];

setWhatsNewDailogText

/**
 Set text for What's New Dialog. If there's no text, dialog
 will be hidden.
 
 Sample text: @"- bug fixes\n- new products added\n- new feature added"
 
 @param text Text
 */
-(void)setWhatsNewDailogText:(NSString *)text;

// Sample code:
[printIO setWhatsNewDailogText:@"sample text"];
//... other customization
[printIO open];

showBottomBarWithLikeUsURL:rateUsAppId:shareText

/**
 Show bottom bar with search, like, share and rate us options
 Available from SDK v1.5.19(24)
 
 @param likeUsUrl URL to web page (facebook page etc...)
 @param rateUsAppId Application id from app store
 @param shareText Text for sharing
 */
-(void)showBottomBarWithLikeUsURL:(NSURL *)likeUsURL rateUsAppId:(NSString *)rateUsAppId shareText:(NSString *)shareText;

// Sample code:
[printIO showBottomBarWithLikeUsURL:url rateUsAppId:@"appId" shareText:@"share text"];
//... other customization
[printIO open];

setProductsInHero

/**
 Set which products will be in hero, on Products page, by providing product ids.
 Max number of products is five.
 
 @param productsIds Array of product ids
 */
-(void)setProductsInHero:(NSArray *)productsIds;

// Sample code:
[self.printIO productsInHero:[[NSNumber numberWithInt:PRODUCT_PHONE_CASES()], [NSNumber numberWithInt:PRODUCT_TABLET_CASES()]];
//... other customization
[printIO open];

setImageInHero:url

/**
 Add image obj in hero, which will lead to url, when user taps on it
 
 @param image UIImage object
 @param url NSURL object
 */
-(void)setImageInHero:(UIImage *)image url:(NSURL *)url;

// Sample code:
[self.printIO setImageInHero:[UIImage imageNamed:@"sample_image.jpg"] url:[NSURL URLWithString:@"youtube://www.youtube.com/watch?v=pLrS1q242eE"]];
//... other customization
[printIO open];

Screen ‘Product Details’

productDetailsShowTitleBelowNavBar

/**
 Show title below navigation bar on Product Details screen

 @param set Default value is NO
 */
- (void)productDetailsShowTitleBelowNavBar:(BOOL)set;

// Sample code:
[printIO productDetailsShowTitleBelowNavBar:YES];
//... other customization
[printIO open];

productDetailsShowMenuBtnInNavBar

/**
 Show menu button in navigation bar on Product Details screen

 @param set Default value is NO
 */
- (void)productDetailsShowMenuBtnInNavBar:(BOOL)set;

// Sample code:
[printIO productDetailsShowMenuBtnInNavBar:YES];
//... other customization
[printIO open];

setQualityGuaranteeText

/**
 Provide Quality Guarantee text for Product Details screen
 
 @param text Quality Guarantee text
 */
- (void)setQualityGuaranteeText:(NSString *)text;

// Sample code:
[printIO setQualityGuaranteeText:@"Quality Guarantee text goes here."];
//... other customization
[printIO open];

setPriceTitleHidden

/**
 Set 'Starting at' and 'Retail price' titles hidden
 
 @param set Default value is NO
 */
- (void)setPriceTitleHidden:(BOOL)set;

// Sample code:
[printIO setPriceTitleHidden:YES];
//... other customization
[printIO open];

setRetailDiscountPercent

/**
 Set retail discount percent for product details screen
 
 @param percent 
 */
-(void)setRetailDiscountPercent:(float)percent;

// Sample code:
[printIO setRetailDiscountPercent:10.0];
//... other customization
[printIO open];

Photo sources

setAvailablePhotoSources

/**
 Set available photo sources

 @param photoSources Array of PIOSideMenuButton objects, represents which types of photo sources will be
 available to user. Types:
   PIO_SM_FACEBOOK
   PIO_SM_INSTAGRAM
   PIO_SM_PICASA
   PIO_SM_FLICKR
   PIO_SM_DROPBOX
   PIO_SM_PHOTOBUCKET
   PIO_SM_PHONE
   PIO_SM_PASSED_PHOTOS
 */
- (void)setAvailablePhotoSources:(NSArray *)photoSources;

// Sample code:
// Instagram
PIOSideMenuButton *btnSInstagram = [[PIOSideMenuButton alloc]initWithTitle:@"Instagram" type:PIO_SM_INSTAGRAM];
btnSInstagram.iconPath = [[NSBundle mainBundle]pathForResource:@"instagram" ofType:@"png"];
btnSInstagram.iconPathSelected = [[NSBundle mainBundle]pathForResource:@"instagram_selected" ofType:@"png"];
btnSInstagram.textColor = [UIColor blackColor];
btnSInstagram.useBoldFonts = YES;
    
// Phone
PIOSideMenuButton *btnSPhone = [[PIOSideMenuButton alloc]initWithTitle:@"Phone" type:PIO_SM_PHONE];
    
// Facebook
PIOSideMenuButton *btnSFacebook = [[PIOSideMenuButton alloc]initWithTitle:@"Facebook" type:PIO_SM_FACEBOOK];
btnSFacebook.iconPath = [[NSBundle mainBundle]pathForResource:@"facebook" ofType:@"png"];
btnSFacebook.iconPathSelected = [[NSBundle mainBundle]pathForResource:@"facebook_selected" ofType:@"png"];
btnSFacebook.textColor = [UIColor blackColor];
btnSFacebook.useBoldFonts = YES;
    
[printIO setAvailablePhotoSources:[NSArray arrayWithObjects:btnSPhone, btnSInstagram, btnSFacebook, nil]];
//... other customization
[printIO open];

setCustomPhotoSources

/**
 Set custom photo sources
 
 @param customPhotoSources Array of id<PhotoSource> objects 
 */
- (void)setCustomPhotoSources:(NSArray*)customPhotoSources;

// Sample code:
MyCustomPhotoSource* photoSource = [[MyCustomPhotoSource alloc] init];
[printIO setCustomPhotoSources:@[photoSource]];
//... other customization
[printIO open];

setDefaultPhotoSource:albumId

/**
 When user enters 'Select Photos' screen, selected photo source will be opened by default.
 If an album id is passed in, if exist, that album will be opened.
 
 @param pSource Photo source:
   PIO_PS_FACEBOOK
   PIO_PS_INSTAGRAM
   PIO_PS_PICASA
   PIO_PS_FLICKR
   PIO_PS_DROPBOX
   PIO_PS_PHOTOBUCKET
   PIO_PS_PHONE
   PIO_PS_PASSED_PHOTOS // added in v1.0.34. 'Passed photos' photo source needs to be added, and images
                                             should be passed in.
   
 @param albumId Album id (Currently works only for PIO_SM_PHOTOBUCKET photo source)
 
 */
- (void)setDefaultPhotoSource:(PIOPhotoSources)pSource
                      albumId:(NSString *)albumId;

// Sample code:
[printIO setDefaultPhotoSource:PIO_PS_FACEBOOK albumId:@""];
//... other customization
[printIO open];

setImages

/**
 Pass in images URLs or UIImage objects.
 https://github.com/printdotio/printio-ios-sdk/blob/master/ios_sdk_customization.md#pass-photo-to-sdk
 
 @param images Array of image urls or/and UIImage objects
 */
- (void)setImages:(NSArray *)images;

// Sample code:
UIImage *image = ...
NSArray *images = @[@"http://www.google.com/landscape.jpeg", image]; 
[printIO setImages:images];
//... other customization
[printIO open];

disablePhotoSourcesWhenImagesArePassedIn

/**
 If user pass in images usinig method 'images', this method can disable photo sources,
 forcing user to use only passed photos.

 This method overrides method 'availablePhotoSources'
 */
- (void)disablePhotoSourcesWhenImagesArePassedIn:(BOOL)disable;

// Sample code:
[printIO disablePhotoSourcesWhenImagesArePassedIn:YES];
//... other customization
[printIO open];

disablePhotoSourcesForOnePhotoTemplate

/**
 Disable photo sources only if image is passed in, and user selects template with
 one photo.
 */
-(void)disablePhotoSourcesForOnePhotoTemplate:(BOOL)disable;

// Sample code:
[printIO disablePhotoSourcesForOnePhotoTemplate:YES];
//... other customization
[printIO open];

setPreselectPassedImages:shouldPreselectPassedImages

/**
 A flag that determines whether passed images are preselected on the 'Select Photos' screen.
 */
- (void)setPreselectPassedImages:(BOOL)shouldPreselectPassedImages;

// Sample code:
[printIO setPreselectPassedImages:YES];
//... other customization
[printIO open];

enablePhotoSourcesInCustomizeProduct

/**
 Enables photo sources in Customize Product screen only, if they're disabled 
 using methods 'disablePhotoSourcesWhenImagesArePassedIn' and 'disablePhotoSourcesForOnePhotoTemplate'
 */
- (void)enablePhotoSourcesInCustomizeProduct:(BOOL)set;

// Sample code:
[printIO enablePhotoSourcesInCustomizeProduct:YES];
//... other customization
[printIO open];

setPassedImageFirstInPhotoSources

/**
 Set passed in image to be first in row for all photo sources.
 */
- (void)setPassedImageFirstInPhotoSources:(BOOL)set;

// Sample code:
[printIO setPassedImageFirstInPhotoSources:YES];
//... other customization
[printIO open];

hideIconForUploadInstructions

/**
 Hide icon for Upload Instructions text in Photo Sources screen. Default value is NO.
 */
- (void)hideIconForUploadInstructions:(BOOL)hide;

// Sample code:
[printIO hideIconForUploadInstructions:YES];
//... other customization
[printIO open];

setInstagramClientID:redirectUrl

/**
 Set Instagram credentials. By default, PrintIO credentials are used.
 https://github.com/printdotio/printio-ios-sdk/blob/master/ios_sdk_customization.md#set-instagram-credentials
 */
- (void)setInstagramClientID:(NSString *)clientId
                 redirectUrl:(NSString *)redirectUrl;

// Sample code:
[printIO setInstagramClientID:@"client_id" redirectUrl:@"redirect_url"];
//... other customization
[printIO open];

setInstagramAccessToken

/**
 Set access token for Instagram
 
 @param accessToken Valid access token for session
 */
- (void)setInstagramAccessToken:(NSString *)accessToken;

// Sample code:
[printIO setInstagramAccessToken:@"access_token"];
//... other customization
[printIO open];

setFlickrKey:secretKey:redirectUrl

/**
 Set Flickr credentials. By default, PrintIO credentials are used.
 */
- (void)setFlickrKey:(NSString *)key
           secretKey:(NSString *)secretKey
         redirectUrl:(NSString *)redirectUrl;

// Sample code:
[printIO setFlickrKey:@"flick_key" secretKey:@"secret_key" redirectUrl:@"redirect_url"];
//... other customization
[printIO open];

setDropboxKey:redirectUrl

/**
 Set Dropbox credentials. By default, PrintIO credentials are used.
 */
- (void)setDropboxKey:(NSString *)key
          redirectUrl:(NSString *)redirectUrl;

// Sample code:
[printIO setDropboxKey:@"dropbox_key" redirectUrl:@"redirect_url"];
//... other customization
[printIO open];

setFacebookAppId:redirectUrl

/**
 Set Facebook credentials. By default, PrintIO credentials are used.
 */
- (void)setFacebookAppId:(NSString *)appId
             redirectUrl:(NSString *)redirectUrl;

// Sample code:
[printIO setFacebookAppId:@"fb_app_id" redirectUrl:@"redirect_url"];
//... other customization
[printIO open];

setFacebookAccessToken

/**
 Set access token for Facebook

 @param aToken Valid access token for session
 */
- (void)setFacebookAccessToken:(NSString *)aToken;

// Sample code:
[printIO setFacebookAccessToken:@"access_token"];
//... other customization
[printIO open];

setPhotobucketUsername:password

/**
 Set username and password for Photobucket (autologin)

 @param userName Username or email for Photobucket account
 @param password Password
 */
- (void)setPhotobucketUsername:(NSString *)userName
                      password:(NSString *)password;

// Sample code:
[printIO setPhotobucketUsername:@"user_name" password:@"password"];
//... other customization
[printIO open];

setPhotobucketAccessToken:userName:baseURL

/**
 Set access token for Photobucket

 @param aToken Valid access token for session
 @param username Username
 @param baseUrl Base url for Photobucket
 */
- (void)setPhotobucketAccessToken:(NSString *)aToken
                         userName:(NSString *)username
                          baseURL:(NSString *)baseUrl;

// Sample code:
[printIO setPhotobucketAccessToken:@"access_token" userName:@"user_name" baseURL:@"base_url"];
//... other customization
[printIO open];

setTitleForPhotoSourcesScreen

/**
 Change title for Photo Sources screen

 @param title New title
 */
- (void)setTitleForPhotoSourcesScreen:(NSString *)title;

// Sample code:
[printIO setTitleForPhotoSourcesScreen:@"Title"];
//... other customization
[printIO open];

autoSelectOnePhotoTemplateForProductID

/**
 Auto selects one photo template for selected productID

 @param productID productID of selected product
 */
- (void)autoSelectOnePhotoTemplateForProductID:(NSInteger)productID;

// Sample code:
[printIO autoSelectOnePhotoTemplateForProductID:PRODUCT_PHONE_CASES()];
//... other customization
[printIO open];

disableAutoRecognizePhoneModel

/**
 Disable auto recognition and selection of iPhone model

 @param set Default value is NO
 */
- (void)disableAutoRecognizePhoneModel:(BOOL)set;

// Sample code:
[printIO disableAutoRecognizePhoneModel:YES];
//... other customization
[printIO open];

hideCartInPhotoSources

/**
 Hide shopping cart icon from Photo Sources screen
 
 @param set Dafault value is NO
 */
- (void)hideCartInPhotoSources:(BOOL)set;

// Sample code:
[printIO hideCartInPhotoSources:YES];
//... other customization
[printIO open];

showSelectAllButton

/**
 Show 'Select All' button on Photo Sources screen which selects all images in the current folder
 
 @param shouldShow Default value is YES
 */
- (void)showSelectAllButton:(BOOL)shouldShow;

// Sample code:
[printIO showSelectAllButton:YES];
//... other customization
[printIO open];

Screen ‘Customize/Edit Product’

showToolbarInCustomizeProduct:backgroundImage

/**
 Show/hide tab bar in Customize Product screen. Default value is YES

 @param show Set show/hide
 @param imagePath Path to image file.
 */
- (void)showToolbarInCustomizeProduct:(BOOL)show
                      backgroundImage:(NSString *)imagePath;

// Sample code:
[printIO showToolbarInCustomizeProduct:NO
                       backgroundImage:[[NSBundle mainBundle]pathForResource:@"toolbar_bcg" ofType:@"png"]];
//... other customization
[printIO open];

hideImagesListInCustomizeProduct

/**
 Hide list with images in customization screen
 */
- (void)hideImagesListInCustomizeProduct:(BOOL)hide;

// Sample code:
[printIO hideImagesListInCustomizeProduct:YES];
//... other customization
[printIO open];

setPhotoArrangement

/**
 Set photo(s) arrangement in Customize Product screen

 @param
 PIO_PHOTO_ARRANGEMENT_CHOOSE,
 PIO_PHOTO_ARRANGEMENT_AUTO,
 PIO_PHOTO_ARRANGEMENT_MANUAL
 
 */
- (void)setPhotoArrangement:(NSInteger)option;

// Sample code:
[printIO setPhotoArrangement:PIO_PHOTO_ARRANGEMENT_AUTO];
//... other customization
[printIO open];

setIconForAddPhotosButton

/**
 Change image for "Add photos" button in Customize Product screen

 @param imagePath Path to image file.
 */
- (void)setIconForAddPhotosButton:(NSString *)imagePath;

// Sample code:
[printIO setIconForAddPhotosButton:[[NSBundle mainBundle]pathForResource:@"add_photos" ofType:@"png"]];
//... other customization
[printIO open];

setIconForSaveButtonInCustomizeProduct

/**
 Change icon for 'Save' button on Customize Product screen

 @param imagePath Path to image file.
 */
- (void)setIconForSaveButtonInCustomizeProduct:(NSString *)imagePath;

// Sample code:
[printIO setIconForSaveButtonInCustomizeProduct:[[NSBundle mainBundle]pathForResource:@"icon" ofType:@"png"]];
//... other customization
[printIO open];

setPopUpWithImage:text:textColor

/**
 Set Pop up balloon in Customize Product screen

 @param path Path to background image.
 @param text Balloon text.
 @param textColor Text color.
 */
- (void)setPopUpWithImage:(NSString *)path text:(NSString *)text textColor:(UIColor *)textColor;

// Sample code:
[printIO setPopUpWithImage:[[NSBundle mainBundle]pathForResource:@"image" ofType:@"png"]
                      text:@"Double tap..." 
                 textColor:[UIColor whiteColor]];
//... other customization
[printIO open];

setDoubleTapBalloonVisibilityTime

/**
 Set time of visibility for Double Tap ballon in Customize Product screen

 @param timeInSeconds Time in seconds. Set -1 if ballon should be visible all the time.
 Default time is 10 seconds.
 */
- (void)setDoubleTapBalloonVisibilityTime:(int)timeInSeconds;

// Sample code:
[printIO setDoubleTapBalloonVisibilityTime:3];
//... other customization
[printIO open];

showHelpDialogWithImage

/**
 Show custom dialog for helping user how to edit a photo

 @param Path to image.
 */
- (void)showHelpDialogWithImage:(NSString *)imagePath;

// Sample code:
[printIO showHelpDialogWithImage:[[NSBundle mainBundle]pathForResource:@"image" ofType:@"png"]];
//... other customization
[printIO open];

setSamePhotoOnFrontAndBackSideOfProduct

/**
 Set same photo on front and back side of product.
 Currently it only supports PRODUCT_THROW_PILLOWS.

 @param productId Product id
 */
- (void)setSamePhotoOnFrontAndBackSideOfProduct:(NSInteger)productId;

// Sample code:
[printIO setSamePhotoOnFrontAndBackSideOfProduct:PRODUCT_THROW_PILLOWS()];
//... other customization
[printIO open];

setCustomizationHelpText

/**
 Provide help text for Customize Product screen
 
 @param text Help text
 */
- (void)setCustomizationHelpText:(NSString *)text;

// Sample code:
[printIO setCustomizationHelpText:@"Help text..."];
//... other customization
[printIO open];

setDefaultTemplateTexts

/**
 Available from sdk version v1.2.31.
 
 Replace default template text for productIds:
 
 NSArray *photobookText = @[@"First text", @"Second text", @"Third text"];
 NSArray *flatCardsText = @[@"Flat card first text"];
 
 NSDictionary *textDict = [NSDictionary dictionaryWithObjectsAndKeys:
                            flatCardsText, @(PRODUCT_FLAT_CARDS()),
                            photobookText, @(PRODUCT_PHOTO_BOOKS()), nil];
 
 @param texts Array of NSDictionary with text and productId
 */
-(void)setDefaultTemplateTexts:(NSDictionary *)textDict;

// Sample code:
[printIO setDefaultTemplateTexts:@[@"Sample text 1", @"Sample text 2"];
//... other customization
[printIO open];

showOnlyOnePhotoTemplates

/**
 Filter templates to show only one photo template
 Available from version 1.2.30.
 
 @param set Dafault value is NO
 */
-(void)showOnlyOnePhotoTemplates:(BOOL)set;

// Sample code:
[printIO showOnlyOnePhotoTemplates:YES];
//... other customization
[printIO open];

setKeyboardBackgroundColor

/**
 Set custom keyboard background color. Only applies to landscape mode.
 Available from SDK v1.5.10(23)
 
 @param color Defalut color is ligh grey.
 */
-(void)setKeyboardBackgroundColor:(UIColor *)color;

// Sample code:
[printIO setKeyboardBackgroundColor:[UIColor redColor]];
//... other customization
[printIO open];

showCancelOptionsButton

/**
 Show Cancel button on Options screen
 Available from SDK version 1.5.12(23)
 
 @param set Defailt value is NO
 */
-(void)showCancelOptionsButton:(BOOL)set;

// Sample code:
[printIO showCancelOptionsButton:YES];
//... other customization
[printIO open];

Screen ‘Image Editor’

imageEditorShowButtons

/**
 Set which buttons will be visible in Image Editor toolbar. By default, all buttons are visible.

 @param buttons Array of PIOButton objects of types:
 PIO_BUTTON_IMAGE_EDITOR_INFO,
 PIO_BUTTON_IMAGE_EDITOR_ROTATE,
 PIO_BUTTON_IMAGE_EDITOR_EDIT_TEXT,
 PIO_BUTTON_IMAGE_EDITOR_EFFECTS
 */
- (void)imageEditorShowButtons:(NSArray *)buttons;

// Sample code:
NSArray *buttons = @[[PIOButton alloc]initWithType:PIO_BUTTON_IMAGE_EDITOR_INFO],
                     [PIOButton alloc]initWithType:PIO_BUTTON_IMAGE_EDITOR_ROTATE],
                     [PIOButton alloc]initWithType:PIO_BUTTON_IMAGE_EDITOR_EDIT_TEXT],
                     [PIOButton alloc]initWithType:PIO_BUTTON_IMAGE_EDITOR_EFFECTS]];
[printIO imageEditorShowButtons:buttons];
//... other customization
[printIO open];

Screen ‘Shopping Cart’

setIconForShoppingCart:withNumberOfProducts:labelPosition:textColor

/**
 Set custom icon for Shopping Cart
 
 @param path Path to image file.
 @param set Set to YES if image has red circle for number of items in cart.
 @param lPosition Position of label with number of products in cart
 @param tColor Text color of label with number of products in cart
 */
- (void)setIconForShoppingCart:(NSString *)path
          withNumberOfProducts:(BOOL)set
                 labelPosition:(CGPoint)lPosition
                     textColor:(UIColor *)tColor;

// Sample code:
[printIO setIconForShoppingCart:[[NSBundle mainBundle]pathForResource:@"cart" ofType:@"png"]
           withNumberOfProducts:YES
                  labelPosition:CGPointZero
                      textColor:[UIColor whiteColor]];
//... other customization
[printIO open];

setIconForShoppingCart:withNumberOfProducts:labelPosition:circleColor:textColor

/**
 Set custom icon for Shopping Cart

 @param path Path to image file.
 @param set Set to YES to show number of items in cart.
 @param labelPosition Position of label with number of products in cart
 @param circleColor Color of label background (circle background)
 @param textColor Text color of label with number of products in cart
 */
- (void)setIconForShoppingCart:(NSString *)path
          withNumberOfProducts:(BOOL)set
                 labelPosition:(CGPoint)labelPosition
                   circleColor:(UIColor *)circleColor
                     textColor:(UIColor *)textColor;

// Sample code:
[printIO setIconForShoppingCart:[[NSBundle mainBundle]pathForResource:@"cart" ofType:@"png"]
           withNumberOfProducts:YES
                  labelPosition:CGPointZero
                    circleColor:[UIColor redColor]
                      textColor:[UIColor whiteColor]];
//... other customization
[printIO open];

setTitleForShoppingCart

/**
 Change title for "Shopping Cart" screen

 @param title New title
 */
- (void)setTitleForShoppingCart:(NSString *)title;

// Sample code:
[printIO setTitleForShoppingCart:@"Title"];
//... other customization
[printIO open];

showKeepShoppingButtonInShoppingCart

/**
 Toggle 'Keep Shopping' button on Shopping Cart screen.

 @param showsButton Button visibility flag. Default is YES.
 */
- (void)showKeepShoppingButtonInShoppingCart:(BOOL)showsAddButton;

// Sample code:
[printIO showKeepShoppingButtonInShoppingCart:YES];
//... other customization
[printIO open];

setKeepShoppingButtonTitle

/**
 Customize 'Keep Shopping' button

 @param title New title for button
 @param iconPath Path to icon file. Default is nil.
 */
- (void)setKeepShoppingButtonTitle:(NSString *)title icon:(NSString *)iconPath;

// Sample code:
[printIO setKeepShoppingButtonTitle:@"MAKE MORE PRODUCTS" 
                               icon:[[NSBundle mainBundle]pathForResource:@"icon" ofType:@"png"]];
//... other customization
[printIO open];

setIconForShoppingCartBackButton

/**
 Change icon for Back button on Shopping Cart screen

 @param iconPath Path to icon file. Default is nil.
 */
- (void)setIconForShoppingCartBackButton:(NSString *)iconPath;

// Sample code:
[printIO setIconForShoppingCartBackButton:[[NSBundle mainBundle]pathForResource:@"icon" ofType:@"png"]];
//... other customization
[printIO open];

numberOfItemsInShoppingCart

/**
 Get number of items in shopping cart
 */
+ (NSInteger)numberOfItemsInShoppingCart;

// Sample code:
int numberOfItems = [PrintIO numberOfItemsInShoppingCart];

setPromoCode

/**
 Set promo code to get discount

 @param promoCode Promo code
 */
- (void)setPromoCode:(NSString *)promoCode;

// Sample code:
[print setPromoCode:@"12345"];
//... other customization
[printIO open];

hideCartButtonWhenCartIsEmpty

/**
 Hides cart button from navigation bar, when cart is empty
 
 @param set Default value is NO
 */
- (void)hideCartButtonWhenCartIsEmpty:(BOOL)set;

// Sample code:
[print hideCartButtonWhenCartIsEmpty:YES];
//... other customization
[printIO open];

closeWidgetFromShoppingCart

/**
 Close widget when tap on Back button in Shopping Cart screen
 
 @param Default value is NO
 */
- (void)closeWidgetFromShoppingCart:(BOOL)set;

// Sample code:
[print closeWidgetFromShoppingCart:YES];
//... other customization
[printIO open];

clearShoppingCart

/**
 Remove all items(products) from Shopping cart
 */
+ (void)clearShoppingCart;

// Sample code:
[PrintIO clearShoppingCart];

Screen ‘Payment Options’

setPayeeName

/**
 Set payee name for order processing

 @param payeeName Payee name
 */
- (void)setPayeeName:(NSString *)payeeName;

// Sample code:
[printIO setPayeeName:@"Your app name"];
//... other customization
[printIO open];

setTermsAndConditionsURL

/**
 Set url for Terms and Conditions

 @params url If not set, this option will be hidden
 */
- (void)setTermsAndConditionsURL:(NSURL *)url;

// Sample code:
[printIO setTermsAndConditionsURL:[NSURL URLWithString:@"http://yourapp.com/terms.html"]];
//... other customization
[printIO open];

setPaymentOptions

/**
 Set Payment option
 
 @param paymentOptions:
 PaymentOptionPayPal
 PaymentOptionCreditCard
 PaymentOptionAll
 */
- (void)setPaymentOptions:(PaymentOptions)paymentOptions;

// Sample code:
[printIO setPaymentOptions:PaymentOptionAll];
//... other customization
[printIO open];

setPayPalStagingClientId:productionClientId

/**
 Set PayPal's client ids, for both modes, staging and production. Default values are
 client ids from PrintIO
 https://developer.paypal.com/developer/applications/create
 
 @param sClientId Client ID for staging mode
 @param pClientId Client ID for production mode
 */
- (void)setPayPalStagingClientId:(NSString *)sClientId
              productionClientId:(NSString *)pClientId;

// Sample code:
[printIO setPayPalStagingClientId:@"s_client_id" productionClientId:@"p_client_id"];
//... other customization
[printIO open];

setBraintreeStagingEncryptionKey:productionEncryptionKey

/**
 Set Braintree encryption key for staging and production mode. By default, keys from PrintIO will be used
 https://www.braintreepayments.com/create-merchant
 
 For encryption key use CSE Key from API keys you get
 
 @param sEncKey Encryption(CSE) key for staging mode
 @param pEncKey Encryption(CSE) key for production mode
 */
- (void)setBraintreeStagingEncryptionKey:(NSString *)sEncKey
                 productionEncryptionKey:(NSString *)pEncKey;

// Sample code:
[printIO setBraintreeStagingEncryptionKey:@"s_enc_key" productionEncryptionKey:@"p_enc_key"];
//... other customization
[printIO open];

setApplePayMerchantIdentifier

/**
 Set ApplePay merchant identifier
 
 @param merchantIdentifier Merchant Identifier
 */
-(void)setApplePayMerchantIdentifier:(NSString *)merchantIdentifier;

// Sample code:
[printIO setApplePayMerchantIdentifier:@"your.merchantid"];
//... other customization
[printIO open];

Screen ‘Shipping Addresses’

setColorForAddressSelection

/**
 Change highlight color for address selection on 'Select Address'
 screen

 @param color New color. Default is light green.
 */
- (void)setColorForAddressSelection:(UIColor *)color;

// Sample code:
[printIO setColorForAddressSelection:[UIColor redColor]];
//... other customization
[printIO open];

clearShippingAddresses

/**
 Remove all saved shipping addresses
 */
+ (void)clearShippingAddresses;

// Sample code:
[PrintIO clearShippingAddresses];

clearBillingAddresses

/**
 Remove all saved billing addresses
 */
+ (void)clearBillingAddresses;

// Sample code:
[PrintIO clearBillingAddresses];

Screen ‘Order Completed’

setTitleForOrderCompletedScreen

/**
 Change title for 'Order Completed' screen

 @param title New title
 */
- (void)setTitleForOrderCompletedScreen:(NSString *)title;

// Sample code:
[printIO setTitleForOrderCompletedScreen:@"Title"];
//... other customization
[printIO open];

setIconForOrderCompletedScreen

/**
 Change icon for company logo on 'Order Completed' screen

 @param iconPath File path to icon
 */
- (void)setIconForOrderCompletedScreen:(NSString *)iconPath;

// Sample code:
[printIO setIconForOrderCompletedScreen:[[NSBundle mainBundle]pathForResource:@"icon" ofType:@"png"]];
//... other customization
[printIO open];

setMessageForOrderCompletedScreen

/**
 Change company message below company logo on 'Order Completed' screen

 @param message New message
 */
- (void)setMessageForOrderCompletedScreen:(NSMutableAttributedString *)message;

// Sample code:
NSMutableAttributedString *message = [[NSMutableAttributedString alloc]initWithString:@"Message..."];
[printIO setMessageForOrderCompletedScreen:message];
//... other customization
[printIO open];

orderCompletedScreenCloseButtonShouldPerformBack

/**
 Change function of 'Close' button on 'Order Completed' screen

 @param set Default value is NO
 */
- (void)orderCompletedScreenCloseButtonShouldPerformBack:(BOOL)set;

// Sample code:
[printIO orderCompletedScreenCloseButtonShouldPerformBack:NO];
//... other customization
[printIO open];

Google Analytics

setTrackingIDForGoogleAnalytics

/**
 Set tracking id for Google Analytics. If tracking id is not provided,
 analytics are disabled.

 @param trackingID Tracking ID provided by Google
 */
- (void)setTrackingIDForGoogleAnalytics:(NSString *)trackingID;

// Sample code:
[printIO setTrackingIDForGoogleAnalytics:@"tracking_id"];
//... other customization
[printIO open];

Push Notifications

enablePushNotifications

/**
 Enable push notification in SDK
 
 @param set Default value is disabled
 */
- (void)enablePushNotifications:(BOOL)set;

// Sample code:
[printIO enablePushNotifications:YES];
//... other customization
[printIO open];

setParseApplicationId:apiKey

/**
 Set applicationId and apiKey provided from parse.com

 @param appId application id
 @param apiKey rest api key
 */
+ (void)setParseApplicationId:(NSString *)appId
                       apiKey:(NSString *)apiKey;

// Sample code:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
  ...

  // Set Parse application id and api key
  [PrintIO setParseApplicationId:kAppID apiKey:kApiKey];

  // Register for push notifications
  if ([application respondsToSelector:@selector(isRegisteredForRemoteNotifications)]) {

    // iOS 8 Notifications
    [application registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:
    (UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge) categories:nil]];

    [application registerForRemoteNotifications];
  } else {

     // iOS < 8 Notifications
     [application registerForRemoteNotificationTypes:
     (UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert)];
  }
  // ...

  return YES;
}

registerDeviceToken

/**
 Register device to receive push notifications

 @param deviceToken Device token
 */
+ (void)registerDeviceToken:(NSData *)deviceToken;

// Sample code:
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
  [PrintIO registerDeviceToken:deviceToken];
}

showNotification:backgroundColor:textColor

/**
 Display notification pop up from bottom of screen. On tap it will dismiss notification.

 @param userInfo Dictionary provided from didReceiveRemoteNotification
 @param backgroundColor Background color for notification pop up
 @param textColor Text color
 */
+ (void)showNotification:(NSDictionary *)userInfo
         backgroundColor:(UIColor *)bcgColor
               textColor:(UIColor *)textColor;

// Sample code:
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
  [PrintIO showNotification:userInfo
            backgroundColor:[UIColor blackColor]
                  textColor:[UIColor whiteColor]];
}