Tests测试 | ✗ |
Lang语言 | SwiftSwift |
许可证 | Apache 2 |
Released最后发布 | 2017年11月 |
SwiftSwift 版本 | 3.0 |
SPM支持 SPM | ✗ |
由 David Crow,Ryan Lepinski,Brian Batchelder,Swizzler,Marc Sciglimpaglia 维护。
这是一个原生偏好中心,向用户提供偏好列表,选择后创建标签。
所有项目和 SDK 都需要 Xcode 8.0+,项目目标必须是 >= iOS8。
确保您已安装 CocoaPods 依赖关系管理器。通过执行以下命令可以完成此操作
$ gem install cocoapods
请在 podfile 中使用 use_frameworks! 选项指定 UrbanAirship-iOS-Tag-Preference-Center。此 pod 还需要 UrbanAirship-iOS-SDK,如果尚未实现,它将被自动添加
use_frameworks!
# Urban Airship SDK
target "<Your Target Name>" do
pod ‘UrbanAirship-iOS-Tag-Preference-Center’
end
使用以下命令安装
$ pod install
示例应用
包含了示例应用。设置说明可以在 这里 找到。
重要 - 标签偏好中心依赖于 Urban Airship SDK 以工作。在继续之前,请确保 SDK 已通过按照我们的 入门指南 全面实现。
首先,导入 UATagPreferenceCenter
import UATagPreferenceCenter
然后,您想定义您的偏好。每个偏好由一个内部标签和相应的显示名称组成。使用 UATagPreference
用于此目的
let financePref = UATagPreference(tag: "sportsPref", displayName: "Sport")
let sportsPref = UATagPreference(tag: "financePref", displayName: "Finance")
let worldNewsPref = UATagPreference(tag: "worldNewsPref", displayName: "World News")
let weatherPref = UATagPreference(tag: "weatherPref", displayName: "Weather")
默认情况下,标签将存储在设备上,但是,您还可以选择使用为偏好创建的任何现有的标签组。这为您在应用程序外部更改标签偏好的提供了更大的灵活性
let financePref = UATagPreference(tag: "sportsPref", displayName: "Sport", tagGroup: "uaPreferences")
let sportsPref = UATagPreference(tag: "financePref", displayName: "Finance", tagGroup: "uaPreferences")
let worldNewsPref = UATagPreference(tag: "worldNewsPref", displayName: "World News", tagGroup: "uaPreferences")
let weatherPref = UATagPreference(tag: "weatherPref", displayName: "Weather", tagGroup: "uaPreferences")
使用您的偏好启动偏好中心。还要包括一个标题,在视图显示时将展示该标题
UATagPreferenceCenter.start(preferences: [financePref,
sportsPref,
worldNewsPref,
weatherPref],
title: "News Preferences")
这将显示一个具有通过它传递的偏好列表的偏好中心,每个偏好都有一个开关,指示设备是否包含偏好标签。
偏好中心的美化
closeButtonFont
及 closeButtonColor
backgroundColor
titleFont
及 titleColor
preferenceLabelFont
及 preferenceLabelColor
cellSwitchOnColor
cellSwitchOffTintColor
cellBackgroundColor
cellSeparatorColor
listColor
如果您不想使用默认的首选项中心样式,您可以包含自己的样式
let myStyle = UATagPreferencesStyle()
myStyle.preferenceLabelFont = UIFont(name: "Avenir Next", size: 17)
myStyle.preferenceLabelColor = UIColor(red:0.87, green:0.64, blue:0.23, alpha:1.00)
myStyle.closeButtonColor = UIColor(red:0.44, green:0.40, blue:0.85, alpha:1.00)
所有样式都可以访问
myStyle.cellBackgroundColor = UIColor(red:0.92, green:0.85, blue:1.00, alpha:1.00)
myStyle.listColor = UIColor(red:0.92, green:0.85, blue:1.00, alpha:1.00)
myStyle.backgroundColor = UIColor(red:0.92, green:0.85, blue:1.00, alpha:1.00)
myStyle.cellSeparatorColor = UIColor(red:0.96, green:0.96, blue:0.96, alpha:1.00)
myStyle.cellSwitchOnColor = UIColor(red:0.44, green:0.40, blue:0.85, alpha:1.00)
myStyle.cellSwitchOffTintColor = UIColor(red:0.44, green:0.40, blue:0.85, alpha:1.00)
在启动首选项中心时包含您自定义的样式
UATagPreferenceCenter.start(preferences: [financePref,
sportsPref,
worldNewsPref,
weatherPref],
style: myStyle,
title: "News Preferences")
如果您想使用plist文件加载自定义样式
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>preferenceLabelFont</key>
<dict>
<key>fontName</key>
<string>Avenir Next</string>
<key>fontSize</key>
<string>17</string>
</dict>
<key>preferenceLabelColor</key>
<string>#4F758F</string>
<key>closeButtonColor</key>
<string>#4F758F</string>
</dict>
</plist>
使用以下设置您的plist文件
let myStyle = UATagPreferencesStyle(contentsOfFile: "MyStylePreferences")
包含一个默认的UATagPreferenceCenterStyle.plist
文件,可以覆盖它以使用自定义样式。
也可以使用UATagPreferences
实例来设置和样式化您的首选项中心
let prefCenter = UATagPreferences(preferences: [financePref,
sportsPref,
worldNewsPref,
weatherPref])
let myStyle = UATagPreferencesStyle()
myStyle.preferenceLabelFont = UIFont(name: "Avenir Next", size: 17)
myStyle.preferenceLabelColor = UIColor(red:0.87, green:0.64, blue:0.23, alpha:1.00)
myStyle.closeButtonColor = UIColor(red:0.44, green:0.40, blue:0.85, alpha:1.00)
prefCenter.style = myStyle
prefCenter.title = "News Preferences"
prefCenter.start()
注意:首选项中心可以在应用外部保存和更新。考虑是否允许较新的首选项覆盖默认值。每次打开首选项中心的调用都有一个可选的preferSavedPreferences
参数,默认为true
,但将忽略已保存的首选项如果设置为false
。
UATagPreferenceCenter.start(preferences: [financePref,
sportsPref,
worldNewsPref,
weatherPref],
title: "News Preferences",
preferSavedPreferences: false)
当使用UATagPreferences
实例时
prefCenter.start(preferSavedPreferences: false)
如果您想通过推送通知更新或打开首选项中心,在您的AppDelegate中调用takeOff后启用此功能
UAirship.takeOff(config)
// create a preference action after takeOff
UATagPreferenceCenter.registerAction()
您也可以设置一个默认的UATagPreferencesStyle
来使用
let myStyle = UATagPreferencesStyle()
myStyle.preferenceLabelFont = UIFont(name: "Avenir Next", size: 17)
myStyle.preferenceLabelColor = UIColor(red:0.87, green:0.64, blue:0.23, alpha:1.00)
myStyle.closeButtonColor = UIColor(red:0.44, green:0.40, blue:0.85, alpha:1.00)
UATagPreferenceCenter.registerAction(style: myStyle)
要从推送通知触发首选项中心,包括操作键"ua_tag_preference_open_action"
和JSON有效负载。应用在设置每个UATagPreference
时的参数相同。
{
"preferences": [
{
"tag": "sportsPref",
"displayName": "Sport",
"tagGroup": "uaPreferences"
},
{
"tag": "financePref",
"displayName": "Finance",
"tagGroup": "uaPreferences"
},
{
"tag": "worldNewsPref",
"displayName": "World News",
"tagGroup": "uaPreferences"
},
{
"tag": "weatherPref",
"displayName": "Weather",
"tagGroup": "uaPreferences"
}
],
"title": "News Preferences"
}
完整的API cURL示例
curl -X POST -H "Content-Type: application/json" -H "Accept: application/vnd.urbanairship+json; version=3;" -H "Authorization: Basic <AUTHORIZATION>" -d '{
"audience": "all",
"device_types" : ["ios"],
"notification" : {
"ios": {
"alert": "Pick your favorite news preferences!"
},
"actions": {
"app_defined": {
"ua_tag_preference_open_action": {
"preferences": [
{
"tag": "sportsPref",
"displayName": "Sport",
"tagGroup": "uaPreferences"
},
{
"tag": "financePref",
"displayName": "Finance",
"tagGroup": "uaPreferences"
},
{
"tag": "worldNewsPref",
"displayName": "World News",
"tagGroup": "uaPreferences"
},
{
"tag": "weatherPref",
"displayName": "Weather",
"tagGroup": "uaPreferences"
}
],
"title": "News Preferences"
}
}
}
}
}' "https://go.urbanairship.com/api/push"
您可以使用上面提到的相同的键/值对更新首选项中心的所有或部分内容。唯一的区别是使用的操作键,它是ua_tag_preference_save_action
。建议您通过content-available静默推送来更新,以避免不必要地提醒用户。