スマゲ

スマートなゲームづくりを目指して日々精進

【iOS】Unityで通知許可のダイアログを出す

Unityで通知許可のダイアログを出します

■ダイアログ
f:id:sanukin39:20160417122127p:plain

■ダイアログの必要性
iOS8から、ユーザーに対して上記のポップアップにより通知の許可を得る必要がある。許可を得ないままだと、通知を登録してもユーザーに届かなくなる

■アラートを出すスクリプト
Assets/Plugin以下にnotification.mを作成し、以下のように記述

void askNotificationPermission(){
    float osVersion = [[[UIDevice currentDevice] systemVersion] floatValue];
    if(osVersion >= 8.0){
        UIUserNotificationType types = UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert;
        UIUserNotificationSettings *mySettings = [UIUserNotificationSettings settingsForTypes:types categories:nil];
        [[UIApplication sharedApplication] registerUserNotificationSettings:mySettings];
    }
}

■Unityからの呼び出し
Interopservicesの名前空間を追加

using System.Runtime.InteropServices;

以下のメソッドで呼び出し

[DllImport ("__Internal")]
private static extern float askNotificationPermission();

void Start(){
#if !UNITY_EDITOR && UNITY_IOS
    askNotificationPermission();
#endif
}

■通知ダイアグを出すタイミングについて
通常のゲーム、アプリであれば起動時にこのダイアログを出すものがほとんどです。しかし、ユーザーから見ると何の通知が来るのかわからないので、ひとまず許可しないを選ぶことがありそうです。
ダイアログをだすタイミングを工夫して許諾率を上げるためには
・チュートリアル終了時などに、通知を許可することによるメリットを伝えた上でダイアログをだす
・アプリのUIで通知許可を聞き、そこで許可されて初めてダイアログをだす
などが考えられます