iOS报摊:推送通知不会在后台启动应用程序

iOS报摊:推送通知不会在后台启动应用程序,ios,push-notification,newsstand-kit,Ios,Push Notification,Newsstand Kit,我正在应用程序中实现报摊功能,尽管应用程序收到推送通知,但它不会在后台模式下启动。 如果我点击通知警报,应用程序将启动,我可以看到“内容可用”:字典中有1,并且问题已下载,但应用程序不会自动启动 我在plist中添加了: <key>UIBackgroundModes</key> <array> <string>newsstand-content</string> </array> 我还看到,我的应用程序没有显示在“

我正在应用程序中实现报摊功能,尽管应用程序收到推送通知,但它不会在后台模式下启动。
如果我点击通知警报,应用程序将启动,我可以看到“内容可用”:字典中有1,并且问题已下载,但应用程序不会自动启动

我在plist中添加了:

<key>UIBackgroundModes</key>
<array>
    <string>newsstand-content</string>
</array>
我还看到,我的应用程序没有显示在“设置->商店->自动下载”下(其他杂志也出现在那里)

我错过什么了吗?这应该在沙箱环境中工作吗?

一些澄清

  • 如果您没有在您的报摊有效负载中发送“警报”,则 仅提供内容:1在其中,不会添加任何内容 通知中心
  • 报摊通知启动应用程序并不意味着应用程序将出现在前台(就像用户点击应用程序图标一样)。这只是意味着,如果应用程序不在后台,它将由iOS在后台启动->调用appDelegate的didFinishLaunchingWithOptions,其中应用程序应检查它是否是一个报摊通知,以通过在报摊队列中添加资产来安排下载。资产路径可以是NS有效负载的一部分(提供<有效负载限制256字节)
  • NSDictionary*有效负载=[launchOptions objectForKey:UIApplicationLaunchActionsRemoteNotificationKey]

    if(有效负载和[[payload objectForKey:kContentAvailablePush]区分大小写比较:@“1”]==SensorDeredName) { NSLog(@“因NS通知而启动”);
    }

    确保您的plist中设置了UINewsstandApp=YES

    您必须注册报摊通知,才能显示在设置中并接收“报摊通知”。要注册,请将其添加到您的
    应用程序:didFinishLaunchingWithOptions:

    // Add registration for newsstand notifications
    // In your application:didFinishLaunchingWithOptions:
    
    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:
      UIRemoteNotificationTypeNewsstandContentAvailability];
    
    用户将被要求是否接受后台下载

    看看这个关于报摊应用程序的完整教程:

    {“aps”:{“badge”:1,“alert”:“test”,“content available”:1}
    这是一个正确的负载。
    {“aps”:{“badge”:1,“alert”:“test”},“content available”:1}
    这是一个错误的有效负载。

    这是有效负载中存在可用内容时发生的情况:

    • 如果应用程序被挂起,系统将把它带到后台
    • 若应用程序被用户杀死,则不会发生任何事情,且应用程序仍处于未运行状态
    必须有一个用户操作,才能通过将警报消息添加到推送通知中来启动应用程序

    来源


    然而,这并不能解决你的问题。作为解决方法,您可以使用后台提取,它会每隔一定的时间间隔唤醒应用程序。

    我理解,这就是我遇到的问题。当收到推送时,应用程序不会在后台启动。哦,在这种情况下,我不确定你那边的问题是什么。为了澄清您的疑问,是的,它确实在沙箱环境中工作。要将通知添加到信盒中,必须使用键
    警报。需要一个消息字符串来显示某些内容!如果答案中提供苹果文档链接会更好。谢谢,这个怎么样?这是否正确,AnyHashable(“aps”):{alert={body=“*Mi note 4已创建组Kik*”;title=“Mi note 4”;};badge=23;“内容可用”=1;}
    
    // Add registration for newsstand notifications
    // In your application:didFinishLaunchingWithOptions:
    
    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:
      UIRemoteNotificationTypeNewsstandContentAvailability];