コンテンツへスキップ

LinksKit のご紹介:Swift 開発者のためのアプリリンク管理を簡単に

アプリに必要なリンクを毎回実装するのにうんざりしていませんか? LinksKit は法的要件からクロスプロモーションまですべてを処理する Swift パッケージで、時間を節約しながらアプリの認知度を高めます。

LinksKit のご紹介:Swift 開発者のためのアプリリンク管理を簡単に

過去 2 年間で 9 つのアプリをリリースしたインディー開発者として、繰り返し遭遇した課題があります。各アプリに必要なリンクの実装です。この反復的な作業がきっかけで、iOS、macOS、visionOS アプリに重要なリンクを追加するプロセスを効率化する Swift パッケージ、LinksKit を作りました。

LinksKit を作った理由

複数の Apple プラットフォームにわたってアプリをリリースする中で、あるパターンに気づきました。どのアプリにも同じようなリンクセクションが必要だったのです:

  1. 法的リンク(プライバシーポリシー、利用規約)

  2. サポートリンク(FAQ、連絡先メール)

  3. アプリレビューのディープリンク

  4. ソーシャルメディアリンク

  5. 他のアプリのクロスプロモーション

これらのリンクの実装は時間がかかる反復的な作業になっていました。しかも Mac では表示がまったく異なるため、マルチプラットフォームアプリでは余分な作業が発生します。そこで再利用可能なソリューションの必要性を感じ、LinksKit が誕生しました。

すべての新しいアプリで LinksKit を使うべき理由

  1. 時間の節約:LinksKit は一般的なリンク要件に対するすぐに使えるソリューションを提供し、開発者がアプリのコア機能に集中できるようにします。

  2. コンプライアンス:App Store ガイドラインに必要な法的リンクをアプリに簡単に含められます。

  3. クロスプロモーション:LinksKit を使えば他のアプリを簡単にアピールでき、アプリポートフォリオ全体の認知度を高められる可能性があります。

  4. ネットワーキングの機会:他の開発者のアプリをプロモーションでき、支え合うコミュニティやクロスプロモーションのパートナーシップを育てられます。

  5. カスタマイズ:ビルトインのソリューションを提供しつつ、特定のニーズに合わせた完全なカスタマイズも可能です。

  6. プラットフォーム適応:iOS、macOS、visionOS でシームレスに動作し、各プラットフォームの UI 規約に適応します。

LinksKit の使い方

LinksKit の導入は簡単ですが、コードに入る前に重要な概念について説明しましょう:providerToken です。

providerToken について

providerToken は App Store マーケティングキャンペーンにおける重要な要素です。開発者アカウントの一意な識別子で、マーケティング活動の効果を追跡するのに役立ちます。providerToken を含むリンクをユーザーがクリックすると、Apple がそのクリックをキャンペーンに関連付け、アプリのユーザー獲得に関する貴重なインサイトを提供してくれます。「キャンペーン」というと大げさに聞こえますが、実際にはユーザーがどこから来たかを示すパラメータにすぎません。

providerToken の取得方法

providerToken を見つけるのはすぐには分かりにくいですが、手順は以下の通りです:

  1. App Store Connect にログイン

  2. Analytics > Acquisition > Campaigns に移動

  3. 「Create Campaign Link」をクリック

  4. フォームに適当なテキストを入力(実際にキャンペーンを作成する必要はありません)

  5. Campaign Link のプレビューで pt パラメータを探します。pt= の後の値があなたの providerToken です

このトークンはすべてのアプリで共通なので、一度調べれば OK です。

基本的な設定

providerToken が分かったところで、アプリに LinksKit を設定しましょう:

LinksKit.configure(
   providerToken: "123456",
   linkSections: [
      .helpLinks(appID: "123456789", supportEmail: "[email protected]"),
      .legalLinks(privacyURL: URL(string: "https://example.com/privacy")!)
   ]
)

この基本設定で、アプリにヘルプリンクと法的リンク(利用規約を含む)が追加されます。

包括的な設定例

LinksKit が提供するすべてのビルトイン機能を紹介する、より包括的な例を見てみましょう。ソーシャルリンク、自分のアプリへのリンク、友人のアプリへのリンクを含みます:

// アプリリンク
let ownApps = LinkSection(entries: [
   .link(.ownApp(id: "6502914189", name: "FreemiumKit", systemImage: "cart")),
   .link(.ownApp(id: "6480134993", name: "FreelanceKit", systemImage: "timer")),
   .link(.ownApp(id: "6472669260", name: "CrossCraft", systemImage: "puzzlepiece")),
   .link(.ownApp(id: "6477829138", name: "FocusBeats", systemImage: "music.note")),
])

let friendsApps = LinkSection(entries: [
   .link(.friendsApp(id: "1249686798", name: "NFC.cool Tools", systemImage: "tag", providerToken: "106913804")),
   .link(.friendsApp(id: "6503256642", name: "App Exhibit", systemImage: "square.grid.3x3.fill.square")),
])

// LinksKit の設定
LinksKit.configure(
   providerToken: "549314",
   linkSections: [
      .helpLinks(
         appID: "6476773066",
         faqURL: URL(string: "https://translatekit.app/#faq")!,
         supportEmail: "[email protected]"
      ),
      .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: [ownApps], friendsAppLinks: [friendsApps]),
      .legalLinks(privacyURL: Constants.legalPrivacyPolicyURL)
   ]
)

上記の設定は TranslateKit から(簡略化して)引用したものです:

  1. FAQ とサポートメールを含むヘルプリンクを設定

  2. アプリと開発者のソーシャルメディアリンクを追加

  3. 他の自分のアプリをプロモーションするメニューを作成

  4. 友人のアプリをプロモーションするセクションを含む(ネットワーキングに最適!)

  5. 必要な法的リンクをすべて確保

設定したリンクを使うには、設定画面に LinksView() を追加するだけです:

Form {
   // その他の設定...
   LinksView()
}

iOS ではこのような表示になります:

電話の設定

Mac では、リンクをヘルプメニューに配置するのがより一般的です。以下のようにします:

WindowGroup {
   // UI コード
}
.commands {
   CommandGroup(replacing: .help) {
      LinksView()
         .labelStyle(.titleAndIcon)
   }
}

メニューではこのように表示されます:

Mac のヘルプメニュー

カスタムリンクセクション

LinksKit はビルトインのセクションを提供していますが、LinkSection を使って完全にカスタムなセクションも作成できます。この柔軟性により、必要なあらゆる種類のリンクやネストされたメニュー構造を追加できます。

カスタムセクションの例を示します:

let customSection = LinkSection(
    title: "Custom Links",
    entries: [
        .link(Link(title: "Our Website", systemImage: "globe", url: URL(string: "https://www.example.com")!)),
        .menu(LinkMenu(
            title: "Social Media",
            systemImage: "network",
            linkSections: [
                LinkSection(entries: [
                    .link(Link.followUsOn(socialPlatform: .twitter, handle: "YourAppHandle")),
                    .link(Link.followUsOn(socialPlatform: .instagram, handle: "YourAppHandle"))
                ])
            ]
        ))
    ]
)

この例は、メニューをネストしてリンクの階層構造を作り、アプリのニーズに合わせる方法を示しています。

カスタムラベルスタイル

LinksKit はコンテンツだけでなく、表示のカスタマイズも柔軟に行えます。SwiftUI の labelStyle モディファイアを使って、リンクの外観を簡単にカスタマイズできます。LinksKit はリンクの見た目を向上させる 3 つのカスタムラベルスタイルを提供しています:

  1. .titleAndTrailingIcon:デフォルトの .titleAndIcon スタイルに似ていますが、アイコンがラベルの末尾に配置されます。

  2. .titleAndIconBadge(color:):Apple の設定アプリのスタイルを模倣し、先頭のアイコンにカラー背景を追加します。

  3. .titleAndTrailingIconBadge(color:):末尾アイコンの配置とカラー背景を組み合わせたものです。

これらのスタイルを適用するには、LinksViewlabelStyle モディファイアを追加するだけです:

LinksView()
    .labelStyle(.titleAndIconBadge(color: .blue))

このシンプルな変更でリンクの見た目が大きく変わり、アプリのデザイン言語に合わせたり、視覚的な階層を作り出したりできます。スタイルの比較はこちらです:

LinksKit

カスタムラベルスタイルを活用することで、アプリのリンクセクションにユニークで洗練された見た目を作り、全体的なユーザー体験を向上させることができます。

まとめ

LinksKit は単なる時間短縮ツールではありません。アプリリンクの管理、コンプライアンスの確保、開発者ネットワーキングの促進を含む包括的なソリューションです。法的要件からクロスプロモーションまですべてを処理することで、本当に大切なこと ― 素晴らしいアプリを作ること ― に集中できるようにしてくれます。

複数のアプリを持つベテラン開発者でも、最初のプロジェクトを始めたばかりの方でも、LinksKit は開発プロセスを大幅に効率化できます。次のプロジェクトでぜひ試して、すべての Apple プラットフォームにわたるリンク管理の簡素化を体験してください。お役に立てれば嬉しいです。

github.comFlineDev / LinksKitSwiftUI convenience view to show common links in apps settings/help menu

この記事が参考になりましたか?BlueskyMastodonでフォローして、Swiftのヒントやインディー開発の最新情報をチェックしてください。