Workmanager等のバックグラウンド処理を入れたら、FCMが使えなくなった時の対処法


環境

  • Mac OS Catalina
  • Flutter
  • Firebase

やりたいこと

下記のような形でFCMと同時に他のバックグラウンド処理をやりたい

問題

Workmanager等のバックグラウンド処理を実装完了して喜んでたら、iOSで(Android はwork)、FCMを使った通知が来なくなっていた…

解決策

Firebase Cloud messaging でのメソッド実装入れ替え を設定する必要があったみたい

変更するファイルは、 info.plistAppDelegate.m の2つ

info.plist
    ...
    <key>FirebaseAppDelegateProxyEnabled</key>
    <false/> 
   ...
AppDelegate.m
@import Firebase;

void registerPlugins(NSObject<FlutterPluginRegistry>* registry) {
  [GeneratedPluginRegistrant registerWithRegistry:registry];
}

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application
    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    //Other plugins
   [GeneratedPluginRegistrant registerWithRegistry:self];
   return [super application:application didFinishLaunchingWithOptions:launchOptions];
}

// このメソッドを追加
- (void)application:(UIApplication *)application
    didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
    [FIRMessaging messaging].APNSToken = deviceToken;
    [super application:application didRegisterForRemoteNotificationsWithDeviceToken:deviceToken];
}


@end