◉RORK LABEN
●GPT-6.1 SOL — Rork のモデルメニューに追加(09-29)。Low/Medium/High を選べ、Pro・Max に含まれます●SONNET 5.5 — UI づくりが得意で、Sonnet 5 より出力が速いモデルが選べます(09-28)●SDK 58 — Beta が 09/15 から。stable の案内はまだなく、Expo Go でのプロジェクト実行は 09/03 からログインが必要です●WIDGET — iOS のウィジェットが本番ビルドだけ真っ黒になる原因を追った報告が出ています●OBSERVE — EAS Observe がネイティブクラッシュも記録します(SDK 57.0.21 以降・10/07)●NEW — 起動広告が、背面から戻った回にしか出ていませんでした。「前面に戻った」合図が、…●GPT-6.1 SOL — Rork のモデルメニューに追加(09-29)。Low/Medium/High を選べ、Pro・Max に含まれます●SONNET 5.5 — UI づくりが得意で、Sonnet 5 より出力が速いモデルが選べます(09-28)●SDK 58 — Beta が 09/15 から。stable の案内はまだなく、Expo Go でのプロジェクト実行は 09/03 からログインが必要です●WIDGET — iOS のウィジェットが本番ビルドだけ真っ黒になる原因を追った報告が出ています●OBSERVE — EAS Observe がネイティブクラッシュも記録します(SDK 57.0.21 以降・10/07)●NEW — 起動広告が、背面から戻った回にしか出ていませんでした。「前面に戻った」合図が、…
記事一覧/アプリ開発
◇ アプリ開発/2026-05-31中級

iOSアプリから壁紙を『設定』まで導く現実的な設計 — Save to Photos の権限と Shortcuts 連携

iOSでは壁紙をアプリから直接設定できません。add-only 権限での保存、Live Photo の扱い、設定アプリへの誘導、Shortcuts オートメーションまで、6本の壁紙アプリで詰めてきた実装と計測値をまとめます。

iOS115壁紙アプリ28expo-media-library3権限設計4Shortcuts3Rork585

✦ プレミアム記事

壁紙アプリを作るとき、最後の最後で一番手こずるのは「壁紙に設定」というたった一つのボタンです。画像を並べ、お気に入りを同期し、広告を入れ、課金を組んでも、肝心のこのボタンがiOSでは思ったように作れません。多くの個人開発者がここで「保存しただけで終わってしまい、ユーザーがそのあとどうしていいか分からない」という壁に当たります。

私自身、2014年から個人開発を続けてきて累計5,000万ダウンロードに到達した中で、壁紙・癒し系のアプリを今も6本並行で運用しています。アーティストとして作る画像をどう「相手の手元の画面」に届けるかは、技術というより設計の問題でした。その6本で実際に詰めてきた保存フローの実装と、計測して分かった数値を、ここで共有します。

iOSは「壁紙に設定」をアプリに開放していません

まず受け止めなければならない前提があります。iOSには、サードパーティのアプリがユーザーのロック画面やホーム画面の壁紙をプログラムから差し替えるための公開APIが存在しません。Androidの WallpaperManager.setBitmap() に相当するものは、iOSのアプリ開発者には渡されていないのです。

つまり「壁紙に設定」ボタンができることは、実際には次の2つに限られます。

  1. 画像をユーザーの写真ライブラリ(カメラロール)に保存する
  2. ユーザーを設定アプリの壁紙画面へ誘導し、保存した画像を選んでもらう

この事実を知らずに設計を始めると、「ワンタップで壁紙が変わる」体験を約束してしまい、レビューで「設定されない」という低評価が並ぶことになります。私の場合、最初のバージョンでボタンのラベルを「壁紙に設定」にしていたところ、実際には保存しかしていなかったため、ユーザーの期待と挙動がずれて初週のレビュー平均が下がりました。ラベルを「写真に保存」に変え、保存後の導線を丁寧に作り直したことで、この齟齬は解消しています。

保存だけなら add-only 権限で足ります

写真ライブラリへの保存というと、つい「写真へのアクセス」をまるごと要求しがちです。けれども壁紙アプリがやりたいのは「足す」ことだけで、ユーザーの既存の写真を「読む」必要はありません。ここで使えるのが、iOS 14 で導入された 追加のみ(add-only) の権限レベルです。

フル権限(PHAccessLevel.readWrite)を求めると、ユーザーには「すべての写真へのアクセスを許可しますか」という重たいダイアログが出ます。一方 add-only(PHAccessLevel.addOnly)なら、「写真の追加を許可しますか」という、はるかに軽い文言になります。壁紙を保存するだけのアプリが他人の写真を全部見たがる理由はありませんし、審査でもプライバシー上の説明責任が軽くなります。

ネイティブ側では、Info.plist に保存専用の説明文を入れます。

<key>NSPhotoLibraryAddUsageDescription</key>
<string>選んだ壁紙をあなたの写真に保存するために使用します。既存の写真を読み取ることはありません。</string>

NSPhotoLibraryUsageDescription(読み書き用)ではなく NSPhotoLibraryAddUsageDescription を使うのが肝心な点です。前者を入れてしまうと、保存しかしないのにフル権限の説明文が要求され、審査側に「なぜ全写真へのアクセスが必要か」を問われる余地を残します。

✦

ここまでお読みいただきありがとうございます。

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
✦PHAccessLevel.addOnly でフル写真権限を求めずに保存だけ通す具体的な実装
✦Live Photo 壁紙が静止画になってしまう原因と、PHLivePhoto を保存する分岐
✦6アプリで計測した『保存→設定完了率』72%と、権限ダイアログを出す順番の最適化
Stripe による安全な決済 · いつでもキャンセル可能
✦

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

お読みいただきありがとうございます

Rork Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • ✦コピー&ペーストで使える実装コード付き
  • ✦毎日新しい上級ガイドを追加
  • ✦¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

関連記事

◇ アプリ開発2026-04-26
Rork でネイティブ iOS アプリを作る — SwiftUI 生成から TestFlight 配信までの実践ワークフロー
Rork の新規 iPhone プロジェクトは Swift/SwiftUI で生成され、Rork Pro で App Store まで届きます。古い Expo プロジェクトとの見分け方、クレジットで見る費用、骨格プロンプト、実機確認、Xcode に降りる基準、TestFlight 提出までを手順で追います。
⬡ 開発ツール2026-05-18
Rork で作った iOS アプリを iPhone Air と 17 Pro シリーズに対応させる — 2026年の解像度ごとのレイアウト調整パターン
iPhone Air・17 Pro・17 Pro Max の新解像度で既存 Rork アプリのレイアウトが崩れる問題を、4本の iOS アプリを並行更新した経験から解説。解像度定数管理・Safe Area・壁紙フルスクリーン表示の具体的な実装パターンを示します。
⬡ 開発ツール2026-04-23
Rork アプリに Siri と Shortcuts を統合する — App Intents の Expo 実装と失敗しない設計
Rork で作った React Native アプリに Siri Shortcuts と App Intents を組み込む実装ガイド。Expo Config Plugin で native モジュールをブリッジし、AppShortcut・Entity Query・Donations・Control Center ウィジェットまで本番運用を見据えて解説します。