通知が受信され、アプリケーションがユーザーによって閉じられ/強制終了されたときにローカルのsqliteデータベースを更新しようとしています。アプリがバックグラウンドモードまたはアクティブモードの場合はすべて正常に動作します。プッシュ通知からのsqlite dbの更新アプリケーションが閉じていて、バックグラウンドで実行されていないiOS
参考:
-(void)application:(UIApplication)application didReceiveRemoteNotification:(NSDictionary)userInfo fetchCompletionHandler:(nonnull void (^)(UIBackgroundFetchResult))completionHandler{
NSLog(@"App Background :%@",userInfo);
if(application.applicationState == UIApplicationStateInactive) {
NSLog(@"Inactive");
//Show the view with the content of the push
[self BackgrounCall:userInfo];
completionHandler(UIBackgroundFetchResultNewData);
} else if (application.applicationState == UIApplicationStateBackground) {
NSLog(@"Background");
//Refresh the local model
[self BackgrounCall:userInfo];
completionHandler(UIBackgroundFetchResultNewData);
} else {
NSLog(@"Active");
//Show an in-app banner
[self BackgrounCall:userInfo];
completionHandler(UIBackgroundFetchResultNewData);
}
}
質問:なぜそれがアプリケーションINACTIVE状態で動作していないがREFERENCE STACK LINK 1
ここでは、私がしようとしているコードです。この問題の解決法はありますか?
- (BOOL)application:(UIApplication)application didFinishLaunchingWithOptions:(NSDictionary)launchOptions {
// Override point for customization after application launch.
[[Database shareDatabase] createEditableCopyOfDatabaseIfNeeded];
if(launchOptions != nil)
{
// opened from a push notification when the app is closed
NSDictionary* userInfo = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
if (userInfo != nil)
{
NSLog(@"userInfo->%@", [userInfo objectForKey:@"aps"]);
[self application:application didReceiveRemoteNotification:launchOptions[UIApplicationLaunchOptionsRemoteNotificationKey]];
}
}
else
{
}
}
ユーザーがアプリのクリック通知を開くと機能しています。アプリが殺された、通知が受け取られた、ユーザーがアプリケーションアイコンを使用してアプリを開き、通知がない場合、sqliteの更新はありません –
didFinishLaunchWithOptionsメソッドで上記のコードを使用していますか? –
はい...上記の更新された質問を確認してください。私が何か悪いことをしているなら、私を修正してください。 –