为了遵守 Apple 的指导原则,App Store 上的每个应用都必须提供必要的链接,例如隐私政策,以及(如果适用)使用条款(针对应用内购买)。许多应用通过在其设置中添加“链接”部分来处理此问题,其中包含其他有用的链接,例如应用评分、常见问题解答和支持选项。
这就是 LinksKit 的用武之地:它提供一个简单、即用型的解决方案来处理所有这些常用链接,从而节省您大量时间。无论是法律、帮助还是应用推广链接,LinksKit 都能涵盖。对于 macOS,它甚至支持将这些链接直接添加到帮助菜单中!
iOS 示例 | macOS 示例 |
---|---|
![]() |
![]() |
开始使用 LinksKit 非常简单。将包添加到您的项目后,只需 import LinksKit
并将 LinksView()
放置在 List
或 Form
视图中。但在执行此操作之前,您需要配置要包含的链接。
对于基本设置,包括法律链接(如隐私政策和使用条款)、应用评分和联系电子邮件,您可以这样配置 LinksKit
import SwiftUI
@main
struct YourApp: App {
init() {
// other setup code
LinksKit.configure(
providerToken: "123456",
linkSections: [
.helpLinks(appID: "123456789", supportEmail: "support@example.com"),
.legalLinks(privacyURL: URL(string: "https://example.com")!)
]
)
}
var body: some Scene {
// your UI code
}
}
提示: 您的
providerToken
已经存在,并且对于您的所有应用都是相同的。遗憾的是,Apple 没有提供比在 App Store Connect 上的“Campaign”创建表单(位于“分析”>“获取”>“广告系列”下)中查找它更简单的方法。您实际上不需要按“创建”,只需在表单中输入一些文本,您就会在广告系列链接预览中看到pt
参数。广告系列链接是跟踪用户从哪里找到您的应用的好方法。在此处了解更多关于它们的信息:here。
注意: 对于具有应用内购买的应用,LinksKit 将自动将 Apple 的使用条款链接添加到
.legalLinks
。无需自己配置,它就能正常工作!🚀
LinksKit 超越了基本功能,提供更多自定义选项以满足您的需求。您可以
.helpLinks
的 faqURL
添加常见问题解答链接.socialMenus(appLinks:developerLinks:)
链接到您的应用或开发者的社交媒体.appMenus(ownAppLinks:friendsAppLinks:)
推广您的其他应用或朋友的应用这是一个来自我的应用 TranslateKit 的真实示例,展示了所有这些功能
init() {
// other setup code
self.configureLinksKit()
}
func configureLinksKit() {
// App Links
let ownDeveloperApps = LinkSection(entries: [
.link(.ownApp(id: "6502914189", name: "FreemiumKit: In-App Purchases", systemImage: "cart")),
.link(.ownApp(id: "6480134993", name: "FreelanceKit: Time Tracking", systemImage: "timer")),
])
let ownConsumerApps = LinkSection(entries: [
.link(.ownApp(id: "6472669260", name: "CrossCraft: Crossword Tests", systemImage: "puzzlepiece")),
.link(.ownApp(id: "6477829138", name: "FocusBeats: Study Music Timer", systemImage: "music.note")),
.link(.ownApp(id: "6587583340", name: "Pleydia Organizer: Media Renamer", systemImage: "popcorn")),
])
let ownVisionApps = LinkSection(entries: [
.link(.ownApp(id: "6479207869", name: "Guided Guest Mode: Device Demo", systemImage: "questionmark.circle")),
.link(.ownApp(id: "6478062053", name: "Posters: Discover Movies at Home", systemImage: "movieclapper")),
])
let nicosApps = LinkSection(entries: [
.link(.friendsApp(id: "1249686798", name: "NFC.cool Tools: Tag Reader", systemImage: "tag", providerToken: "106913804")),
.link(.friendsApp(id: "6443995212", name: "Metadata for Fastlane Tools", systemImage: "hammer", providerToken: "106913804")),
])
let jansApps = LinkSection(entries: [
.link(.friendsApp(id: "6503256642", name: "App Exhibit: Your App Showcase", systemImage: "square.grid.3x3.fill.square")),
])
// Configure LinksKit
LinksKit.configure(
providerToken: "549314",
linkSections: [
.helpLinks(appID: "6476773066", faqURL: Constants.faqURL, supportEmail: "translatekit@fline.dev"),
.socialMenus(
appLinks: .appSocialLinks(
platforms: [.twitter, .mastodon(instance: "mastodon.social"), .threads],
handle: "TranslateKit",
handleOverrides: [.twitter: "TranslateKitApp"]
),
developerLinks: .developerSocialLinks(
platforms: [.twitter, .mastodon(instance: "iosdev.space"), .threads],
handle: "Jeehut"
)
),
.appMenus(
ownAppLinks: [ownDeveloperApps, ownConsumerApps, ownVisionApps],
friendsAppLinks: [nicosApps, jansApps]
),
.legalLinks(privacyURL: Constants.privacyPolicyURL)
]
)
}
提示: 如果您在使用
.socialMenus
助手时有appLinks
但没有developerLinks
(反之亦然),您可以直接传递.appSocialLinks
或.developerSocialLinks
,而不是传递.socialMenus
。
注意:
.ownApp
和.friendsApp
助手的行为有所不同,这是有原因的。LinksKit 将自动为您的应用附加providerToken
,而如果您知道朋友的应用的providerToken
,则需要手动包含它。
要将 LinksKit 添加到您的应用的设置屏幕(通常结构为 Form
或 List
),只需插入一个 LinksView()
,如下所示
import SwiftUI
struct SettingsView: View {
var body: some View {
Form {
// other sections/views like a paid status view or app settings
#if !os(macOS)
LinksView()
#endif
}
}
}
就是这样!如果您不以 macOS 为目标平台,结果应如下所示
对于 macOS 应用,这些链接的最佳位置通常在“帮助”菜单中。您可以轻松地将 LinksView()
添加到菜单栏
import SwiftUI
@main
struct YourApp: App {
var body: some Scene {
WindowGroup {
// your UI code
}
#if os(macOS)
.commands {
CommandGroup(replacing: .help) {
LinksView()
.labelStyle(.titleAndIcon)
}
}
#endif
}
}
这就是它在 macOS 上的外观
如果像 .helpLinks
或 .appMenus
这样的默认助手不完全适合您的用例,您可以创建完全自定义的 LinkSection
实例并添加您自己的链接。您甚至可以嵌套它们!例如,.appMenus
只是此等效 LinkSection
的一个方便工具
LinkSection(
title: "App Links",
entries: [
.menu(LinkMenu(
title: "More Apps from Developer",
systemImage: "plus.square.on.square",
linkSections: [ownDeveloperApps, ownConsumerApps, ownVisionApps]
)),
.menu(LinkMenu(
title: "Apps from Friends",
systemImage: "hand.thumbsup",
linkSections: [nicosApps, jansApps]
)),
]
)
entries
参数接受 .menu(LinkMenu)
或 .link(Link)
之一,您可以根据 SwiftUI 支持的级别嵌套任意多个级别(.menu
呈现为 Menu
视图,.link
呈现为 Button
)。
LinksKit 附带额外的 Label
样式,您可以使用这些样式为您的 Form/List 视图赋予不同的外观
.labelStyle(.titleAndTrailingIcon)
:呈现效果与默认的 .titleAndIcon
样式完全相同,但图标位于尾部。.labelStyle(.titleAndIconBadge(color:))
:通过向前导图标添加彩色背景,类似于 Apple 在“设置”应用中的样式。.labelStyle(.titleAndTrailingIconBadge(color:))
:与上述相同,但图标位于尾部。LinksKit 的所有内置字符串都已本地化为大约 40 种语言,涵盖 iOS 支持的所有语言。无需设置。如果您需要其他语言,请随时在 GitHub 上打开一个 issue——我很乐意添加它们!
如果您需要本地化您的应用名称或任何其他传递的文本,您可以像往常一样在您的应用中使用 String(localized:)
。
我从以下 Indie 应用中提取了这个库(给它们 5 星评价以支持我!)
应用图标 | 应用名称和描述 | 支持的平台 |
---|---|---|
![]() |
TranslateKit: App Localizer(应用本地化器) 简单地拖放 String Catalog 文件进行翻译,支持多种翻译服务和智能正确性检查。 |
Mac |
![]() |
Pleydia Organizer: Movie & Series Renamer(电影和剧集重命名器) 简单、快速和智能的媒体管理,适用于您的电影、电视节目和动漫收藏。 |
Mac |
![]() |
FreemiumKit: In-App Purchases(应用内购买) 适用于 Apple 平台的简单应用内购买和订阅:自动化、付费墙、A/B 测试、实时通知、PPP 等。 |
iPhone, iPad, Mac, Vision |
![]() |
FreelanceKit: Time Tracking(时间跟踪) 简单且经济实惠的时间跟踪,为所有 设备提供原生体验。包括 iCloud 同步和 CSV 导出。 |
iPhone, iPad, Mac, Vision |
![]() |
CrossCraft: Custom Crosswords(自定义填字游戏) 创建主题和个性化的填字游戏。自己解决它们或分享它们以挑战他人。 |
iPhone, iPad, Mac, Vision |
![]() |
FocusBeats: Pomodoro + Music(番茄工作法 + 音乐) 通过经过验证的番茄工作法和精选的 Apple Music 播放列表和主题进行深度专注。在休息期间自动暂停音乐。 |
iPhone, iPad, Mac, Vision |
![]() |
Guided Guest Mode(引导式访客模式) 轻松地向朋友和家人展示 Apple Vision Pro。为每个人提供可定制、易于使用的指南! |
Vision |
![]() |
Posters: Discover Movies at Home(海报:在家发现电影) 为您的家庭提供自动更新和交互式海报,包括预告片、放映时间和流媒体服务链接。 |
Vision |