Empyr 0.9.3

Empyr 0.9.3

Jarrod CuzensJason Bausewein 维护。



Empyr 0.9.3

  • 作者:Empyr
  • Empyr

Empyr iOS Swift 库

CI Status Version License Platform

欢迎使用 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需要以下条件

  • 在您的Podfile中添加"Empyr/PPO"子模块。请参阅安装
  • 向您的应用程序添加适当的权限。请参阅权限
  • 初始化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 文件。