Empyr iOS Swift 库
欢迎使用 Empyr 的 iOS 库。这个库旨在帮助合作伙伴简化将他们的产品集成到 Empyr 出价平台中的工作。
兼容性
由于 Empyr iOS 库主要用 Swift 开发,因此对于以 Swift 开发为主的发布者来说,它提供了一组功能更全和更便于扩展的功能。但主要的 API 功能也很容易被 Objective-C 和 Swift 双方使用。
特色功能
Empyr iOS 库目前设计用来促进我们平台两个不同组件的实现:
- 追踪器 – 追踪器组件允许发布者轻松地将用户浏览各种出价的信息发送到 Empyr。此外,此组件还为 Empyr 提供了进行用户分段的必要数据,这样我们就可以向这些用户分发更多内容。
- PPO – PPO(项目完美出价)组件允许发布者在应用处于后台时,也能为其用户无缝集成附近的交易推荐。
注意
请注意,尽管上述两个功能都可用,但合作伙伴并不必须使用 这两个 功能。
安装
我们推荐使用 CocoaPods 将 Empyr SDK 集成到您的项目中。
# Includes the core API
pod 'Empyr'
# Optionally include the additional functionality desired
# Please refer to the additional documentation about supporting these
# individual features below.
pod 'Empyr/PPO'
pod 'Empyr/Tracker'
Cocoapods 1.5 版本开始,使用 Swift 框架时已不再需要设置 'use_frameworks!',因为它们现在可以被设置为静态 OR 动态。
集成
要开始使用,应在您的 AppDelegate 中初始化 EmpyrAPIClient。
Swift
import Empyr
...
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Initialize Empyr API
let empyrAPI = EmpyrAPIClient.initialize(clientId: "23d5f04e-424b-4751-b862-94cae1787c74")
// Optional: Initialize Empyr PPO -- This MUST be done at application start.
// If you are already using the UNNotificationCenter delegate then you
// should initialize that BEFORE initializing EmpyrPPO.
EmpyrPPO.initialize(api: empyrAPI, launchOptions: launchOptions, askPermissions: true, delegate: self)
return true
}
Objective-C
@import Empyr;
...
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Initialize the Empyr API
EmpyrAPIClient * empyrAPI = [EmpyrAPIClient initializeWithClientId:@"23d5f04e-424b-4751-b862-94cae1787c74"];
// Optional: Initialize Empyr PPO -- This MUST be done at application start.
// If you are already using the UNNotificationCenter delegate then you
// should initialize that BEFORE initializing EmpyrPPO.
[EmpyrPPO initializeWithApi:empyrAPI launchOptions: launchOptions askPermissions:false delegate:self];
}
识别您的用户
如果用户已注册 Empyr 提供的产品,则应使用 Empyr SDK 库识别用户。这可以通过调用 "identify" 函数实现。
Swift
EmpyrAPIClient.mainInstance().identify(userToken: "[email protected]")
Objective-C
[[EmpyrAPIClient mainInstance] identifyWithUserToken: @"[email protected]"];
跟踪器
警告 -- 跟踪器组件使用 IDFA。您必须将 AdSupport 框架添加到您的项目中。提交到 App Store 时,您应向苹果披露 IDFA 跟踪的使用,否则可能会被拒绝。
当一个用户正在查看产品时,EmpyrAPI 应该收到通知。offerId 会是该用户正在查看的产品 ID,而不是 业务 ID,而是实际的 offer id。对于任何给定业务,如果有多个产品,则这将导致调用 track 函数的多次。此外,识别印象类型(例如,如果是“个人资料”查看或“搜索”查看)也同样重要。
Swift
EmpyrAPIClient.mainInstance().track(offerId:1111, tracker: Tracker.PROFILE_VIEW)
Objective-C
[[EmpyrAPIClient mainInstance] trackWithOfferId:1111 tracker:TrackerPROFILE_VIEW];
PPO
PPP组件将监控用户相对于Empyr平台上的商家的位置。即使您的应用处于后台,这也会发生。当检测到用户处于附近商家的范围内时,将确定是否需要通知用户关于优惠的信息。如果是的话,用户将看到一条提示他们访问该位置的推送通知。如果用户打开推送通知,那么在初始化PPP时提交的委托将执行回调,允许宿主应用程序显示任何相关的商家信息/配置文件。
启用PPP需要以下条件
权限
为了让Empyr PPO能够监控用户的位置,有必要将以下密钥添加到您的PLIST中。
- NSLocationAlwaysUsageDescription,
- NSLocationAlwaysAndWhenInUseUsageDescription,
- NSLocationWhenInUseUsageDescription
委托
如果您想处理来自Empyr PPO模块的推送通知的开封,则需要为这些活动提供一个委托。以下是一个Empyr PPO委托安装的示例。
Swift
class AppDelegate: UIResponder, UIApplicationDelegate, EmpyrNearbyBusinessOfferDelegate {
func nearbyOfferNotification(business: RestBusiness) {
print( "Business notification \(business.name)" )
}
}
Objective-C
... (header)
@protocol EmpyrNearbyBusinessOfferDelegate;
@interface AppDelegate : UIResponder <UIApplicationDelegate, EmpyrNearbyBusinessOfferDelegate>
... (implementation)
#pragma mark - Empyr
- (void)nearbyOfferNotificationWithBusiness:(EMPBusiness *)business {
NSLog( @"Business notification %@", business.name );
}
示例
要运行示例项目,首先克隆存储库,然后在示例目录中运行 pod install
。
作者
Empyr 开发团队,[email protected]
许可协议
Empyr 在 MIT 许可协议下可用。更多信息请参阅 LICENSE 文件。