winguSDK-iOS
winguSDK是wingu.de服务的iOS SDK。此框架将允许连接到附近用户位置的信标和地理围栏。它使用Swift 3.0
编写。
示例
要运行示例项目,先克隆仓库,然后从Example目录运行pod install
。
安装
winguSDK-iOS通过CocoaPods提供。要安装它,只需将以下行添加到Podfile中:
pod "winguSDK-iOS"
要求
SDK 的主要目标是响应周围事件。wingu SDK 使用 CoreLocation
与信标和地理围栏一起工作。您需要请求用户权限以使用其位置,并且必须将其设置为 始终
。将此密钥添加到您的 .plist
文件中
NSLocationAlwaysUsageDescription
请提供您希望如何使用用户位置的说明
用法
声明您的键
调用方法
_ = WinguComposition("[YOUR_API_KEY]", false)
第二个参数是用于测试环境,它将很快被删除。请将其保持为 false
。
调用此方法的推荐方式是在您的 AppDelegate
中的 application:didFinishLaunchingWithOptions
。
检测频道
为了与附近的地点连接,需要响应该协议 WinguLocationsDelegate
。它有一个必需的方法,该方法将返回一个描述附近信标或地理围栏的 Channel
对象。
要开始搜索信标和地理围栏,请在该类中创建变量
var winguLocations: WinguLocations!
并且当您准备好搜索时,请初始化此对象
winguLocations = WinguLocations.sharedInstance
winguLocations.delegate = self
winguLocations.startBeaconsRanging()
Channel
是顶级对象,可以描述信标或地理围栏。它可以扩展。
为了在您的代码中检索搜索到的频道,请添加以下内容
extension ViewController: WinguLocationsDelegate {
func winguRangedChannels(_ channels: [Channel]) {
//do whatever you want with channel objects
}
}
导航到仪表板
每当您得到一个频道并想要进行到 Deck
,您需要传递一个参数。我们推荐使用 UIStoryboards
和 Storyboard Reference
来执行此操作,在那里您唯一需要做的是将 Storyboard 设置为 WinguDeckStoryboard
,将 Bundle
设置为 de.wingu.sdk
。然后在 prepareForSegue:
方法中,您需要像这样设置 content
和 channelId
deckVC.content = channel?.content!
deckVC.channelId = channel?.uID
其中 deckVC
是 WinguDeckViewController
。
如果您不想使用 Storyboards,只需从 WinguDeckStoryboard
获取 WinguDeckViewController
并按您想要的声明转换。
注释
这将自动启动所有分析。建议您这样使用。每次您只想使用视图时,您负责 whenever you stop displaying Deck
启动和结束分析。
自定义 DeckView
您可以使用 DeckComposition
结构完全自定义您的 deck。您可以将其应用于 DeckView
或 WinguDeckViewController
。默认设置为
DeckComposition(.defaultComposition)
例如,要更改 ActionComponent
上按钮的背景颜色,您需要做类似以下操作
var myComposition = DeckComposition(.defaultComposition)
myComposition.couponComponent.fontColor = UIColor.blue
(winguDectVC as? WinguDeckViewController).composition = myComposition
背景活动
winguSDK 可自动从前台切换到后台活动。您只需要在您的 AppDelegate 中声明更改状态。然后,应用将从测距信标切换到监控,反之亦然。
extension AppDelegate {
func applicationWillResignActive(_ application: UIApplication) {
WinguLocations.applicationState(.willResignActive)
}
func applicationDidEnterBackground(_ application: UIApplication) {
WinguLocations.applicationState(.didEnterBackground)
}
func applicationWillEnterForeground(_ application: UIApplication) {
WinguLocations.applicationState(.willEnterForeground)
}
func applicationDidBecomeActive(_ application: UIApplication) {
WinguLocations.applicationState(.didBecomeActive)
}
func applicationWillTerminate(_ application: UIApplication) {
WinguLocations.applicationState(.willTerminate)
}
}
使用代理卡
要使用代理卡,请确保您的 deck 是代理 deck。为此,请使用
channel?.payloadProxy()
其中 payloadProxy() 是一个返回您的有效载荷 id 作为 String
的 Channel
对象 func
注意
请记住,为了进行此集成,还需要创建 WinguInteractions
对象以收集分析数据。为此,请使用
self.interactions = self.channel?.startInteractionsMonitoring()
其中 self.interactions
被声明为
var interactions: WinguInteractions?
要停止交互,请调用
self.channel?.stopInteractionsMonitoring(self.interactions!)
分析数据将本地保存,要发送它,请检查分析部分
分析
当您从SDK使用ViewControllers时,会自动收集分析数据,但您需要手动发送,发送分析数据请将这些代码放在您的application:didFinishLaunchingWithOptions
方法中
Analytics.sendAnalyticsData(nil)
通知
要允许通知,只需调用该方法
LocalNotificationManager.setupLocalNotificationManager()
然后按以下方式处理它
func application(_ application: UIApplication, handleActionWithIdentifier identifier: String?, for notification: UILocalNotification, completionHandler: @escaping () -> Void) {
LocalNotificationManager.handleLocalNotificationAction(identifier!)
}
func application(_ application: UIApplication, didReceive notification: UILocalNotification) {
LocalNotificationManager.redirectFromLocalNotificationToChannelDetail(notification, DeckComposition(.defaultComposition))
}
作者
iOS开发者 @ wingu AG
许可
winguSDK-iOS遵循Apache 2.0许可。有关更多信息,请参阅LICENSE文件。