環境
- Mac OS Catalina
- Flutter
- Firebase
やりたいこと
下記のような形でFCMと同時に他のバックグラウンド処理をやりたい
-
FCM( remote notification )
- Foreground
- Background
- Killed
-
- Foreground
- Background
-
- Background
- Killed
問題
Workmanager等のバックグラウンド処理を実装完了して喜んでたら、iOSで(Android はwork)、FCMを使った通知が来なくなっていた…
解決策
Firebase Cloud messaging でのメソッド実装入れ替え を設定する必要があったみたい
変更するファイルは、 info.plist
と AppDelegate.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