ios 13城市飞艇背景推送失败

ios 13城市飞艇背景推送失败,ios,objective-c,urbanairship.com,Ios,Objective C,Urbanairship.com,为了尝试从正确的角度出发,我整个上午都在搜索SO和其他资源,寻找解决这个问题的方法 我有一个应用程序,它可以完美地处理无声的前台推送通知,以及标准推送通知。功能设置如下所示 触发通知的JSON如下所示 {"device_types":["android","ios"],"notification":{"ios":{"extra":{"requests":{"directives":{"forceUpdate":1}}},"content-available":1}},"audience":{"

为了尝试从正确的角度出发,我整个上午都在搜索SO和其他资源,寻找解决这个问题的方法

我有一个应用程序,它可以完美地处理无声的前台推送通知,以及标准推送通知。功能设置如下所示

触发通知的JSON如下所示

{"device_types":["android","ios"],"notification":{"ios":{"extra":{"requests":{"directives":{"forceUpdate":1}}},"content-available":1}},"audience":{"tag":"userDevice=60218"}}
我已将PushHandler委托减少到最低限度,以便进行测试,来自UA示例:

-(void)receivedBackgroundNotification:(UANotificationContent *)notificationContent completionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
// Application received a background notification
UA_LDEBUG(@"The application received a background notification");

// Call the completion handler
completionHandler(UIBackgroundFetchResultNoData);
}

-(void)receivedForegroundNotification:(UANotificationContent *)notificationContent completionHandler:(void (^)(void))completionHandler {
UA_LDEBUG(@"The application received a foreground notification %@",notificationContent);
completionHandler();
}

-(void)receivedNotificationResponse:(UANotificationResponse *)notificationResponse completionHandler:(void (^)(void))completionHandler {
UANotificationContent *notificationContent = notificationResponse.notificationContent;

NSLog(@"Received a notification response");
NSLog(@"Alert Title:         %@",notificationContent.alertTitle);
NSLog(@"Alert Body:          %@",notificationContent.alertBody);
NSLog(@"Action Identifier:   %@",notificationResponse.actionIdentifier);
NSLog(@"Category Identifier: %@",notificationContent.categoryIdentifier);
NSLog(@"Response Text:       %@",notificationResponse.responseText);

completionHandler();
}

- (UNNotificationPresentationOptions)extendPresentationOptions:(UNNotificationPresentationOptions)options notification:(UNNotification *)notification {
return options | UNNotificationPresentationOptionSound | UNNotificationPresentationOptionAlert;
} 
我还查看了设备控制台(查找x.y.z以获取标识符),我看到了以下内容:

default 09:48:34.413032 +0200   apsd    <private> _notifyForIncomingMessage <private> with guid <private>
default 09:48:34.414156 +0200   apsd    Dispatching low priority message on server: <private>
default 09:48:34.414656 +0200   SpringBoard <private> Delivering message from apsd: <private> 3373312264 <private>
default 09:48:34.414772 +0200   SpringBoard <private> responding with an ack for message with guid <private>
default 09:48:34.414816 +0200   SpringBoard <private> making delegate (<private>) calls to deliver message 3373312264 <private> for topic <private>
default 09:48:34.414842 +0200   SpringBoard <private> calling <private> connection:didReceiveIncomingMessage:
default 09:48:34.415254 +0200   SpringBoard <private> returned from <private> connection:didReceiveIncomingMessage:
default 09:48:34.415401 +0200   SpringBoard Received incoming message on topic x.y.z at priority 1
default 09:48:34.416402 +0200   apsd    Looking up connection on peer: 3be332c0   found <private>
default 09:48:34.416460 +0200   apsd    <private> informed that <private> acknowledges incoming message with guid <private> tracingUUID (null)
default 09:48:34.417113 +0200   apsd    APSMessageStore - APSIncomingMessageRecordDeleteMessageForGUID <private>
default 09:48:34.418199 +0200   SpringBoard [x.y.z] Received remote notification request BBC2-437A [ hasAlertContent: 0, hasSound: 0 hasBadge: 0 hasContentAvailable: 1 hasMutableContent: 0 pushType: Background]
default 09:48:34.418312 +0200   SpringBoard [x.y.z] Deliver push notification BBC2-437A
default 09:48:34.418372 +0200   SpringBoard [x.y.z] Request DUET delivers content-available push notification to application
default 09:48:34.418476 +0200   SpringBoard SUBMITTING: <private>
default 09:48:34.419185 +0200   dasd    Submitted Activity: com.apple.pushLaunch.x.y.z:FF3864 at priority 5 <private>
default 09:48:34.419315 +0200   dasd    <private> was in pre-running. Removing due to submission of <private>
default 09:48:34.425019 +0200   dasd    Adding a launch request (<private>) for application <private> by activity <private>
default 09:48:34.425069 +0200   dasd    Launch requests for <private>: <private>
default 09:48:34.425219 +0200   dasd    Daemon Canceling Activities: {(
    com.apple.pushLaunch.x.y.z:3B7016
)}
default 09:48:34.425282 +0200   dasd    CANCELED: com.apple.pushLaunch.x.y.z:3B7016 at priority 5 <private>!
default 09:48:34.425471 +0200   dasd    Removing a launch request for application <private> by activity <private>
error   09:48:34.425534 +0200   dasd    Activity <private> not tracked as being started, ignoring it
default 09:48:34.427417 +0200   dasd    With <private> ...Tasks pre-running in group [com.apple.dasd.defaultNetwork] are 1!
default 09:48:34.427594 +0200   dasd    Activity launch reason is not a BGTask reason. Returning YES
default 09:48:34.427720 +0200   SpringBoard cancelActivities: 1 activities were not found: <private>
default 09:48:34.427859 +0200   dasd    Unconstrained Available=1
default 09:48:34.427892 +0200   dasd    com.apple.pushLaunch.x.y.z:FF3864:[
    {name: DataBudgetPolicy, policyWeight: 1.000, response: {Decision: Must Not Proceed, Score: 0.00, Rationale: [{[/system/budgets/networking]: Required:1.00, Observed:0.00},]}}
 ], FinalDecision: Must Not Proceed}
default 09:48:34.427937 +0200   dasd    NO LONGER RUNNING [Not in application -> activity mapping] com.apple.pushLaunch.x.y.z:FF3864 ...Tasks running in group [com.apple.dasd.defaultNetwork] are 0!
在调试器中,在[UAAsyncOperation setIsFinished]中通过设置
“content available”(内容可用):1
您正在使用静默推送通知而发生中断。我不确定它在以前的iOS中是否更好,但在iOS 13中,这种通知的apns优先级为10分之5

这意味着它们可能会被延迟、分组并以突发方式交付,甚至被完全忽略

例如,如果用户强制关闭应用程序(向上滑动),则会完全忽略无声通知。此外,用户每天可以在每个应用程序中接收到的数量也有限制


话虽如此,静默推送通知并不适用于需要保证通知能够送达的情况


改为尝试常规推送通知(如果您想在向用户显示通知之前更改通知的内容,也可以使用)。它们可能会稍微延迟一点到达,但会被交付。

经过一点测试后,我可以添加一个带有后台推送的警报,如果我点击该消息,响应代理调用将被触发,但应用程序不会仅仅被推送唤醒。我想知道这是否是驾驶舱故障,也许我误解了iOS在接收到后台推送时所做的操作。经过进一步审查,这听起来是一个合理的答案。它“有时”起作用。我不得不对代码进行一些调整,以使用标准推送来确保我的更新能够及时交付。@jmf1205哦,很抱歉没有给您提供可供尝试的替代方案。。。我只是专注于解释通知“失败”的原因,却忘了尝试找到解决方法。。。我会把它添加到答案中,这样对以后阅读它的其他人会更有帮助。你的答案完全正确——我只是认为无声的通知还有很多需要改进的地方。只要我让他们“不沉默”一切都好@百事可乐你能告诉我们你在哪里找到关于apns优先级和每日限额的信息吗?
Can't end BackgroundTask: no background task exists with identifier 106 (0x6a), or it may have already been ended. Break in UIApplicationEndBackgroundTaskError() to debug