gpt4 book ai didi

ios - 从推送通知更新 sqlite 数据库,应用程序已关闭且未在后台 iOS 中运行

转载 作者:行者123 更新时间:2023-11-29 11:41:36 24 4
gpt4 key购买 nike

当收到通知并且应用程序被用户关闭/终止时,我正在尝试更新本地 sqlite 数据库。当应用处于后台或事件模式时一切正常。

引用:REFERENCE STACK LINK 1

REFERENCE STACK LINK 2

这是我正在尝试的代码:

-(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 状态下工作。这个问题有解决办法吗?

- (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
{
}
}

最佳答案

-(void)application:(UIApplication )application didReceiveRemoteNotification:

仅当您的应用程序处于后台时用户点击通知横幅时才会调用方法。如果您的应用程序被杀死,那么您需要处理

中的横幅点击

didFinishLaunchWithOptions

方法。您可以使用以下代码来了解您是否点击横幅并且应用程序被杀死。

// Push Notification Handling
[UIApplication sharedApplication].applicationIconBadgeNumber = 0;

NSDictionary *pushDic = [[NSDictionary alloc]init];
pushDic = [launchOptions objectForKey:@"UIApplicationLaunchOptionsRemoteNotificationKey"];

if (pushDic)
{
NSLog(@"got push when app killed->%@",pushDic);
}

关于ios - 从推送通知更新 sqlite 数据库,应用程序已关闭且未在后台 iOS 中运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46212370/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com