Here is how to integrate with Sift iOS SDK into your Objective-C iOS app project (for Swift projects the steps are pretty similar).
Add this to your
pod 'Sift' (this uses the latest
Add this to your
github "SiftScience/sift-ios" (this
uses the latest version).
Through Swift Package Manager:
Inside the root project folder, create Swift package with type executable:
swift package init --type executable .
This will create initial files and folders including hidden
Add dependencies in Package.swift:
// swift-tools-version:5.1 // The swift-tools-version declares the minimum version of Swift required to build this package. import PackageDescription let package = Package( name: "exampleApp", dependencies: [ // Dependencies declare other packages that this package depends on. // .package(url: /* package url */, from: "1.0.0"), .package(url: "https://github.com/SiftScience/sift-ios.git", from: "2.1.0") ], targets: [ // Targets are the basic building blocks of a package. A target can define a module or a test suite. // Targets can depend on other targets in this package, and on products in packages which this package depends on. .target( name: "exampleApp", dependencies: ["sift-ios"]), // Don’t forget to add sift-ios in target dependencies. .testTarget( name: "exampleAppTests", dependencies: ["exampleApp"]), ] )
Package.swift file, Xcode will build the package.swift or else
swift package generate-xcodeproj
(Xcode project is generated and excluded from git by default).
You can also use your xcconfig file:
swift package generate-xcodeproj --xcconfig-overrides Config.xcconfig
Update for Xcode 11
Add this to your application's
<key>LSApplicationQueriesSchemes</key> <array> <string>cydia</string> </array>
We detect jailbroken devices with various signals and one of them is whether Cydia is installed. Since iOS 9, you have to whitelist URL schemes you would like to check, and this just adds Cydia to the list.
The SDK works in the background and so you have to initialize it when
your app starts. It usually makes most sense to initialize the SDK in
Here is what you would do within
application:didFinishLaunchingWithOptions: instance method
if it doesn't exist, and insert this code snippet (replacing the placeholder
strings with your Sift account credentials):
(Recommended) If your app uses motion sensors (accelerometer, gyro, or magnetometer), and you want to send motion data to Sift, add this line:
This will enable the SDK to occasionally collect motion data in the background.
If your app uses user location data but you do not want send it to Sift, add this line:
Sift needs the user ID to track the user using this app. Once the user ID is available (for example, after user has logged in), please set the user ID:
[[Sift sharedInstance] setUserId:@"USER_ID"];
If a user logs out, unset the user ID by invoking:
[[Sift sharedInstance] unsetUserId];
The Sift iOS SDK is distributed under the MIT license. See the file LICENSE for details.
The Sift iOS SDK includes Charcoal Design's GZIP library, distributed under the permissive zlib license. See the files Sift/Vendor/NSData+GZIP.h and Sift/Vendor/NSData+GZIP.m for details.