UnityでiOSアプリを作って公開するために、iTunesConnectにアプリをアップロードしたところ、
Missing Push Notification Entitlement
と書かれたメールがiTunesConnectから届きました。アプリのアップロード自体は問題なく完了しました。
要するにアップロードされたアプリにはプッシュ通知機能が付いてるみたいだけどプッシュ通知の証明書がないよ、ってことみたいです。
とはいえ、作ったアプリにプッシュ通知の機能なんて実装していません。
どうもUnityではデフォルトでプッシュ通知の機能(API?)が有効になっているみたいです。
対処法1 プッシュ通知の証明書を作る
ある意味で手っ取り早いのはAppleDeveloperでプッシュ通知の証明書を作ってしまうことです。ダンジョンRPGのときはこれで対処してしまいました。
とはいえ、プッシュ通知を利用していないのに証明書を作るってのもなんだかすっきりしません。
証明書自体あまり理解できていないのに、さらに証明証が増えたり期限を見たりするのは面倒臭いです。
そこで次に対処法2を紹介します。
対処法2 Xcode側でプッシュ通知を無効にする
プッシュ通知の機能を無効にしてしまえばいいのですが、どうもUnityにはプッシュ通知を無効にするオプションがないそうです。
そこでXcode側にてアップロードの前にプッシュ通知を無効にします。
UnityからXcodeに出力されたプロジェクトの中にClassesフォルダがあります。
このフォルダにある
UnityAppController.mm
というファイルを開きます。
この中にある
- (void)application:(UIApplication*)application didReceiveRemoteNotification:(NSDictionary*)userInfo { UnitySendRemoteNotification(userInfo); } - (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken { UnitySendDeviceToken(deviceToken); } - (void)application:(UIApplication*)application didFailToRegisterForRemoteNotificationsWithError:(NSError*)error { UnitySendRemoteNotificationError(error); }
という箇所をコメントアウト(頭に//をつける)して無効にしてしまいます。
これでプッシュ通知は無効になるはずです。
※Unityのバージョンなどによって若干メソッドの内容が変わってるかもしれません
[参考サイト]
http://blog.77jp.net/missing-push-notification-entitlement-ios