This repository contains the framework and instructions for the Forethought iOS SDK.
A valid API key is needed in order to use the Forethought Solve SDK. In additon to the documentation below, sample apps have been written in Objective-C & Swift, as well as a SwiftUI implementation
In Xcode, File > Add Packages.
Enter the Forethought iOS GitHub repo URL (https://github.com/Forethought-Technologies/solve-ios
)
Tap Add Package. Follow the remaining prompts and Xcode will automatically download the framework
Forethought is also available through CocoaPods.
In the Podfile
, add the following line:
pod 'Forethought'
Run the following command:
$ pod install
Make sure to use the .xcworkspace
file and NOT the .xcodeproj
from now on.
AppDelegate.swift
file, replace __YOUR_KEY_HERE__
with a valid Forethought API key:
ForethoughtSDK.start(apiKey: "__YOUR_KEY_HERE__")
import 'Forethought'
ForethoughtSDK.show()
Returns a SwiftUI view
ForethoughtSDK.forethoughtView
Attach the Forethought SDK directly onto a navigation stack:
@IBAction func contactSupportTapped() {
ForethoughtSDK.show(fromNavigationController: self.navigationController)
}
Pass in Workflow Context Variables that have been defined via the Forethought Dashboard. (Note: you do not need to prefix with data-ft
)
ForethoughtSDK.dataParameters = ["language": "EN", "user-email": "[email protected]", "workflow-context-variable": "value"]
Current configuration parameters are all the config-ft
prefixed parameters under Additional Attributes. (Note: you do not need to prefix with config-ft
)
ForethoughtSDK.configParameters = ["theme-color": "#7b33fb"]
Forethought delegate is used to respond to events during the widget conversation that may need additional implementation.
All methods in the ForethoughtDelegate
are optional as well.
@objc public protocol ForethoughtDelegate: AnyObject {
// Customer requested a handoff. Implement your own handoff from Forethought to another SDK (e.g. Zendesk or Salesforce)
@objc optional func startChatRequested(handoffData: ForethoughtHandoffData)
// Customer clicked the close widget button. Make sure to call ForethoughtSDK.hide if you choose to implement this
@objc optional func widgetClosed()
// Widget experienced an error causing it not be able to render
@objc optional func widgetError(errorData: ForethoughtErrorData)
}
To setup the delegate
ForethoughtSDK.delegate = self
class ViewController: UIViewController, ForethoughtDelegate {
func startChatRequested(handoffData: ForethoughtHandoffData) {
print("Chat Requested: \(handoffData)")
// close forethought widget
ForethoughtSDK.hide(animated: false) {
// start a Kustomer chat
Kustomer.startNewConversation(initialMessage: KUSInitialMessage(body: handoffData.question, direction: .user))
ForethoughtSDK.sendHandoffResponse(success: true)
}
// if handoff was unsuccessful
ForethoughtSDK.show()
ForethoughtSDK.sendHandoffResponse(success: false)
}
func widgetClosed() {
// add any additional logic here
ForethoughtSDK.hide(animated: true) {
print("forethought - widgetClosed")
}
}
func widgetError(errorData: ForethoughtErrorData) {
// add any additional logic here
ForethoughtSDK.hide(animated: true) {
print("forethought - \(errorData.error)")
}
}
⛔️ Plugins are deprecated in starting in version 2.0.0 ⛔️
Documentation has been provided as a .doccarchive to enable full documentation directly inside Xcode. To use, simply double-click on Forethought.doccarchive, and Xcode will handle the rest.
link |
Stars: 3 |
Last commit: 5 weeks ago |
Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API | Analytics