【问题标题】:Push notification when app in background当应用程序在后台时推送通知
【发布时间】:2019-04-03 14:00:40
【问题描述】:

假设一个场景:有 2 个用户用户 A 和用户 B。用户 A 向用户 B 发送推送通知,但当时应用程序在用户 B 的后台。现在的问题是用户 B 没有收到通知,因为应用程序在后台,但是一旦应用程序再次被购买到前台,就会收到通知。有什么方法可以让用户 B 也能在后台状态下获得通知。 此外,如果用户在设备的“设置”应用中将应用程序的警报样式配置为“无”,这是否会阻止他在应用程序处于后台时接收通知?

提前致谢!!

【问题讨论】:

  • 当你阅读推送通知“应用程序在后台,但一旦应用程序再次被购买到前台就会收到”这是错误的陈述;

标签: iphone ios push-notification apple-push-notifications


【解决方案1】:

如果用户禁用警报通知,他将不会收到此类警报。 否则,即使应用程序未运行,他也会立即收到警报。

【讨论】:

    【解决方案2】:

    我从您的问题中了解到,您希望在后台模式下收到通知时运行一些代码...

    首先在你的目标菜单->功能->在后台模式

    然后在你的 AppDelegate 中添加你的代码在应用程序处于后台模式时触发的方法下

    - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
    fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {}
    

    **但是记住最重要的事情**

    您的推送通知结构必须包含 content_avialable = 1

    示例:

        {
        aps =     {
            alert =         {
                body = "new message";
                title = "I";
            };
            "content_available" = 1;
        };
        "click_action" = "GOTO_M";
        data =     {
    
        };
        "gcm.message_id" = ;
        "google.c.a.e" = 1;
    }
    

    【讨论】:

      【解决方案3】:

      这就是推送通知的真正意义所在。如果您允许应用程序向您发送推送通知,即使应用程序在后台,您也会收到它们。我建议您阅读如何发送推送通知。

      另一种选择是让应用本身显示通知,这仍然可以在应用处于后台时完成。

      当他们将警报样式设置为无并关闭通知时,他们将不再收到推送通知。但话又说回来,如果他们不想,他们不应该得到任何东西。

      【讨论】:

        【解决方案4】:

        关于你的第二个问题:

        如果用户将应用程序的警报样式配置为 设备设置应用程序中的“无”,这会阻止他 应用在后台时收到通知?

        如果用户已将“无”设置为警报样式,则会收到通知但不会显示。但是,用户仍然可以在通知中心看到该推送消息。那就是手机不会在屏幕上显示警报。

        现在回答您的第一个问题,当应用程序处于后台时,如果正确实施推送通知,也会收到。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-12-07
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多