CloudKit推送通知,应用程序在后台运行

2024-03-24

iOS8.2-app在后台运行时,不会收到任何推送通知,

而如果它在前台运行,它可以很好地接收推送通知。

知道发生了什么事吗?

运行于CloudKit Development模式,订阅用于添加、编辑和删除,并使用以下内容didReceiveRemoteNotification:

-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
{
    NSLog(@"Push received.");

    NSDictionary * apsDict = [userInfo objectForKey:@"aps"];

    NSString * alertText = [apsDict objectForKey:@"alert"];

    //TODO: get the record information from the notification and create the appropriate message string.

    if(application.applicationState == UIApplicationStateActive) {
        UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@"Notification" message:alertText delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles: nil];
        [alert show];
    } else {

        if([application currentUserNotificationSettings].types & UIUserNotificationTypeAlert) {
            UILocalNotification * localNotification = [[UILocalNotification alloc] init];
            localNotification.alertBody = NSLocalizedString(@"alert body", nil);;
            localNotification.fireDate = [NSDate dateWithTimeIntervalSinceNow:2];
            [application presentLocalNotificationNow:localNotification];
        }
    }

    completionHandler(UIBackgroundFetchResultNoData);
}

当您进入应用程序设置功能时,是否为后台模式启用了远程通知?

See this screenshot: enter image description here

除此之外,您是否注册了所有通知类型,如下所示:

application.registerUserNotificationSettings(UIUserNotificationSettings(forTypes: .Alert | .Badge | .Sound, categories: nil))
    application.registerForRemoteNotifications()

在您的订阅中,您是否为 CKNotificationInfo 发送alertBody 或alertLocalizationKey?如果您这样做,那么您将已经从操作系统收到通知,并且无需设置本地通知。

更新:正如下面Porton提到的,这个问题通过填写alertBody解决了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CloudKit推送通知,应用程序在后台运行 的相关文章

  • iOS:移动设备管理

    我对 MDM 有点困惑 希望有人可以帮助我 我已经研究了Apple网站上有关iOS MDM的文档 但仍然感到困惑 我有一些问题 MDM服务器每次需要执行命令时是否都在与APNS通信 设置我们自己的 MDM 服务器是否非常复杂以及如何设置我们
  • 如何使用 Objective C 将推送通知的设备令牌和其他用户设置发送到服务器上的 SQL 表

    理想情况下 我想使用 POST 向推送通知服务器发送 HTTP 请求 其中包含设备令牌以及一些用户定义的设置 从那里我可以在服务器上设置一个 php 脚本来处理传入的数据并将其输入到 SQL 表中 如果这是唯一的方法 我将如何从 Objec
  • Swift 中基于内容的动态 UITextView 大小

    我不认为有人可以指导我在仍然使用自动布局的同时动态调整 UITextView 大小的正确方法 使用 Swift 就是这样 我尝试以编程方式调整底部约束 试图让 UITextView 拥抱内容 但我不知道如何获取 UITextView 内容的
  • 在 Swift 中以编程方式创建 UITableViewController

    正如标题所示 我试图以编程方式设置 UITableViewController 经过几个小时的尝试 我希望有人可以帮助我 是的 我已经查看了有关此事的其他帖子 import UIKit class MainViewController UI
  • WKWebView 缓存清单不适用于 IOS8

    缓存清单工作正常 并且在 IOS 8 的 safari 中触发事件 在 WKWebView 中根本不起作用 还有其他人解决这个问题吗 导入 UIKit 导入WebKit class ViewController UIViewControll
  • 如何取消或停止客户端的推送通知?

    我有一个向客户端发送推送通知的网络服务器 客户端可以拦截推送通知UNNotificationServiceExtension在 iOS 10 上并更改内容 现在我想取消在某些通知上在客户端显示的推送通知 我怎么做 我尝试做 self con
  • iOS 10 通知内容扩展未加载

    我有一个简单的应用程序来处理推送通知 我的通知服务扩展正在运行 我可以发送带有图像 URL 的远程通知并加载它 我似乎无法让通知内容扩展正常工作 我已经看过多个教程 他们都说 只需从目标菜单创建一个通知内容扩展 然后在通知内容扩展 Info
  • 使用启动屏幕 (.xib) 会停止缩放

    据我了解 iOS 8 的应用程序应该有一个故事板文件作为启动屏幕而不是图像 我创建了一个非常简单的启动屏幕文件 它具有任意宽度和任意高度 并且有一个纯文本标签 上面写着 占位符 并将其设置为我的启动屏幕 然而 当我尝试在 iPhone 6
  • Flutter:即使应用程序关闭也推送通知

    我用 flutter 构建了一个应用程序 它的作用就像一个提醒 即使应用程序关闭 如何向用户显示通知 为了提醒我会推荐Flutter 本地通知插件 https pub dev packages flutter local notificat
  • 将 NSSet 转换为 Swift 数组

    在 CoreData 中我定义了一个无序的一对多关系 这种关系在 Swift 中定义如下 NSManaged var types NSMutableSet 然而 为了最好地使用 Swift 我想使用一个普通的 Swift 数组 比如Type
  • “便捷初始化程序缺少对另一个初始化程序的‘自我’调用”

    我正在尝试将我的代码转换为 iOS 8 项目 我需要一些关于如何修复此警告的解释 Convenience initializer missing a self call to another initializer 在此代码上 instan
  • 检查自定义键盘扩展的完全访问权限

    我需要检查自定义键盘扩展的完全访问权限 我找到了这个链接 如何检查 iOS 8 中的 允许完全访问 是否已启用 https stackoverflow com questions 25472388 how to check the allo
  • iOS 8 使用 UITextView 自动调整 UITableViewCell 大小

    iOS 8 引入了一种让 tableView 根据内容自动调整单元格高度的方法 通过 AutoLayout in viewDidLoad tableView rowHeight UITableViewAutomaticDimension t
  • iOS 8 UITableView 分隔符插入 0 不起作用

    我有一个应用程序 其中UITableView的分隔符插入设置为自定义值 右0 Left 0 这完美地适用于iOS 7 x 但是在iOS 8 0我看到分隔符插入设置为默认值15在右侧 即使在 xib 文件中它设置为0 它仍然显示不正确 我该如
  • NSRange 到 Range

    我怎样才能转换NSRange to Range
  • 通过应用程序组在应用程序之间通信和保存数据

    iOS 8 昨天发布了一个有关应用程序组的新 API 以前在应用程序之间共享数据和通信有点混乱 我相信这正是应用程序组旨在纠正的问题 在我的应用程序中 我启用了应用程序组并添加了一个新组 但我找不到任何有关如何使用它的文档 文档和 API
  • Google Cloud Messaging 显示成功消息但未发送 iOS

    所以我在使用 Google Cloud Messaging 时遇到了一个非常奇怪的问题 我遇到的问题是它正在成功注册设备 并且当发送消息时我会收到来自 Google 的成功消息 但设备永远不会收到任何消息 我从 GCM 得到的消息是 res
  • 在 Xcode 6 中定位 iOS 7.1 或 7.0 时,应用程序中出现黑条

    重现步骤 使用Xcode6创建一个新项目 单视图模板 仅限iPhone Objective C 导航到项目设置并将部署目标从 8 0 更改为 7 1 在安装了 7 1 的 iPhone5 S 或 iPhone5 s 7 1 模拟器中运行应用
  • 警告:所有应用程序都应包含armv7架构(当前archs =“arm64”)

    警告 所有应用程序都应包含 armv7 架构 当前架构 arm64 我读过其他关于早期版本的 XCode 的文章 但这些示例都没有帮助解决这个问题 看来无论我在设置中添加什么 如下所示 都会有帮助 我仍然遇到同样的错误 项目和目标设置看起来
  • ios 在后台处理推送通知

    我想保存应用程序处于后台状态时到达的推送通知 我知道关于 void application UIApplication application didReceiveRemoteNotification NSDictionary userIn

随机推荐

  • go build 找不到修订版本

    我在计算机 A 上开发了一个存储库 并创建了一个我签入的 go mod go sum 我使用计算机 B 上的 go mod go sum 文件提取该存储库 但是当我尝试构建该程序时 无法满足模块约束 go build go finding
  • “太多的值无法解压”,迭代字典。键=>字符串,值=>列表

    我正在得到too many values to unpack错误 知道我该如何解决这个问题吗 first names foo bar last names gravy snowman fields first names first nam
  • 有没有办法记录对给定类的每个方法的每次调用?

    我正在寻找一种方法来记录对给定 UIView 的每个方法的每次调用 以进行调试 这是我为此编写的代码 https github com xlc XLCXcodeAssist blob master XLCXcodeAssist XLCPro
  • Homebrew:brew doctor 抛出很多错误,我该如何修复它们? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我很久以前就安装了 homebrew 但用得并不多 但我正在考虑重新开始使用它 因为它是一个非常有用且易于使用的软件包安装程序 不管怎样 我运行了br
  • 这个 if 语句如何避免使用分号?

    如何在不使用分号的情况下打印 hello world 一直是一个流行的问题 我知道很多代码 但这一个听起来很奇怪 因为我无法理解其背后的逻辑 请帮我看看它是如何打印的 if printf hello world 关于分号的部分只是一点 我比
  • 为什么SSIS创建这个任务失败?

    我编写了以下代码来实现通过 HTTP 获取文件的 SSIS 控制流任务 using System using Microsoft SqlServer Dts Runtime namespace HttpTask DtsTask Displa
  • 防止 ASP.NET Core 中拒绝服务 (DoS) 攻击的最佳实践

    我正在寻找有关 ASP NET Core Web 应用程序的拒绝服务 DoS 保护 缓解的最佳实践建议 指南 可能来自 Microsoft 到目前为止我发现的主要两个选项是 AspNetCore速率限制 https github com s
  • == 与 .NET 中的 Object.Equals(object)

    因此 当我还是个新手时 与现在的新手相比 我曾经认为这两个东西是彼此的语法糖 即使用一个而不是另一个只是个人喜好 随着时间的推移 我发现这两者不是一回事 即使在默认实现中也是如此 请参阅this http web archive org w
  • 是什么让Python3的打印函数线程安全?

    我在各种邮件列表和论坛上看到人们不断提到 Python 3 中的打印函数是线程安全的 根据我自己的测试 我认为没有理由怀疑这一点 import threading import time import random def worker l
  • 从引用创建shared_ptr

    我对 C 比较陌生 这似乎是一个菜鸟问题 但我无法使用互联网上的其他资源来解决它 我正在尝试从引用创建一个shared ptr 我有以下内容Book class include
  • 将“正常”std::string 转换为 utf-8

    让我们看看我是否可以在没有太多事实错误的情况下解释这一点 我正在编写一个字符串类 我希望它使用utf 8 存储在 std string 中 因为它是内部存储 我希望它能够同时 正常 std string and std wstring作为输
  • 如何仅删除一些方面标签?

    Using facet wrap 是否可以只删除一些方面标签 在下面的示例中 我希望物种标签仅出现在每行的第一列中 我知道我可以使用labeller功能 但不包括如何更改单个标签 data iris library tidyr librar
  • 在 firebase 中看不到请求标头的值?

    我执行以下操作 var headers new Headers headers append bunny test headers append rabbit jump fetch blahurl com someservice heade
  • 为什么 svcutil.exe 的 /reference 选项不起作用?

    我正在尝试使用 svcutil exe 从一组 wsdl 文件中仅生成服务契约 接口 当我这样做时 从 http 托管的 wsdl 它会获取包含的模式并为它们生成所有代码 Great 我会做什么REALLY然而 我喜欢做的是使用一组已经使用
  • SVG 线条动画不起作用

    I am trying to create an effect where smoke comes out of a vessel Like this example where smoke comes out of a coffee cu
  • 删除记录前检查规则违规情况

    我想为我的 SQL Server 2005 数据库中的许多实体实施 软删除 方案 我的意思是 如果没有违反引用完整性规则 我想从表中删除一行 否则我将在记录上设置一个标志以表示它已被删除 我希望强制执行此 软删除 模式的表必须将 无操作 应
  • 如何将两个小部件放置在同一行中?

    我有国家 地区代码 DropdownMenu 和电话 TextFormField 如何将它们放在同一级别 我尝试过对齐小部件 Row children
  • 更改 Android numberpicker 分隔线颜色

    我想将上面显示的数字选择器的分隔线颜色 蓝色 更改为透明 我尝试了很多事情 比如 number picker setDividerDrawable getResources getDrawable R color transparent n
  • “可选类型‘字符串’的值?”没有打开;您是想使用“!”吗?或者 '?' ?”

    我研究 iOS 或 Swift 的时间并不长 通过最新的 Xcode 更新之一 我在计算机上制作的许多应用程序现在似乎都在使用过时的语法 Xcode 告诉我们将其转换为新语法 但通常这并不能解决任何问题 而且我遇到了一个新问题 这是我在语法
  • CloudKit推送通知,应用程序在后台运行

    iOS8 2 app在后台运行时 不会收到任何推送通知 而如果它在前台运行 它可以很好地接收推送通知 知道发生了什么事吗 运行于CloudKit Development模式 订阅用于添加 编辑和删除 并使用以下内容didReceiveRem