# Installation
Requirements
- iOS 13.0 or later
- Swift 5.5 or later
- Xcode 13 or later
- A Firebase project (opens new window) for your app
# Step 1 - Add the SDK to your project
# Swift Package Manager
SDK has no bundled dependencies - you need to add three packages manually. In Xcode, go to File → Add Package Dependencies and add each of the following:
| Package | URL | Version |
|---|---|---|
| UserComSDK | https://github.com/UserEngage/iOS-SDK | 0.7.12 |
| Firebase iOS SDK | https://github.com/firebase/firebase-ios-sdk | 11.0.0 |
| Gifu | https://github.com/kaishin/Gifu | 3.3.1 |
When adding Firebase, select only the FirebaseMessaging product - you don't need the full Firebase suite.
Add all three packages to your app target. Gifu is required for GIF support in in-app messages.
# CocoaPods (legacy)
WARNING
CocoaPods support is being phased out. For new projects, use Swift Package Manager above.
If you're maintaining an existing CocoaPods integration, add UserSDK to your Podfile:
platform :ios, '13.0'
use_frameworks!
target 'YourApp' do
pod 'UserSDK', :git => 'https://github.com/UserEngage/iOS-SDK'
end
# Required only if you want push notifications with images
target 'YourApp-NotificationService' do
pod 'UserSDK', :git => 'https://github.com/UserEngage/iOS-SDK'
end
Then run pod install and open the generated .xcworkspace file.
# Step 2 - Add your Firebase configuration
SDK uses Firebase Cloud Messaging internally to deliver push notifications. You don't need to add Firebase as a separate dependency - the SDK bundles it. But you do need to provide your app's GoogleService-Info.plist.
- Open Firebase Console (opens new window) and select your project
- Go to Project settings → Your apps
- Download
GoogleService-Info.plistfor your iOS app - Drag it into the root of your Xcode project, making sure it's added to your app target
WARNING
If GoogleService-Info.plist is missing or added to the wrong target, push notifications will not work.
# Step 3 - Initialize the SDK
In your AppDelegate, import the SDK and create the instance inside application(_:didFinishLaunchingWithOptions:).
Your API key and app domain are available in the Positive User dashboard under Settings → App Settings → Advanced → Mobile keys. See Setup & Configuration for details.
import UserSDK
@main
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
UserSDK.default = UserSDK(
application: application,
apiKey: "YOUR_API_KEY",
baseURL: "your-domain.user.com",
shouldTrackActivities: false
)
return true
}
}
Replace YOUR_API_KEY with your 64-character Mobile SDK key and your-domain with your Positive User subdomain.
# Step 4 - Handle background notifications
Add the following to your AppDelegate to track notification taps when the app launches from a killed or backgrounded state:
func application(
_ application: UIApplication,
didReceiveRemoteNotification userInfo: [AnyHashable: Any],
fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void
) {
UserSDK.default?.handleNotification(userInfo: userInfo)
completionHandler(.newData)
}
SDK only processes notifications tagged by Positive User and ignores everything else, so this won't interfere with your existing notification handling.
# What's next
- Contact Data - identify your contacts and send their data
- Push notifications - enable push notifications and handle images
- In-app notifications - customize in-app messages
- Sending events - track contact actions