UrbanAirship-iOS-Tag-Preference-Center 1.1.0

UrbanAirship-iOS-Tag-Preference-Center 1.1.0

Tests测试
Lang语言 SwiftSwift
许可证 Apache 2
Released最后发布2017年11月
SwiftSwift 版本3.0
SPM支持 SPM

David CrowRyan LepinskiBrian BatchelderSwizzlerMarc Sciglimpaglia 维护。



  • Urban Airship

ios-tag-preference-center

这是什么?

这是一个原生偏好中心,向用户提供偏好列表,选择后创建标签。

需求

所有项目和 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")

这将显示一个具有通过它传递的偏好列表的偏好中心,每个偏好都有一个开关,指示设备是否包含偏好标签。

偏好中心的美化

alt tag

  1. closeButtonFontcloseButtonColor
  2. backgroundColor
  3. titleFonttitleColor
  4. preferenceLabelFontpreferenceLabelColor
  5. cellSwitchOnColor
  6. cellSwitchOffTintColor
  7. cellBackgroundColor
  8. cellSeparatorColor
  9. 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静默推送来更新,以避免不必要地提醒用户。