Unity

【Unity×iOS】「設定」アプリを開く方法|通知やBluetooth誘導

この記事について

この記事では、UnityアプリからiOSの「設定」アプリ(自作アプリの設定画面)を開く方法を解説します。
通知や位置情報など、ユーザーに設定を変更してもらいたい場面で、スムーズに誘導できる導線をつくることができます。

この記事でわかること

  • UnityからiOSの「設定」アプリを開く方法
  • Objective-CとC#を連携してネイティブ機能を呼び出す手順
  • 設定画面を開く実用的な活用シーン

自作アプリの設定画面を開く

iOSには、アプリごとに専用の「設定」画面が用意されています。
この画面を直接開くには、以下のObjective-Cコードを使います。

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];


UnityではこのObjective-Cコードを[DllImport]経由で呼び出す必要があります。

Objective-Cでネイティブプラグインを呼ぶ

まずは、Objective-Cファイル(拡張子:mm)を作成します。(メモ帳でも可能)

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>

extern "C" {
    void OpenAppSettings() {
        NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
        if ([[UIApplication sharedApplication] canOpenURL:url]) {
            [[UIApplication sharedApplication] openURL:url options:@{} completionHandler:nil];
        }
    }
}

作成できたら「Plugins/iOS」フォルダに保存。

Unity側のC#呼び出しコード

次に、Unity C#側で以下のスクリプトを作成します。

using System.Runtime.InteropServices;
using UnityEngine;

public class OpenSettings : MonoBehaviour
{
#if UNITY_IOS && !UNITY_EDITOR
    [DllImport("__Internal")]
    private static extern void OpenAppSettings();
#endif

    public void OpenSettingsApp()
    {
#if UNITY_IOS && !UNITY_EDITOR
        OpenAppSettings();
#else
        Debug.Log("iOSでのみ動作します。");
#endif
    }
}

作成が終わると空のGameObjectを作成し、スクリプトをアタッチします。次にButtonを用意してOnClickに「OpenSettingsApp」を呼び出すように設定しておきます。

ここまでできたらiOS実機にインストールし、実行します。

注意点

  • 実機でしか動作確認ができません(Editorでは呼び出し不可)
  • iOS 8.0以降でのみ利用可能
  • App Storeの審査で特定の用途に限り制限される可能性があります

こんな場面で活用

  • 通知許可をユーザーが拒否したときに設定を開かせる
  • 位置情報がオフの場合に設定を開かせる
  • Bluetooth設定を促したい場合など

まとめ

Unityからでも、iOSのネイティブ機能を使えば「設定」アプリを開くことができます。ユーザー体験の向上のためにも、必要なタイミングで設定画面に誘導できるようにしましょう!