4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

アプリ未起動状態からのプッシュ通知のログを確認する

Last updated at Posted at 2023-10-11

やりたいこと

プッシュ通知について
・フォアグラウンド
・バックグラウンド
・未起動
の内、未起動状態からのログを確認したい。

使用するもの

  • OSLog
  • コンソール.app
  • 実機端末(シミュレーターでもOK?)

image.png

OSLog

OSLog+Ext.swift
import os

extension OSLog {
    /// Console.appで"サブシステム"の【FCM】でフィルタリングするとログを確認できる
    static let fcmConsole = Logger(subsystem: "【FCM】", category: "Console")
}
AppDelegate.swift
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil) -> Bool {
    OSLog.fcmConsole.debug("【start】didFinishLaunchingWithOptions")
    OSLog.fcmConsole.debug("launchOptions = \(String(describing: launchOptions))")

コンソール.app

  • Macアプリ一覧からコンソールアプリを起動
  • 対象デバイスを選択
  • 画面右上のフィルターでサブシステムの【FCM】で絞り込み

スクリーンショット 2023-10-11 10.38.18.png

課題:

  • launchOptionsのログが<private>となって閲覧できていない
  • 多分FCM通知は今はdidFinishLaunchingWithOptionsでは取れない

launchOptionsのログが<private>となって閲覧できない件の対応

Loggerのデフォルトが.privateになっているようなので、.publicで指定する。

OSLog.fcmConsole.debug("launchOptions = \(String(describing: launchOptions), privacy: .public)")

多分FCM通知は今はdidFinishLaunchingWithOptionsでは取れないの対応

UNUserNotificationCenterDelegateを使う

AppDelegate.swift
extension AppDelegate: UNUserNotificationCenterDelegate {
    // アプリがフォアグラウンドでプッシュ通知を受信した場合に呼ばれる
    func userNotificationCenter(_ center: UNUserNotificationCenter,
                                willPresent notification: UNNotification,
                                withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
        let userInfo = notification.request.content.userInfo
        OSLog.fcmConsole.debug("userInfo = \(String(describing: userInfo), privacy: .public)")
        completionHandler([.banner, .badge, .sound])
    }

    // 通知センター等でプッシュ通知をタップした場合に呼ばれる
    func userNotificationCenter(_ center: UNUserNotificationCenter,
                                didReceive response: UNNotificationResponse,
                                withCompletionHandler completionHandler: @escaping () -> Void) {
        let userInfo = response.notification.request.content.userInfo
        OSLog.fcmConsole.debug("userInfo = \(String(describing: userInfo), privacy: .public)")
        completionHandler()
    }
}

プッシュ通知をタップしてアプリ起動する
スクリーンショット 2023-10-11 11.22.53.png
これでログを取得できるようになった。

Console.appについてのトラブルシューティング

  • ログが出力されないとき
    • MAC-iPhoneをケーブルで接続する
    • 同一のWi-Fiに接続する
    • Console.appを再起動する
  • ログが重複して出力されるとき
    • Console.appを再起動する

参考

4
4
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
4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?