グローバル企業をしっかりサポート!多言語対応実績多数、チラシやSNS運営からWEB制作までお任せください!

FlutterでFCMプッシュ通知をバックグラウンドで受け取るための方法

更新日:
 FlutterでFCMプッシュ通知をバックグラウンドで受け取るための方法

Flutterでアプリ開発を進めるにあたって、プッシュ通知は必須機能のひとつですが、Firebase Cloud Messagingの利用がもっとも手軽に始められます。FCMはGoogleのサービスということもありますので、Androidの設定は問題なく行えるのですが、iOSのプッシュ通知がうまくいかず悩んでいる方も多いと思います。今回はiOSでも正しく通知を受信できるようにする方法を紹介したいと思います。

Firebase Cloud Messagingとは

Firebase Cloud Messaging(FCM)はメッセージを送信するためのメッセージングサービスです。新しいメールやその他のデータがあることをアプリに通知メッセージを送信することができます。Flutterでアプリ開発を進めるにあたり、導入しておきたい機能のひとつです。

FCMはFirebaseサービスの一つで、導入方法はすでに多くのブログや動画でも紹介されていますので今回は導入方法は割愛し、iOSで正しくプッシュ通知が行われるために、ほかでは紹介されていなかったところだけを取り上げていきたいと思います。開発に携わっている皆さんの参考になれば幸いです。


AppDelegate.swiftの修正

ios/Runner/AppDelegate.swiftを以下の通りに修正。



import UIKit
import Flutter
import Firebase

@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate {
  override func application(
    _ application: UIApplication,
    didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
  ) -> Bool {

    FirebaseApp.configure()

    if #available(iOS 10.0, *) {
      // For iOS 10 display notification (sent via APNS)
      UNUserNotificationCenter.current().delegate = self

      let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound]
      UNUserNotificationCenter.current().requestAuthorization(
        options: authOptions,
        completionHandler: { _, _ in }
      )
    } else {
      let settings: UIUserNotificationSettings =
        UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil)
      application.registerUserNotificationSettings(settings)
    }

    application.registerForRemoteNotifications()
    
    GeneratedPluginRegistrant.register(with: self)
    return super.application(application, didFinishLaunchingWithOptions: launchOptions)
  }
}



Podfile内にpod 'Firebase/Messaging'を追加 use_modular_headers!の下あたりに追加します。


target 'Runner' do
use_frameworks!
use_modular_headers!

pod 'Firebase/Messaging'

flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
end


APNsを利用する際に必要な証明書をp8ではなくp12を利用する

Firebaseのコンソールページでプロジェクトの概要設定->Cloud Messagingタブへ移動。登録したiOSアプリのAPNs認証キーで開発用と本番環境用APNs証明書(p12)をアップロード