0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

個人開発アプリで「コピーリンク切れ」を減らすために、Swiftで軽量なリンク検証を入れた話

0
Posted at

クラクラ(Clash of Clans)の配置を集めた無料のiOSアプリを個人開発しています。配置ごとに「ゲーム内コピー用リンク」を持っているのですが、運用していて一番ユーザー体験を損ねたのが リンク切れ でした。

何が起きていたか

  • ゲームのアップデートでタウンホールのレベルが上がると、古い配置のリンクが開けなくなることがある
  • 投稿元が配置を削除すると、リンクだけが残る
  • ユーザーから見ると「タップしても何も起きない」ので、アプリ自体が壊れているように見える

やったこと

  1. 公開前チェック: 新しい配置を追加するときに、リンクの形式(スキーム・必須クエリ)をバリデーションする
  2. 定期チェック: 既存リンクをバッチで確認し、怪しいものはフラグを立てて一覧から一時的に外す
  3. 表示側の工夫: フラグ付きの配置は「確認中」と表示し、無言で失敗させない

形式チェックはこんな感じのシンプルなものです。

struct LayoutLink {
    let url: URL

    var isWellFormed: Bool {
        guard let comps = URLComponents(url: url, resolvingAgainstBaseURL: false),
              comps.scheme == "https",
              let items = comps.queryItems,
              items.contains(where: { $0.name == "action" }),
              items.contains(where: { $0.name == "id" && !($0.value ?? "").isEmpty })
        else { return false }
        return true
    }
}

学び

  • 「データが正しいこと」はUIの細かい改善よりも信頼に効く
  • 失敗を隠さず「確認中」と見せるだけで、問い合わせがかなり減った
  • 完璧な検証よりも、追加時の軽いチェック+定期バッチの組み合わせで十分だった

宣伝になってしまいますが、自分のアプリです:Base Layouts: War & Farm Maps(無料・iOS)。タウンホール別に対戦・資源・トロフィー配置をまとめていて、タップでゲームに配置をコピーできます。
https://apps.apple.com/app/apple-store/id6804564319?pt=2720803&ct=qiita_ja3&mt=8

同じように外部リンクを大量に扱っている方がいれば、運用のコツをコメントで教えてもらえると嬉しいです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?