Tamoco 1.6.2

Tamoco 1.6.2

测试已测试
语言语言 Obj-CObjective C
许可证 Apache 2
发布上次发布2019年10月

Rune BromerPhil MartinBen Colenso维护。



Tamoco 1.6.2

  • 作者:
  • Daniel Angel

有关SDK及其功能以及安装细节的完整详情,请继续阅读以下内容。

要求

本集成指南是基于Xcode版本8.3.3和Swift 3构建的。Tamoco iOS客户端SDK支持iOS 8及以上。

安装

要使用CocoaPods安装SDK,请在Podfile中为目标添加以下内容

  pod 'Tamoco', '~> 1.1'

这将把SDK作为新框架安装到你的Pods目录中。请注意,目前包含了一个可以在iOS设备和Xcode模拟器上运行的二进制框架。

项目配置

你的应用程序项目需要以下配置设置才能与Tamoco SDK正确配合。

EMBEDDED CONTENT

如果你是使用Obj C项目,那么你需要进入你的目标构建设置,并在“构建选项”下将“嵌入式内容包含Swift代码”设置为YES

禁用BITCODE

Bitcode是一个可选的XCode编译设置,它根据特定设备优化你的应用程序。

Tamoco SDK目前不支持Bitcode。因此,需要在你的应用程序中禁用Bitcode支持。要禁用Bitcode支持,转到项目 > 构建设置 > 构建选项,将“启用Bitcode”设置为‘否’

位置权限描述

作为一个接近度SDK,Tamoco客户端需要始终开启位置权限。从iOS 8开始,你必须在你的应用程序的info.plist文件中包含一个NSLocationAlwaysUsageDescription字符串条目。在此处输入的字符串将在应用程序请求位置权限时向用户呈现的权限对话框中显示。此说明应提供为何应用程序需要位置信息的清晰解释和实际价值。

后台模式

你需要启用后台模式进行位置更新,否则你会收到类似以下的运行时错误

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Invalid parameter not satisfying: !stayUp || CLClientIsBackgroundable(internal->fClient)'

转到你的目标,选择“功能”然后启用“后台模式”并勾选

  • 位置更新
  • 使用蓝牙LE配件
  • 后台获取

客户端整合

更新你的应用程序委托

配置并初始化Tamoco客户端SDK到你的应用程序的第一步是修改你的主AppDelegate文件。在初始化Tamoco客户端时,你需要提供正确的API密钥、API密钥和自定义ID。要随时更改这些参数,只需重新实例化Tamoco客户端。

在你的AppDelegate文件中,开始包括Tamoco模块

import Tamoco

或者在Objective C的情况下

#import <Tamoco/Tamoco-Swift.h>

然后,增加以下额外的Tamoco属性

var tamoco: Tamoco!

接下来,在方法中实现SDK初始化

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool`

	//Set the Logging level
	TamocoLogger.level = .error
	//Set the API Keys
	tamoco = Tamoco(apiKey: "TEST-API-KEY", apiSecret: "YOUR-SECRET")
	// Custom ID is an optional setting and could be set in the following way:
	tamoco.customId = "CUSTOM_ID"
    // listenOnly = false - Set to true if you do not want notifications and pop-up messages in your app. Default's to false
    tamoco.listenOnly = false
    // By default Tamoco will listen for location updates in the background - set this to false if you do not desire this feature
    tamaco.backgroundLocationUpdates = true
    // By default Tamoco listens for location within an accuracy of 100 metres, you can set this higher or lower in accordance with the CLLocation CLLocationAccuracy definition
    tamoco.regionMonitoringAccuracy = 100
    //Optionally set an object as the Tamoco delegate in order to recieve custom payloads on event triggers set up via the Tamoco web portal
    tamoco.delegate = <delegateObject: TamocoDelegate>

TamocoDelegate定义为以下协议

public protocol TamocoDelegate: class {
    func didReceiveJSON(payload: [String: Any])
}

自定义ID

自定义ID是一个可选设置,与发送额外的跟踪属性相关,例如应用程序用户ID。

调试信息

对于调试输出消息,需要设置TamocoLogger.level级别。对于所有可能的选项,请检查LogLevel枚举。

配置Tamoco客户端对象

在初始化Tamoco对象之前,您可以自定义配置多个客户端设置。这些设置允许您平衡客户端相对于近距离响应性和电池消耗的性能。

这些设置通过包含在主束中的TamocoConfig.plist文件进行配置。请注意,如果条目未定义,则将应用默认设置。

出于测试和开发目的,通常使用激进值以看到即时结果。但是,默认配置值是优化电池性能的推荐生产设置。

以下设置可供配置

ENABLE_GEOFENCE_RANGING
这个可选的布尔属性确定是否启用(YES)或禁用(NO)Tamoco地理围栏测距功能。

ENABLE_BEACON_RANGING
这个可选的布尔属性确定是否启用(YES)或禁用(NO)Tamoco信标测距功能。

ENABLE_WIFI_RANGING
这个可选的布尔属性确定是否启用(YES)或禁用(NO)Tamoco WIFI测距功能。

TRIGGERS_UPDATE_TIME
需要间隔的最短时间。

REGION_MONITORING_ACCURACY
这是为地理围栏和信标测距设置的 CLLocationManager 对象的 desiredAccuracy。

WIFI_MONITORING_ACCURACY
这是为 WiFi 测距设置的 CLLocationManager 对象的 desiredAccuracy。对于 WiFi 测距,使用 didUpdateLocations 检查当前 WiFi。

DELEGATE_NOTIFICATIONS
这个可选属性确定是否在指定的 closure 上触发 Tamoco 触发动作。

DELEGATE_LOCAL_NOTIFICATIONS
这个可选属性确定是否在触发动作时由 Tamoco 发送本地通知。

LOCAL_NOTIFICATION_SOUND
用于本地通知的声音。在调用 UIApplication.sharedApplication().scheduleLocalNotification(...) 之前,此值设置为 UILocalNotification 对象的 soundName 属性。

ENABLE_DEBUG_LOCAL_NOTIFICATIONS
这用于调试目的。每次任何触发动作发生时,都会推送本地通知。

CHECK FOR COMMUNICATION ERRORS

Tamoco公开了关闭 onCommunicationError: ((error: NSError) -> Void)?,如果发生任何通信错误,则调用此闭包。

近距离通知

当触发近距离事件时,Tamoco iOS 客户端 SDK 将自动创建一个通知。Tamoco iOS 客户端 SDK 支持两种用于分发这些近距离通知的方法。您可以通过配置 DELEGATE_NOTIFICATIONS 和 DELEGATE_LOCAL_NOTIFICATIONS 属性来配置 Tamoco 客户端使用哪种方法。

ACTION CLOSURES

第一种方法是触发近距离 closure。您可以设置 onCustomBeaconAction、onCustomFenceAction、onCustomWIFIAction closures,这取决于您想要监听哪些动作。您可以通过在配置中设置 DELEGATE_NOTIFICATIONS 属性来启用/禁用触发这些 closures(默认为 YES)。

LOCAL NOTIFICATION DISPATCH

您还可以配置 Tamoco iOS SDK 客户端以分发标准 iOS 本地通知。您可以通过配置中的 DELEGATE_LOCAL_NOTIFICATIONS 属性来管理发送此通知。要使用此方法,应将 DELEGATE_LOCAL_NOTIFICATIONS 设置为 YES 并在应用中调用 Tamoco 对象的 didReceiveLocalNotificationUserInfo,就像以下示例中那样

func application(application: UIApplication, didReceiveLocalNotification notification: UILocalNotification) {
	tamoco.didReceiveLocalNotificationUserInfo(notification.userInfo)
}

如果应用处于后台,将自动生成本地通知并显示在移动设备的通知托盘上。当用户点击本地通知时,您的应用将打开,并执行配置的操作,例如横幅广告。

库属性

这些都是库类属性,可以用来访问来自后端服务的库存。请查看下面的代码片段以了解如何使用它

let allBeacons: Set<BeaconTrigger>? = tamoco.beacons

beacons: Set<BeaconTrigger>?

所有从服务器返回的标签。要监听更新,请在 NSNotificationCenter.defaultCenter() 上开始监听 'TamocoOnTriggersFetched'。

地理围栏:Set

所有从服务器返回的地理围栏。要监听更新,请在 NSNotificationCenter.defaultCenter() 上开始监听 'TamocoOnTriggersFetched'。

无线网络:Set

所有从服务器返回的无线网络。要监听更新,请在 NSNotificationCenter.defaultCenter() 上开始监听 'TamocoOnTriggersFetched'。

当前标签:Set

当前范围内的标签。

当前地理围栏:Set

当前范围内的地理围栏。

当前无线网络:Set

当前范围内的无线网络。

保险库服务

您可以将密钥发送到保险库服务。保险库使用设备ID(IDFA/AAID)存储客户端加密密钥。在推送到保险库之前,SDK将验证密钥以满足服务器要求。密钥必须是一个40个字符的(十六进制)字符串(20字节)。

您可以通过Tamoco SDK实例的vault属性使用保险库

tamoco.vault.pushKey(“abcdef1234...”) { (exception) in {
}

或者在Objective-C的情况下

	[self.tamoco.vault pushKey:@"abcdef1234..." finished:^(NSInteger exception, NSString \* \_Nullable key) {  
	}];

VaultError 是一个枚举,作为回调的参数返回。对于Objective-C,这个枚举被分成两个部分,一个整数和一个表示所使用密钥的字符串。

VaultError

  • NoError(Objective-C整数值0)
    • 未发生错误且推送成功
  • NonValidFormat(Objective-C整数值1)
    • 密钥不是十六进制格式
  • NonValidLength(Objective-C整数值2)
    • 密钥长度不是40个字符
  • NonValidDataLength(Objective-C整数值3)
    • 密钥转换为字节数后的长度不是20字节
  • CantConvertToData(Objective-C整数值4)
    • 密钥不能转换为字节数
  • PushFailed(Objective-C整数值5)
    • 将数据推送到服务器失败

跟踪服务

您可以使用此服务进行任何类型的外部跟踪。

您可以通过Tamoco SDK实例的track属性使用跟踪

tamoco.track.tap("code", variant: "qr") { (isError) in
}

或者在Objective-C的情况下

[self.tamoco.track tap:@"code" variant:@"qr" completion:^(BOOL) {
}];

横幅广告

Tamoco iOS客户端SDK支持的初级事件操作之一是托管横幅广告。横幅广告是基于HTML的内容,当触发时,会占用应用的全屏,呈现该内容。横幅广告提供内置的可本地化的关闭按钮,允许用户在点击时关闭内容并返回您的应用。

注意:默认情况下,iOS 9仅允许访问SSL网络资源。因此,未通过SSL发送的横幅或URI操作可能无法正常工作。如果您的资源无法通过SSL发送,Xcode提供了一种方法,通过在您的应用的信息.plist中的App Transport Security Settings字典选项中覆盖其默认行为。要修改此设置,首先如果它尚未存在,请在您的info.plist中添加此条目。要允许任何资源,既可以是SSL也可以是非SSL,将Allow Arbitrary Loads布尔子选项设置为YES。如果要仅允许某些域名,请选择Domain Exceptions子选项,将不应强制执行SSL的域名字典传递进去。

本地化关闭按钮

默认情况下,Tamoco客户端使用系统风格UIBarButtonSystemItemDone,允许关闭按钮标题本地化到用户的当前语言选择。要本地化按钮,该应用必须首先配置为支持本地化。这可以通过项目 > 本地化设置完成。
本地化字符串然后放置在名为proximity.strings的文件中,它包含以下内容

“ProximityDoneTitle”=“localized close button title goes here”;

要覆盖所有语言的默认关闭按钮标题的文本,将此文件的副本放置在项目的根目录中。要覆盖特定语言,将此文件的副本放置在应用包中相应.lproj文件夹内,例如fr.lproj/proximity.strings。

从HTML内部关闭横幅广告

您可以从HTML内容中通过引用以下内置Tamoco关闭模式,提供自己的关闭机制。
要从JavaScript中关闭横幅,请输入以下代码

window.location = “Tamoco://close”

要从HTML锚点元素中关闭横幅,请输入以下代码

<a href="Tamoco://close">Close me</a>

限制

  • 由于Apple对后台运行应用政策的严格,WiFi扫描和DWELL不可靠
  • -report BleHover时,消耗更多电量,因为我们需要为此启用信标测距

变更日志

您可以在此文件中找到。