CocoaPods trunk is moving to be read-only. Read more on the blog, there are 19 months to go.

Apprack 1.1.1

Apprack 1.1.1

Maintained by Apprack.



Apprack 1.1.1

  • By
  • apprack


Increase the visibility of your app with a beautiful landing page and take your app to the next level by integrating required and engaging content.

iOS SDK

Focus on your core business and let apprack handle the rest.

The apprack iOS SDK allows to keep focus on your core business by taking over all the screens you need, but don't want to spend time working on, such as screens for terms of use, privacy policy, release notes, settings, support form …

All you need to use the SDK is an account on apprack.io.

Get started now

apprack.io is also able to generate a landing page for your app to help you promote and market it.
Go to apprack.io to learn more.

Included in the SDK

The apprack iOS SDK includes various screens and features. You can use all of them or only one – every combination is possible. You can use the settings controller, which links to all other provided screens. You're also able to just use the screen for the privacy policy or use the settings screen only to promote your other apps.

Screens

  • Settings Screen
    • Automatically links to your app settings in the iOS settings if your app requests any of the privacy categories (photos, calendar, contacts, …)
    • Links to the ratings screen in the App Store
    • Includes version number (also alerts the user whenever there is a new update available)
    • Integrates all other screens included in the SDK
    • Can be extended using custom sections or completely custom UIViews
    • Sections (such as support form, release notes, legal screens, …) can be disabled/enabled at any time on apprack.io — changes are visible in your app immediatly
    • Links to your social media profiles (Twitter, Facebook, Instagram, …) coming soon
    • Promotes your other apps coming soon
  • Support Form
    • Support messages include debug information automatically (app version, iOS version, device model, …)
  • Release Notes
    • Fully automated release notes, always in sync with your App Store releases. apprack.io knows when your version goes live and gets the release notes for the latest version directly from the App Store
  • Legal Screens
    • Legal documents can be edited at any time on apprack.io — changes are visible in your app immediatly
    • Provided Screens:
      • Terms of use
      • Privacy policy
      • Imprint
      • Legal

Features

  • Check for available updates
    • The SDK can check for a newer version on the App Store and ask the user to update
    • The release notes of the new version can be directly linked to create a greater incentive to update
    • The feature can be disabled/enabled at any time on apprack.io — changes are visible in your app immediatly
  • Ask for reviews
    • The SDK can ask the user for an App Store rating and review using the official SKStoreReviewController provided by Apple
    • Use the settings on apprack.io to specify if and when to prompt your users (by required app launches, days since first install, …)

How do I use it?

To get a first impression of the SDK checkout this repository and launch the provided sample app. The sample app is provided in Objective-C as well as in Swift.

To integrate it into your app, we strongly recommend to install the SDK using CocoaPods.

Installing with Cocoapods

The iOS SDK is available through CocoaPods, a dependency manager for Cocoa projects.

You can install it with the following command:

$ gem install cocoapods

To integrate the SDK into your Xcode project, specify it in your Podfile:

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '10.0'
use_frameworks!

target '<Your Target Name>' do
    pod 'Apprack'
end

Then, run the following command:

$ pod install

Authenticate your app

When your app launches it needs to authenticate itself with apprack.io to be able to include the required content. To do this just call -initializeWithAppKit:andApiKey: in -application:didFinishLaunchingWithOptions:

Objective-C

#import <APRFramework/APRFramework.h>

- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions {

    // the ids for your app can be found on your apprack.io dashbaord in the SDK section
    NSString* appKit = @"415a4162-f52a-4b7b-bc02-b582e535dc56";
    NSString* apiKey = @"4vzHzK6WaUsnonCG715QYQ";
	
    [APRAppManager.sharedManager initializeWithAppKit:appKit andApiKey:apiKey];
    
    return YES;
}

Swift

import APRFramework

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
	
    // the ids for your app can be found on your apprack.io dashbaord in the SDK section
    let appKit = "415a4162-f52a-4b7b-bc02-b582e535dc56"
    let apiKey = "4vzHzK6WaUsnonCG715QYQ"
    
    APRAppManager.shared().initialize(withAppKit: appKit, andApiKey: apiKey)
    
    return true
}

Present screens

To show a screen provided by the SDK, use the properties of APRAppManager (such as settingsViewController, imprintViewController, changelogViewController, …). All screens are expected to be presented in a UINavigationController.

Present modally

Objective-C

UINavigationController* navigation = [[UINavigationController alloc] initWithRootViewController:APRAppManager.sharedManager.settingsViewController];
[self presentViewController:navigation animated:YES completion:nil];

Swift

let navigation = UINavigationController(rootViewController: APRAppManager.shared().settingsViewController)
self.present(navigation, animated: true, completion: nil)

Push on existing navigation controller

Objective-C

[self.navigationController pushViewController:APRAppManager.sharedManager.settingsViewController animated:YES];

Swift

self.navigationController?.pushViewController(APRAppManager.shared().settingsViewController, animated: true)

Settings screen

The best way to include all screens provided by the SDK is to include the provided settings screen. Other screens, such as support form, release notes, privacy policy, legal notes and imprint are accessible from the settings.

Customize

You are able to customize which content is displayed or linked using the SDK section on apprack.io.

There are several color properties on APRSettingsViewController to customize the appearance of the settings screen to perfectly adapt it to your app's color scheme.

  • backgroundColor
    • UIColor property to set the background color for the controller.
  • cellBackgroundColor
    • UIColor property to set the background color for cells.
  • borderColor
    • UIColor property to set the border color for cells.
  • finePrintColor
    • UIColor property to set the color of the copyright information and imprint link.
  • textColor
    • UIColor property to set the text color for cells.
  • cellSpacing
    • Property to specify the space between cells.
  • sectionSpacing
    • Property to specify the space between sections.
  • privacySettingsLinkEnabled
    • Property to dis/enable if the settings screen should include a link to your app's settings section in the iOS settings app. If enabled, it is only shown if your app requests access to content listed in the settings app (e.g. contact, calendars, location, …)

Extend

You can extend the settings screen with your own views. Or use one of our provided functions to add cells with custom content and actions.

  • To extend the settings screen by providing your own views, add a view using -addCustomView: on APRSettingsController. Custom views are dislayed on top, before all predefined cells.
  • Or choose to extend the settings screen using one of our predefined cells:
    • -addCellWithTitle:
    • -addCellWithTitle:andCallbackHandler:
    • -addCellWithTitle:accessoryText:andCallbackHandler:
    • -addCellWithTitle:switchValue:andCallbackHandler:
    • -addDescriptionalText:
    • -addSectionMargin:

Customized and Extented Settings Sample

Objective-C

APRSettingsViewController* settingsController = APRAppManager.sharedManager.settingsViewController;

// customize it
settingsController.backgroundColor = UIColor.grayColor;
settingsController.cellBackgroundColor = UIColor.darkGrayColor;
settingsController.textColor = UIColor.whiteColor;
settingsController.tintColor = UIColor.yellowColor;

// extend it
[settingsController addDefaultTopMargin];
[settingsController addCellWithTitle:@"Title Text"];

UIImageView* imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 44, 44)];
imageView.image = [UIImage imageNamed:@"sample"];
[imageView.heightAnchor constraintEqualToConstant:44].active = YES;
[imageView.widthAnchor constraintEqualToConstant:44].active = YES;
[settingsController addCustomView:imageView];

[settingsController addCellWithTitle:@"Title Text" accessoryText:@"Accessory Text" andCallbackHandler:^{
    NSLog(@"Do something on selection.");
}];

[settingsController addCellWithTitle:@"Switch" switchValue:YES andCallbackHandler:^(BOOL isOn) {
    NSLog(@"Do something on value change. Switch is %@ now.", isOn ? @"on" : @"off");
}];

// present it
UINavigationController* navigation = [[UINavigationController alloc] initWithRootViewController:settingsController];
[self presentViewController:navigation animated:YES completion:nil];

Swift

let settingsController = APRAppManager.shared().settingsViewController

// customize it
settingsController.backgroundColor = .gray
settingsController.cellBackgroundColor = .darkGray
settingsController.textColor = .white
settingsController.tintColor = .yellow

// extend it
settingsController.addDefaultTopMargin()
settingsController.addCell(withTitle: "Title Text")

let imageView = UIImageView(frame: CGRect(x: 0, y: 0, width: 44, height: 44))
imageView.image = UIImage(named: "sample")
imageView.heightAnchor.constraint(equalToConstant: 44).isActive = true
imageView.widthAnchor.constraint(equalToConstant: 44).isActive = true
settingsController.addCustomView(imageView)

settingsController.addCell(withTitle: "Title Text", accessoryText: "Accessory Text") {
    print("Do something on selection.")
}

settingsController.addCell(withTitle: "Switch", switchValue: true) { isOn in
    print("Do something on value change. Switch is \(isOn ? "on" : "off") now.")
}

// present it
let navigation = UINavigationController(rootViewController: settingsController)
self.present(navigation, animated: true, completion: nil)

Localization

The apprack SDK is currently localized for

  • English
  • German

Support for more languages is in the works.
If you provide us with your localization for a language we not yet support, you'll receive up to six months of service for free.

If you want to add your own localization, translate the keys found in APRStrings.strings and add it to your Localizable.strings. It is also possible to only add specific strings and override our localization with your prefered wording.

Check for available updates

The SDK can check if a newer version is available on the App Store and ask the user to update. Optionally, the release notes of the new version can be directly linked, to create a greater incentive to update.

To have the SDK present an update alert you can either

  • enable 'Update available alert' in the SDK configuration on apprack.io
    • In this case, the SDK checks for an available update and prompts the user automatically to update after the app launches if a newer version is available (and supported on his device).
  • check manually for a newer version at another point in time
    • To do this call -showUpdateAlertOnController: on APRAppManager.

Objective-C

[APRAppManager.sharedManager showUpdateAlertOnController:self];

Swift

APRAppManager.shared().showUpdateAlertOnController(self)

Ask for reviews

The SDK can ask the user for an App Store rating and review using the official SKStoreReviewController provided by Apple. Use the settings on apprack.io to specify when to prompt your users (by required app launches, days since first install, …)

When it's a good time to ask the user for a review just call -shouldRequestReview on APRAppManager:

Objective-C

[APRAppManager.sharedManager shouldRequestReview];

Swift

APRAppManager.shared().shouldRequestReview()

Keep in mind, even if all checks (days since first launch, etc.) succeed, it is still not guaranteed that the review alert is shown.
Apple limits the display of the alert to about three times per year!
Therefore, you should not call shouldRequestReview on active user interaction; e.g. do not create a button 'Rate App' and call shouldRequestReview as in most cases nothing would happen for your user.


Personal data

The SDK collects an identifier unique to each user and each app, which under the terms defined by the GDPR is personal data. In addition, information about the app and device is collected, such as app version, iOS version, device model and type, as well as the apprack SDK's version. All data is securely processed and stored on servers in Germany. We offer a data processing agreement for your convenience.


Found a bug or missing a feature?