{"action":"created","comment":{"url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/pulls/comments/52389741","id":52389741,"diff_hunk":"@@ -1,32 +1,504 @@\n-What is Swrve\n--------------\n-Swrve is a single integrated platform delivering everything you need to drive mobile engagement and create valuable consumer relationships on mobile.  \n-This native iOS SDK will enable your app to use all of these features.\n+Swrve\n+=\n+Swrve is a single integrated platform delivering everything you need to drive mobile engagement and create valuable consumer relationships on mobile.\n \n-Getting started\n----------------\n-Have a look at the quick integration guide at http://docs.swrve.com/developer-documentation/37926233/\n+This iOS SDK will enable your app to use all of these features.\n \n-Installing using CocoaPods\n---------------------------\n-Add the following line to your Podfile\n-```\n-pod ‘SwrveSDK’\n-```\n+- [Getting started](#getting-started)\n+  - [Requirements](#requirements)\n+    - [Xcode (latest)](#xcode-latest)\n+    - [Frameworks](#frameworks)\n+    - [Automatic reference counting](#automatic-reference-counting)\n+- [Installation Instructions](#installation-instructions)\n+  - [In-app Messaging](#in-app-messaging)\n+    - [In-app Messaging Deeplinks](#in-app-messaging-deeplinks)\n+  - [Push Notifications](#push-notifications)\n+    - [Timing the device token (push permission) request](#timing-the-device-token-push-permission-request)\n+    - [Processing custom payload](#processing-custom-payload)\n+    - [Disabling method swizzling](#disabling-method-swizzling)\n+    - [Creating and uploading your iOS Certificate](#creating-and-uploading-your-ios-certificate)\n+    - [Provisioning your app](#provisioning-your-app)\n+  - [Sending Events](#sending-events)\n+    - [Sending Named Events](#sending-named-events)\n+    - [Event Payloads](#event-payloads)\n+    - [Send User Properties](#send-user-properties)\n+    - [Sending Virtual Economy Events](#sending-virtual-economy-events)\n+    - [Sending IAP Events and IAP Validation](#sending-iap-events-and-iap-validation)\n+    - [Enabling IAP Receipt Validation](#enabling-iap-receipt-validation)\n+    - [Verifying IAP Receipt Validation](#verifying-iap-receipt-validation)\n+    - [Unvalidated IAP](#unvalidated-iap)\n+  - [Integrating Resource A/B Testing](#integrating-resource-ab-testing)\n+  - [Automatic Reference Counting](#automatic-reference-counting)\n+  - [Testing your integration](#testing-your-integration)\n+- [Upgrade Instructions](#upgrade-instructions)\n+- [How to run the demo](#how-to-run-the-demo)\n+- [Contributing](#contributing)\n+- [License](#license)\n+\n+\n+Getting started\n+=\n \n Requirements\n-------------\n+-\n ### Xcode (latest)\n The SDK supports iOS 6+ and the latest version of Xcode (Xcode 6, as the time of writing).\n \n+### Frameworks\n+\n+* `CFNetwork.framework`\n+* `StoreKit.framework`\n+* `Security.framework`\n+* `QuartzCore.framework`\n+* `CoreTelephony.framework`\n+* `UIKit.framework`\n+* `MessageUI.framework`\n+* `CoreLocation.framework`\n+* `AddressBook.framework`\n+* `AVFoundation.framework`\n+* `AssetsLibrary.framework`\n+* `Photos.framework`\n+* `Contacts.framework`\n+\n+### Automatic reference counting\n+\n+If your XCode project does not use Automatic Reference Counting (ARC), you must enable ARC for each file in the Swrve SDK. To enable ARC for each file.\n+\n+Installation Instructions\n+=\n+The easiest path to install the Swrve SDK is to use Cocoapads to automatically download the Swrve SDK and add it to your project: add `pod 'SwrveSDK'` to your Podfile.\n+\n+It is also possible to add the SDK by:\n+* Downloading the [latest release](https://github.com/Swrve/swrve-ios-sdk/releases/latest)\n+\n+If you are using Cocoapods, add `pod 'SwrveSDK'` to your Podfile and run `pod install`.\n+\n+If you are not using the Cocoapods, you'll need to: unzip the iOS SDK, copy the contents of the SDK folder into your project and add the frameworks listed in the requirement section above.\n+\n+1. (Optional): With iOS 9, by default all communications between the app and its backend or the web should use HTTPS. (See the App Transport Security section in Apple’s [What’s New in iOS 9.0](https://developer.apple.com/library/prerelease/ios/releasenotes/General/WhatsNewIniOS/Articles/iOS9.html) guide.) Swrve’s API URL endpoints are now all HTTPS-capable and the API calls default to HTTPS. However, if you’re planning to use YouTube videos as content in your Conversations, add an Application Transport Security exception to your `<App>-Info.plist`.\n+\n+  ```\n+  <key>NSAppTransportSecurity</key>\n+  <dict>\n+   <key>NSAllowsArbitraryLoads</key>\n+   <true/>\n+  </dict>\n+  ```\n+\n+  This is needed, as even HTTPS YouTube links use non-secure endpoints that keep changing over time.\n+\n+2. By default, Swrve stores all customer data and content in our US data center. If you require EU-only data storage, you must configure the SDK to point to Swrve’s EU-based URL endpoints.\n+\n+  Add one of the following code snippets to the didFinishLaunchingWithOptions method of your AppDelegate, depending on whether your data will be stored in our US or EU data center:\n+\n+  US Data Storage\n+\n+  ```\n+  #import \"swrve.h\"\n+  - (BOOL) application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {\n+     [Swrve sharedInstanceWithAppID:<app_id> apiKey:@\"<api_key>\" launchOptions:launchOptions];\n+  }\n+  ```\n+\n+  EU Data Storage\n+\n+  ```\n+  #import \"swrve.h\"\n+  - (BOOL) application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {\n+     SwrveConfig* config = [[SwrveConfig alloc] init];\n+     config.selectedStack = SWRVE_STACK_EU;\n+     [Swrve sharedInstanceWithAppID:<app_id> apiKey:@\"<api_key>\" config:config launchOptions:launchOptions];\n+  }\n+  ```\n+\n+  For more information, see [How Do I Configure the Swrve SDK for EU Data Storage?](http://docs.swrve.com/faqs/sdk-integration/configure-sdk-for-eu-data-storage/) If you have any questions or need assistance configuring the SDK for EU data storage, please contact support@swrve.com.\n+\n+3. Replace <app_id> and <api_key> with your Swrve app ID and Swrve API key.\n+\n+4. (Optional): If you are planning to use or ask for location tracking permission, add the following keys to your `<App>-Info.plist` if not already there (edit the Value message to whatever text you want):\n+\n+  * `NSLocationAlwaysUsageDescription`. Value: “Location is needed to offer all functionality in this app”.\n+  * `NSLocationWhenInUseUsageDescription`. Value: “Location is needed to offer all functionality in this app”.\n+\n+In-app Messaging\n+-\n+Integrate the in-app messaging functionality so you can use Swrve to send personalized messages to your app users while they’re using your app. If you’d like to find out more about in-app messaging, see [Intro to In-App Messages](http://docs.swrve.com/user-documentation/in-app-messaging/intro-to-in-app-messages/).\n+\n+Before you can test the in-app message feature in your game, you need to create an In App Message campaign in the Swrve Dashboard.\n+\n+For iOS, if you want to display an in-app message as soon as your view is ready, you must trigger the display event when the view controller is in the `viewDidAppear` state and not in `viewDidLoad` state.\n+\n+### In-app Messaging Deeplinks ###\n+\n+When creating in-app messages in Swrve, you can configure message buttons to direct users to perform a custom action when clicked. For example, you might configure a button to direct the app user straight to your app store. To enable this feature, you must configure deeplinks by performing the actions outlined below. For more information about creating in-app messages in Swrve, see [Creating In-App Messages](http://docs.swrve.com/user-documentation/in-app-messaging/creating-in-app-messages/).\n+\n+Integrate deeplinks to direct users to a sale, website or other target when they click an in-app message. Before handling deeplinks in Swrve, you’ll need to register a [custom URL scheme with iOS](https://developer.apple.com/library/ios/featuredarticles/iPhoneURLScheme_Reference/Introduction/Introduction.html).\n+\n+Once the custom URL scheme is set, your app can receive and direct users from outside of the app. By default, the Swrve SDK sends users directly to the URL. If you would like to handle query parameters from this URL, you must implement this within the app.\n+\n+Review the code examples below if you would like to implement custom behavior.\n+\n+```\n+- (BOOL) application:(UIApplication *)application handleOpenURL:(NSURL *)url {\n+    // Normally your app would handle url navigation here and go to the correct\n+    // app location.  In this example we just print the url in an alert.\n+    UIAlertView *alertView;\n+    NSString *text = [[url host] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];\n+    alertView = [[UIAlertView alloc] initWithTitle:@\"Text\" message:text delegate:nil cancelButtonTitle:@\"OK\" otherButtonTitles:nil];\n+    [alertView show];\n+    return YES;\n+}\n+```\n+\n+If you would like to process the custom actions directly rather than use a custom URL scheme, you can do so by setting a delegate on the Swrve SDK:\n+\n+```\n+[Swrve sharedInstance].talk.customButtonCallback = ^(NSString* action) {\n+   // Process the custom action. For example:\n+   float discount = 1.0;\n+   NSError* error;\n+   NSData* actionAsData = [action dataUsingEncoding:NSUTF8StringEncoding];\n+   NSDictionary* actionAsJson = [NSJSONSerialization JSONObjectWithData:actionAsData options:NSJSONReadingMutableContainers error:&error];\n+   if([actionAsJson objectForKey:@\"currencyMultiplier\"]) {\n+      discount = ((NSString*)[actionAsJson objectForKey:@\"currencyMultiplier\"]).floatValue;\n+      if(discount != 1.0) {\n+         [self showStoreFrontWithDiscount:discount];\n+      }\n+   }\n+}\n+```\n+\n+For example, if you'd like to send Swrve events using custom actions, you could add a customButtonCallback like this:\n+\n+```\n+[Swrve sharedInstance].talk.customButtonCallback = ^(NSString* action) {\n+    NSURL *url = [NSURL URLWithString:action];\n+    double delayInSeconds = 0.25;\n+    dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);\n+    dispatch_after(popTime, dispatch_get_main_queue(), ^(void) {\n+\n+        if ([url.scheme isEqualToString:@\"swrve\"]) {\n+            NSArray *pairs = [url.query componentsSeparatedByString:@\"&\"];\n+            for(NSString *pair in pairs){\n+                NSString key = [[pair componentsSeparatedByString:@\"=\"] objectAtIndex:0];\n+                NSString value = [[pair componentsSeparatedByString:@\"=\"] objectAtIndex:1];\n+\n+                if ([key isEqualToString:@\"event\"]) {\n+                    [[Swrve sharedInstance] event:value];\n+                }\n+            }\n+            [[Swrve sharedInstance] sendQueuedEvents];\n+        }\n+        else {\n+            [[UIApplication sharedApplication] openURL:url];\n+        }\n+    });\n+}\n+```\n+\n+\n+Push Notifications\n+-\n+\n+Push notifications are disabled by default. To enable them, set `SwrveConfig.pushEnabled` to `YES`. In addition, you must tell the Swrve SDK when your app receives a push notification (this is required for push notification reporting in the Swrve service). If you are using iOS 8 Interactive Notifications, you must also declare the custom action categories to the Swrve SDK (see example below).\n+\n+Your app must also handle the following two situations:\n+\n+* The app is launched from a push notification.\n+* The app receives the push notification while running.\n+\n+```\n+- (BOOL) application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {\n+  // Initialize Swrve with custom events that will trigger the push notification dialog\n+  SwrveConfig* config = [[SwrveConfig alloc] init];\n+  config.pushEnabled = YES;\n+  // Let the SDK know about your iOS8 Interactive Notifications if you have any in your app\n+  config.pushCategories = [NSSet setWithObjects:YOUR_CATEGORY, nil];\n+  [Swrve sharedInstanceWithAppID:your_app_id apiKey:@\"your_api_key\" config:config launchOptions:launchOptions];\n+}\n+```\n+\n+The remainder of the initialization process depends on how you want to request permission from the user to accept push notifications.\n+\n+### Timing the device token (push permission) request\n+\n+When a user first installs a push-enabled app, the latest device token for push notifications is requested, which triggers a permission request to the user to accept push notifications from the app. Swrve has built-in functionality to manage the timing of this request—you can time it to one of the following options:\n+\n+* Request permission at the start of the session. This is the default configuration.\n+* Request permission when one of a list of events is triggered.\n+\n+For more information about uploading device tokens, see [How Do I Upload Push Device Tokens?](http://docs.swrve.com/faqs/push-notifications/upload-push-device-tokens/)\n+\n+Apple only asks for permission to receive push notifications once per app, under normal circumstances. As a result, when you want to test your push notification integration on a QA device, you must reset the iOS push permissions to test the different timing configurations for push permissions outlined above. For more information, see [How Do I Reset iOS Permissions?](http://docs.swrve.com/faqs/push-notifications/reset-ios-permissions-for-push-notifications/)\n+\n+1. Request Push Permission at Start of Session (Default)\n+\n+  By default, the Swrve SDK requests push permission from the user on their first session. This is the simplest option and requires no additional code changes.\n+\n+2. Request Push Permission when Certain Events are Triggered\n+\n+  If you want to request push permission upon the triggering of certain events, add the event names to SwrveConfig.pushNotificationEvents when you initialize the SDK.\n+\n+  ```\n+  // Initialize Swrve with custom events that will trigger the push notification dialog\n+  SwrveConfig* config = [[SwrveConfig alloc] init];\n+  config.pushEnabled = YES;\n+  config.pushNotificationEvents = [[NSSet alloc] initWithArray:@[@\"level_up\", @\"battle_win\"]];\n+  [Swrve sharedInstanceWithAppID:your_app_id apiKey:@\"your_api_key\" config:config launchOptions:launchOptions];\n+  // Initialize Swrve with custom events that will trigger the push notification dialog\n+  ```\n+\n+  If a user never triggers these events, they will never be available for push notifications. So select events that are most likely to be triggered by all but the most transient of users.\n+\n+### Processing custom payload\n+\n+If you want to capture any custom key/value pairs passed with the push notification, capture the notification data in both of your application’s `didFinishLaunchingWithOptions` and `didReceiveRemoteNotification` methods this:\n+\n+```\n+- (BOOL) application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {\n+   // Capture the notification data that opened the app\n+   NSDictionary * remoteNotification = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];\n+   if (remoteNotification) {\n+      // Do something with remoteNotification\n+   }\n+}\n+\n+-(void) application:(UIApplication*)application didReceiveRemoteNotification:(NSDictionary *)userInfo {\n+    // Do something with userInfo\n+}\n+```\n+\n+The method above enables you specify any launch parameters that you want to capture and take action on. For more information, see [Configuring the Launch Screen](http://docs.swrve.com/faqs/push-notifications/configure-launch-screen-from-push-notification/).\n+\n+### Disabling method swizzling\n+\n+The SDK uses method swizzling by default. Use the following code if you want to disable method swizzling:\n+\n+```\n+- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {\n+    SwrveConfig* config = [[SwrveConfig alloc] init];\n+    config.pushEnabled = YES;\n+    config.autoCollectDeviceToken = NO;\n+    [[Swrve sharedInstance] initWithAppID:customerAppId apiKey:customerApiKey config:config launchOptions:launchOptions];\n+}\n+\n+- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {\n+    if ([Swrve sharedInstance].talk != nil) {\n+        [[Swrve sharedInstance].talk setDeviceToken:deviceToken];\n+    }\n+}\n+\n+-(void) application:(UIApplication*)application didReceiveRemoteNotification:(NSDictionary *)userInfo {\n+    [[Swrve sharedInstance].talk pushNotificationReceived:userInfo];\n+}\n+```\n+\n+### Creating and uploading your iOS Certificate\n+\n+To enable your app to send push notifications to iOS devices, you require a push certificate. A push certificate authorizes an app to receive push notifications and authorizes a service to send push notifications to an app. For more information, see [How Do I Manage iOS Push Certificates?](http://docs.swrve.com/faqs/push-notifications/manage-ios-push-certificates-for-push-notifications/)\n+\n+### Provisioning your app\n+\n+Each time your app is published for distribution, you must provision it against the push certificate that has been created for the app. To do this, perform the following steps:\n+\n+1. In Xcode, on the Product menu, click Archive.\n+\n+2. On the Organizer, select Archives and then select the latest archive you want to distribute.\n+\n+3. Select the distribution for ad-hoc deployment.\n+\n+4. On the provisioning screen, select the development push certificate created for this app.\n+\n+\n+\n+Sending Events\n+-\n+\n+### Sending Named Events ###\n+\n+```\n+[[Swrve sharedInstance] event:@\"custom.event_name\"];\n+```\n+\n+Rules for sending events:\n+\n+* Do not send the same named event in differing case.\n+\n+* Use '.'s in your event name to organize their layout in the Swrve dashboard. Each '.' creates a new tree in the UI which groups your events so they are easy to locate.\n+* Do not send more than 1000 unique named events.\n+ * Do not add unique identifiers to event names. For example, Tutorial.Start.ServerID-ABDCEFG\n+ * Do not add timestamps to event names. For example, Tutorial.Start.1454458885\n+* When creating custom events, do not use the `swrve.*` or `Swrve.*` namespace for your own events. This is reserved for Swrve use only. Custom event names beginning with `Swrve.` are restricted and cannot be sent.\n+\n+### Event Payloads ###\n+\n+An event payload can be added and sent with every event. This allows for more detailed reporting around events and funnels. The associated payload should be a dictionary of key/value pairs; it is restricted to string and integer keys and values. There is a maximum cardinality of 500 key-value pairs for this payload per event. This parameter is optional.\n+\n+```\n+[[Swrve sharedInstance] event:@\"custom.event_name\" payload:@{\n+  @\"key1\": @\"value1\",\n+  @\"key2\": @\"value2\"\n+}];\n+```\n+\n+For example, if you want to track when a user starts the tutorial experience it might make sense to send an event `tutorial.start` and add a payload `time` which captures how long the user spent starting the tutorial.\n+\n+```\n+[[Swrve sharedInstance] event:@\"tutorial.start\" payload:@{\n+  @\"time\": @\"100\"\n+}];\n+```\n+\n+### Send User Properties ###\n+\n+Assign user properties to send the status of the user. For example create a custom user property called `premium`, and then target non-premium users and premium users in the dashboard..","path":"README.md","position":368,"original_position":368,"commit_id":"cf7300b331896c865768d6f020dab49162eb9046","original_commit_id":"cf7300b331896c865768d6f020dab49162eb9046","user":{"login":"cathalcooney","id":12496253,"avatar_url":"https://avatars.githubusercontent.com/u/12496253?v=3","gravatar_id":"","url":"https://api.github.com/users/cathalcooney","html_url":"https://github.com/cathalcooney","followers_url":"https://api.github.com/users/cathalcooney/followers","following_url":"https://api.github.com/users/cathalcooney/following{/other_user}","gists_url":"https://api.github.com/users/cathalcooney/gists{/gist_id}","starred_url":"https://api.github.com/users/cathalcooney/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cathalcooney/subscriptions","organizations_url":"https://api.github.com/users/cathalcooney/orgs","repos_url":"https://api.github.com/users/cathalcooney/repos","events_url":"https://api.github.com/users/cathalcooney/events{/privacy}","received_events_url":"https://api.github.com/users/cathalcooney/received_events","type":"User","site_admin":false},"body":"maybe mention here that user properties are based on the current status of the user, and anything sent will overwrite any previous values","created_at":"2016-02-09T23:05:32Z","updated_at":"2016-02-09T23:05:32Z","html_url":"https://github.com/Swrve/swrve-ios-sdk/pull/89#discussion_r52389741","pull_request_url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/pulls/89","_links":{"self":{"href":"https://api.github.com/repos/Swrve/swrve-ios-sdk/pulls/comments/52389741"},"html":{"href":"https://github.com/Swrve/swrve-ios-sdk/pull/89#discussion_r52389741"},"pull_request":{"href":"https://api.github.com/repos/Swrve/swrve-ios-sdk/pulls/89"}}},"pull_request":{"url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/pulls/89","id":58819459,"html_url":"https://github.com/Swrve/swrve-ios-sdk/pull/89","diff_url":"https://github.com/Swrve/swrve-ios-sdk/pull/89.diff","patch_url":"https://github.com/Swrve/swrve-ios-sdk/pull/89.patch","issue_url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/issues/89","number":89,"state":"open","locked":false,"title":"Add SDK docs from docs.swrve.com","user":{"login":"johnkearney","id":458324,"avatar_url":"https://avatars.githubusercontent.com/u/458324?v=3","gravatar_id":"","url":"https://api.github.com/users/johnkearney","html_url":"https://github.com/johnkearney","followers_url":"https://api.github.com/users/johnkearney/followers","following_url":"https://api.github.com/users/johnkearney/following{/other_user}","gists_url":"https://api.github.com/users/johnkearney/gists{/gist_id}","starred_url":"https://api.github.com/users/johnkearney/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/johnkearney/subscriptions","organizations_url":"https://api.github.com/users/johnkearney/orgs","repos_url":"https://api.github.com/users/johnkearney/repos","events_url":"https://api.github.com/users/johnkearney/events{/privacy}","received_events_url":"https://api.github.com/users/johnkearney/received_events","type":"User","site_admin":false},"body":"@Sergio-Mira @jason-turbin @cathalcooney @aoifec\r\n\r\nComments on iOS docs move?","created_at":"2016-02-09T22:31:35Z","updated_at":"2016-02-09T23:05:32Z","closed_at":null,"merged_at":null,"merge_commit_sha":"d6a1f3f10e6ca2b1efa890cd6c841510b6608653","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/pulls/89/commits","review_comments_url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/pulls/89/comments","review_comment_url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/pulls/comments{/number}","comments_url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/issues/89/comments","statuses_url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/statuses/cf7300b331896c865768d6f020dab49162eb9046","head":{"label":"Swrve:docs","ref":"docs","sha":"cf7300b331896c865768d6f020dab49162eb9046","user":{"login":"Swrve","id":445249,"avatar_url":"https://avatars.githubusercontent.com/u/445249?v=3","gravatar_id":"","url":"https://api.github.com/users/Swrve","html_url":"https://github.com/Swrve","followers_url":"https://api.github.com/users/Swrve/followers","following_url":"https://api.github.com/users/Swrve/following{/other_user}","gists_url":"https://api.github.com/users/Swrve/gists{/gist_id}","starred_url":"https://api.github.com/users/Swrve/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Swrve/subscriptions","organizations_url":"https://api.github.com/users/Swrve/orgs","repos_url":"https://api.github.com/users/Swrve/repos","events_url":"https://api.github.com/users/Swrve/events{/privacy}","received_events_url":"https://api.github.com/users/Swrve/received_events","type":"Organization","site_admin":false},"repo":{"id":23786728,"name":"swrve-ios-sdk","full_name":"Swrve/swrve-ios-sdk","owner":{"login":"Swrve","id":445249,"avatar_url":"https://avatars.githubusercontent.com/u/445249?v=3","gravatar_id":"","url":"https://api.github.com/users/Swrve","html_url":"https://github.com/Swrve","followers_url":"https://api.github.com/users/Swrve/followers","following_url":"https://api.github.com/users/Swrve/following{/other_user}","gists_url":"https://api.github.com/users/Swrve/gists{/gist_id}","starred_url":"https://api.github.com/users/Swrve/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Swrve/subscriptions","organizations_url":"https://api.github.com/users/Swrve/orgs","repos_url":"https://api.github.com/users/Swrve/repos","events_url":"https://api.github.com/users/Swrve/events{/privacy}","received_events_url":"https://api.github.com/users/Swrve/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/Swrve/swrve-ios-sdk","description":"Swrve iOS SDK","fork":false,"url":"https://api.github.com/repos/Swrve/swrve-ios-sdk","forks_url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/forks","keys_url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/teams","hooks_url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/hooks","issue_events_url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/issues/events{/number}","events_url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/events","assignees_url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/assignees{/user}","branches_url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/branches{/branch}","tags_url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/tags","blobs_url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/git/refs{/sha}","trees_url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/statuses/{sha}","languages_url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/languages","stargazers_url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/stargazers","contributors_url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/contributors","subscribers_url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/subscribers","subscription_url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/subscription","commits_url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/commits{/sha}","git_commits_url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/git/commits{/sha}","comments_url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/comments{/number}","issue_comment_url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/issues/comments{/number}","contents_url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/contents/{+path}","compare_url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/merges","archive_url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/downloads","issues_url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/issues{/number}","pulls_url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/pulls{/number}","milestones_url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/milestones{/number}","notifications_url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/labels{/name}","releases_url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/releases{/id}","deployments_url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/deployments","created_at":"2014-09-08T10:24:36Z","updated_at":"2015-12-24T17:12:53Z","pushed_at":"2016-02-09T22:32:33Z","git_url":"git://github.com/Swrve/swrve-ios-sdk.git","ssh_url":"git@github.com:Swrve/swrve-ios-sdk.git","clone_url":"https://github.com/Swrve/swrve-ios-sdk.git","svn_url":"https://github.com/Swrve/swrve-ios-sdk","homepage":"http://www.swrve.com","size":7258,"stargazers_count":5,"watchers_count":5,"language":"Objective-C","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":12,"mirror_url":null,"open_issues_count":3,"forks":12,"open_issues":3,"watchers":5,"default_branch":"release-4_1_1"}},"base":{"label":"Swrve:release-4_2","ref":"release-4_2","sha":"53ec4a34753a781b6e4605bdca490368a489503d","user":{"login":"Swrve","id":445249,"avatar_url":"https://avatars.githubusercontent.com/u/445249?v=3","gravatar_id":"","url":"https://api.github.com/users/Swrve","html_url":"https://github.com/Swrve","followers_url":"https://api.github.com/users/Swrve/followers","following_url":"https://api.github.com/users/Swrve/following{/other_user}","gists_url":"https://api.github.com/users/Swrve/gists{/gist_id}","starred_url":"https://api.github.com/users/Swrve/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Swrve/subscriptions","organizations_url":"https://api.github.com/users/Swrve/orgs","repos_url":"https://api.github.com/users/Swrve/repos","events_url":"https://api.github.com/users/Swrve/events{/privacy}","received_events_url":"https://api.github.com/users/Swrve/received_events","type":"Organization","site_admin":false},"repo":{"id":23786728,"name":"swrve-ios-sdk","full_name":"Swrve/swrve-ios-sdk","owner":{"login":"Swrve","id":445249,"avatar_url":"https://avatars.githubusercontent.com/u/445249?v=3","gravatar_id":"","url":"https://api.github.com/users/Swrve","html_url":"https://github.com/Swrve","followers_url":"https://api.github.com/users/Swrve/followers","following_url":"https://api.github.com/users/Swrve/following{/other_user}","gists_url":"https://api.github.com/users/Swrve/gists{/gist_id}","starred_url":"https://api.github.com/users/Swrve/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Swrve/subscriptions","organizations_url":"https://api.github.com/users/Swrve/orgs","repos_url":"https://api.github.com/users/Swrve/repos","events_url":"https://api.github.com/users/Swrve/events{/privacy}","received_events_url":"https://api.github.com/users/Swrve/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/Swrve/swrve-ios-sdk","description":"Swrve iOS SDK","fork":false,"url":"https://api.github.com/repos/Swrve/swrve-ios-sdk","forks_url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/forks","keys_url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/teams","hooks_url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/hooks","issue_events_url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/issues/events{/number}","events_url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/events","assignees_url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/assignees{/user}","branches_url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/branches{/branch}","tags_url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/tags","blobs_url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/git/refs{/sha}","trees_url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/statuses/{sha}","languages_url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/languages","stargazers_url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/stargazers","contributors_url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/contributors","subscribers_url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/subscribers","subscription_url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/subscription","commits_url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/commits{/sha}","git_commits_url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/git/commits{/sha}","comments_url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/comments{/number}","issue_comment_url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/issues/comments{/number}","contents_url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/contents/{+path}","compare_url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/merges","archive_url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/downloads","issues_url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/issues{/number}","pulls_url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/pulls{/number}","milestones_url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/milestones{/number}","notifications_url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/labels{/name}","releases_url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/releases{/id}","deployments_url":"https://api.github.com/repos/Swrve/swrve-ios-sdk/deployments","created_at":"2014-09-08T10:24:36Z","updated_at":"2015-12-24T17:12:53Z","pushed_at":"2016-02-09T22:32:33Z","git_url":"git://github.com/Swrve/swrve-ios-sdk.git","ssh_url":"git@github.com:Swrve/swrve-ios-sdk.git","clone_url":"https://github.com/Swrve/swrve-ios-sdk.git","svn_url":"https://github.com/Swrve/swrve-ios-sdk","homepage":"http://www.swrve.com","size":7258,"stargazers_count":5,"watchers_count":5,"language":"Objective-C","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":12,"mirror_url":null,"open_issues_count":3,"forks":12,"open_issues":3,"watchers":5,"default_branch":"release-4_1_1"}},"_links":{"self":{"href":"https://api.github.com/repos/Swrve/swrve-ios-sdk/pulls/89"},"html":{"href":"https://github.com/Swrve/swrve-ios-sdk/pull/89"},"issue":{"href":"https://api.github.com/repos/Swrve/swrve-ios-sdk/issues/89"},"comments":{"href":"https://api.github.com/repos/Swrve/swrve-ios-sdk/issues/89/comments"},"review_comments":{"href":"https://api.github.com/repos/Swrve/swrve-ios-sdk/pulls/89/comments"},"review_comment":{"href":"https://api.github.com/repos/Swrve/swrve-ios-sdk/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/Swrve/swrve-ios-sdk/pulls/89/commits"},"statuses":{"href":"https://api.github.com/repos/Swrve/swrve-ios-sdk/statuses/cf7300b331896c865768d6f020dab49162eb9046"}}}}