【问题标题】:Apple push notification-like service, only when running in foreground苹果推送通知类服务,仅在前台运行时
【发布时间】:2013-10-29 20:45:29
【问题描述】:

我有一个 iOS 应用程序需要在前台自动运行时更新其内容。如果在后台,我的应用不需要更新。

有一种现有的方法可以做到这一点,即 APNS(Apple Push Notification Service)。 因为我不希望用户在后台看到通知消息,所以使用没有警报或消息的推送通知可能是一种解决方案。

但是,如果使用 APNS,iOS 会要求用户确认他们是否希望通过我的应用接收通知。我认为用户在被操作系统询问时可能会感到困惑,因为我的应用实际上并没有向用户推送通知。

我当前使用的方法是每 30 秒拉一次我的 API,以查看是否有新内容可用。如果用户太多,此方法将失败。

是否有任何类似 3rd 方推送通知的服务在应用程序仅在前台运行时提供通知? (无需在后台收到通知)

【问题讨论】:

    标签: ios apple-push-notifications foreground


    【解决方案1】:

    您可以为此使用静默通知,在此 在 WWDC 2013 的“What's New with Multitasking”演示文稿中,有一个关于静默推送通知的部分。如果您仅将 content-available 设置为 1 发送 APS 有效负载,用户将不会收到通知。

    通知到达application:didReceiveRemoteNotification:fetchCompletionHandler

    你的有效载荷就像

    { 
      aps: {
              content-available: 1,
              sound: "default"
           }
    }
    

    【讨论】:

    • 谢谢。第一次注册通知时(registerForRemoteNotificationTypes:),iOS 要求用户确认。但是,用户可能会因为我不向他们发送通知消息而感到困惑。
    【解决方案2】:

    如果是push notification,用户必须在应用程序第一次运行时接受push notification。您也可以设置silent push notification,对于此用户,在application run loop 期间不会收到任何收到notification 的警报。

    如果你想避免push notification,那么你只能设置一个你已经在做的NSTimer

    可能有第三种情况,应用程序仅在涉及foreground 时与服务器同步。为此,您可以参考我的this 帖子。

    【讨论】:

    • 我认为最好的解决方案是显示一个简短的描述,告诉用户打开推送通知会自动更新内容。
    • 可能是,但在用户在推送通知警报上按NO 后显示此警报。
    猜你喜欢
    • 2010-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-08
    • 2011-12-03
    相关资源
    最近更新 更多