Get started
You can install 1Flow Library by using CocoaPods. 1Flow currently supports iOS 11.0 and above.
1. Install 1Flow
Install via CocoaPods
1Flow is available through CocoaPods.
- If this is your first time using CocoaPods, Install CocoaPods using
gem install cocoapods
. Otherwise, continue to Step 3.
- Run
pod setup
to create a local CocoaPods spec mirror.
- Create a Podfile in your Xcode project directory by running
pod init
in your terminal, edit the Podfile generated, and add the following line:pod '1Flow'
.
- Run
pod install
in your Xcode project directory. CocoaPods should download and install the 1Flow library, and create a new Xcode workspace. Open up this workspace in Xcode or typeopen *.xcworkspace
in your terminal.
Install via Swift Package Manager
1Flow is also available through Swift Package Manager
- In Xcode, select File > Swift Packages > Add Package Dependency.
- Follow the prompt and add https://github.com/1Flow-Inc/1flow-ios-sdk github URL.
2. Initialize 1Flow
Import 1Flow into
AppDelegate.swift
, and initialize 1Flow within application:didFinishLaunchingWithOptions:
swiftimport _1Flow; class AppDelegate: UIResponder, UIApplicationDelegate { func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { // Override point for customization after application launch. OneFlow.configure("your-project-api-key")
Note: you need to replace
'your-project-api-key'
with your actual project API key. Click here and navigate to Project Settings → API keys section.Optional:
- Font Customisation: If you want to configure 1Flow UI with non-system font then use below code to configure custom font for survey UI
swiftOneFlow.useFont(fontFamily: "Courier New")
fontFamily
is optional. you can pass nil
if you want to restore it to default system font.- Setup Observer: You can setup observer to listen for OneFlow setup event.
use
OneFlow.observer = self
before configuration call.
Now you can extend you class as below
swiftextension AppDelegate: OneFlowObserver { func oneFlowSetupDidFail() { } func oneFlowSetupDidFinish() { } }
There is one more property
isSetupCompleted
which can be use to determine if OneFlow finished setup or not.
You can use check this like OneFlow.isSetupCompleted
and proceed further.- Disable logs: You can disable the logs printed by OneFlow in your console.
use
OneFlow.shouldPrintLog(false)
to keep your console clean from OneFlow logs.
3. Log user (optional)
If your app or website does not need the user to sign in, then you can skip to step 4 - Log events.
If your app requires the user to register an account and sign in, you can call a method to bind the user with 1Flow. This way, you'll be able to connect the data with your internal records.
Whenever the user has signed in, you can call
OneFlow.logUser()
to pass the user identifier, along with any other parameters you'd like to store with us (such as email, full name, etc.), to 1Flow. swift// User as signed in.. // First you can create a dictionary that contains any information you want to pass to us let userDetails = ["firstName": "steve", "lastName": "jobs", "number": 123456] as [String : Any] // Call logUser method to bind user with us OneFlow.logUser("uniq_id", userDetails: userDetails)
The userDetails dictionary is optional, so you can just pass in
nil
if no additional info to send.4. Track events
Events are central to 1Flow. An Event is a marker in the code to track a key moment in the user flow - like when the user just created an account, completed some action, made a purchase or rejected an offer. We recommend you track at least 4-5 events to better understand the user journey.
swiftlet params = ["param1": "value1", "param2": "value2"] OneFlow.recordEventName("event_name", parameters: params)
Here, parameters is optional. pass
nil
if you don't want any parameters to send with the event. Advanced tip: Events can be used to trigger surveys, and if you pass in relevant info about the user action (such as the id of the content they just consumed, name of the offer just shown to them, etc.), then you can enrich the survey response with valuable context using our webhooks.
Notes: Parameters in Log User and Track Events will support the Dictionary of these Data Types: String, Int, Double, Float, URL, and Date.
If you are converting Date to String, We recommend using a timestamp or Date object. It will be more helpful to set up trigger rules for this parameter across all platforms on 1Flow Dashboard.
Parameters other than these types will be skipped.
5. Check for success
Build and run your application. Go to 1Flow dashboard - if the implementation is successful, then this banner should disappear when we receive data from your device:
Show your first survey
Now that you've successfully installed 1Flow into your app, it's time to create your first survey.
If you've already created a survey and published it (survey shows up in the "In Progress" section of the dashboard), run the app and trigger the event to happen, you should see the survey show up when the event is fired.