gpt4 book ai didi

ios - 应用程序处于非事件状态时无法接收静默通知 iOS

转载 作者:行者123 更新时间:2023-11-29 11:51:34 25 4
gpt4 key购买 nike

我正在开发一个应用程序,我正在使用静默推送通知来发送一些数据。当应用程序处于事件状态时,推送工作正常,但如果我刷出应用程序或它处于非事件状态,我的应用程序将不会收到推送通知。我在功能下启用了后台模式推送通知,还在 info.plist 中添加了所需的后台模式 key

这是我随推送一起发送的示例数据

  {
"aps": {
"content-available": 1
},
"yourdatakey":{data}
}

我应该怎么做才能解决这个问题??..iOS 应用程序可以在非事件模式下接收静默推送通知吗?

    -(void) application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void(^)(UIBackgroundFetchResult))completionHandler
{
if( SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO( @"10.0" ) )
{
NSLog( @"iOS version >= 10. Let NotificationCenter handle this one." );
return;
}
NSLog( @"HANDLE PUSH, didReceiveRemoteNotification: %@", userInfo );

if( [UIApplication sharedApplication].applicationState == UIApplicationStateInactive )
{
NSLog( @"INACTIVE" );
completionHandler( UIBackgroundFetchResultNewData );
}
else if( [UIApplication sharedApplication].applicationState == UIApplicationStateBackground )
{
NSLog( @"BACKGROUND" );
completionHandler( UIBackgroundFetchResultNewData );
}
else
{
NSLog( @"FOREGROUND" );
completionHandler( UIBackgroundFetchResultNewData );
}
}

- (void)userNotificationCenter:(UNUserNotificationCenter *)center
willPresentNotification:(UNNotification *)notification
withCompletionHandler:(void (^)(UNNotificationPresentationOptions options))completionHandler
{
NSLog( @"Handle push from foreground" );
}

- (void)userNotificationCenter:(UNUserNotificationCenter *)center
didReceiveNotificationResponse:(UNNotificationResponse *)response
withCompletionHandler:(void (^)())completionHandler
{
NSLog( @"Handle push from background or closed" );
}

推送在我的应用程序中起着至关重要的作用,不希望有任何延迟。我应该怎么做才能立即收到推送??...

最佳答案

据我所知,静默推送通知应该如下所示:

{ 
"to" : "<DEVICE_ID>",
"priority" : "high",
"content_available" : true,
"data" : { "custom_key":"custom value", "custom_key_2":"custom value 2" }
}

对我来说,当应用程序处于前台或后台时,这几乎会立即发送。但是,当应用程序处于非事件状态时,它根本不会通过(它不会启动应用程序来处理消息)。

如果我在消息中添加以下内容:

  "notification" : { "body" : "Notification Text", "sound" : "chime.aiff" }

当应用程序处于非事件状态时,它会播放铃声并在通知区域显示“通知文本”,但仍不会启动应用程序来处理消息的数据部分。我知道这可能是设计使然,但我使用它来确认我在应用程序处于非事件状态时得到了一些东西。

因此,这可能会帮助您解决一半的问题(立即收到推送通知),但恐怕我仍在尝试在应用程序处于非事件状态时让它正常工作。

编辑:如果用户强行关闭应用程序(从任务管理器向上滑动),Apple 会在收到推送通知时禁用启动应用程序。对此您无能为力它。 Apple 的文档指出,如果您再次手动启动该应用程序或重新启动设备,它将重新启用从静默推送通知启动该应用程序,但我没有发现这种情况。我认为简短的回答是:“当 Apple 决定让它们工作时,iOS 上的静默推送通知工作。”我想如果您需要一个以预期方式运行的移动操作系统,请将您的用户引导至 Android。

关于ios - 应用程序处于非事件状态时无法接收静默通知 iOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40909923/

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