LinksKit Logo

LinksKit

为了遵守 Apple 的指导原则,App Store 上的每个应用都必须提供必要的链接,例如隐私政策,以及(如果适用)使用条款(针对应用内购买)。许多应用通过在其设置中添加“链接”部分来处理此问题,其中包含其他有用的链接,例如应用评分、常见问题解答和支持选项。

这就是 LinksKit 的用武之地:它提供一个简单、即用型的解决方案来处理所有这些常用链接,从而节省您大量时间。无论是法律、帮助还是应用推广链接,LinksKit 都能涵盖。对于 macOS,它甚至支持将这些链接直接添加到帮助菜单中!

iOS 示例 macOS 示例

使用方法

开始使用 LinksKit 非常简单。将包添加到您的项目后,只需 import LinksKit 并将 LinksView() 放置在 ListForm 视图中。但在执行此操作之前,您需要配置要包含的链接。

最小化设置

对于基本设置,包括法律链接(如隐私政策和使用条款)、应用评分和联系电子邮件,您可以这样配置 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 超越了基本功能,提供更多自定义选项以满足您的需求。您可以

这是一个来自我的应用 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 添加到您的应用的设置屏幕(通常结构为 FormList),只需插入一个 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 视图赋予不同的外观

本地化

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