- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我今天一直在摆弄CKSubscription
。我对此有一些疑问。
我这样设置我的订阅:
-(void)addSubscriptions
{
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"TRUEPREDICATE"];
CKSubscription *newRecordSub = [[CKSubscription alloc] initWithRecordType:_recordTypeName predicate:predicate options:CKSubscriptionOptionsFiresOnRecordCreation | CKSubscriptionOptionsFiresOnRecordUpdate | CKSubscriptionOptionsFiresOnRecordDeletion];
CKNotificationInfo *noteInfo = [CKNotificationInfo new];
noteInfo.alertBody = @"Update!";
noteInfo.shouldBadge = YES;
noteInfo.soundName = UILocalNotificationDefaultSoundName;
newRecordSub.notificationInfo = noteInfo;
CKContainer *container = [CKContainer defaultContainer];
CKDatabase *privateDatabase = [container privateCloudDatabase];
[privateDatabase saveSubscription:newRecordSub completionHandler:^(CKSubscription *subscription, NSError *error) {
}];
}
问题 1:
创建我的订阅时,我只需要将它保存到我的容器一次吗?由于这称为应用程序运行超时,我收到一条错误消息,简单地说,重复订阅,因此该应用程序按预期工作,但我是否应该以不同的方式处理此问题,而不是每次都运行?
接下来,我设置使用我的 AppID
接收通知,并在我的 AppDelegate
中注册它们。
UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound categories:nil];
[application registerUserNotificationSettings:settings];
[application registerForRemoteNotifications];
最后,我按如下方式处理这些通知:
-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
CKNotification *note = [CKNotification notificationFromRemoteNotificationDictionary:userInfo];
if (note.notificationType == CKNotificationTypeQuery)
{
CKQueryNotification *queryNote = (CKQueryNotification *)note;
CKRecordID *recordID = [queryNote recordID];
[[NSNotificationCenter defaultCenter] postNotificationName:kCloudKitNewRecordFlightLog object:recordID];
}
}
问题 2:
为什么此时我收不到任何通知?当添加/删除、更新新记录时,我的所有代码都会运行并且我的应用程序也会更新。但是,不会显示任何声音、角标(Badge)或横幅来通知用户。
问题 3:
当收到云套件通知时,然后让本地通知向相关 View 发送消息以更新记录是否是一种明智的做法?
最佳答案
关于ios - CloudKit CKSubscription 通知基础,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26889786/
我正在尝试使用 CKSubscription这边走: NSArray *events = @[@1,@2,@3]; NSInteger myValue = 100; NSPredicate *pred
目前,您必须拥有用户授予的通知权限: UIApplication *application = [UIApplication sharedApplication]; UIUserNotificatio
我可以使用 CKNotificationInfo() 和 CKNotificationInfo.alertBody 让 CKSubscription 工作。所以我可以发送一条信息。我试图让 CKSub
我今天一直在摆弄CKSubscription。我对此有一些疑问。 我这样设置我的订阅: -(void)addSubscriptions { NSPredicate *predicate = [
我正在使用 CloudKit 编写一个 Swift 应用程序。当设备在 CloudKit 中修改记录时,我希望在不显示推送通知的情况下在其他设备的本地存储中更新相应的记录。 即使我不打算显示任何推送,
我想通知用户一条聊天消息已从其他用户发送,通知的正文应该是消息。是否可以通过 CKSubscription/CKNotificationInfo 进行设置?类似于 alertBody,但特定于每条消息
我使用以下代码设置了一个 CKSubscription: NSPredicate *predicate = [NSPredicate predicateWithFormat:@"TRUEPREDICA
几周来我一直在阅读有关 CKSubscription 功能的文章并尝试使用它,但我找不到关于一些一般问题的信息。我已经阅读了 Apple 文档、在线教程、我购买的书籍以及关于 SO 的问题,但我仍然不
我有一个在 TvOS 下运行的 CKSubscription,当订阅触发时,它会返回此用户信息对象,这很棒。但我该如何在 Swift 中解析这个,当然不是通过制作我自己的解析例程? userInfo
如何检查使用 CKAsset 存储的图像在 CloudKit 中是否发生了变化? CKNotification 文档说了 desiredKeys: 数组中最多可以包含三个键。 对于您指定的键,允许的值
我将表的 CKSubscription 设置为“在创建记录时触发”。当我需要更新 CKSubscription 的特定实例时,我确保在添加它之前先将其删除。 但现在每当我保存新的 CKRecord 时
很抱歉,我找不到通俗易懂的英语答案,或者至少我看到的每个答案都假设我拥有一定数量的知识,而这些知识是我不应该拥有的。我只需要删除一个 CKSubscription。我该怎么做呢?非常感谢所有提示和帮助
我有这个代码。这在使用 FiresOnRecordCreation 的触发模式创建订阅时有效......但在 FiresOnce 上出错......错误是“查询订阅必须至少有一种类型的触发模式” 我的
CKSubscription 文档说:当记录修改导致订阅触发时,服务器会向所有订阅该订阅的设备发送推送通知,但进行原始更改的设备除外 记录。 假设我有两台设备:device 1 和 device 2
我正在构建一个需要订阅 iCloud 公共(public)数据库中记录更改的应用程序。现在,在观看了苹果视频并阅读了他们的文档之后,我决定开始工作。但是,我立即被困在这里: CKSubScriptio
我在没有经过身份验证的 iCloud 帐户的情况下测试我的应用程序,但在为设备订阅通知时出现此错误: subscription error 没关系,但我的问题是如何在尝试运行 CKSubscript
所以我遇到了一个 CloudKit 错误,当我搜索它时只得到一个 (1) Google 结果。运行 CKModifySubscriptionsOperation 以创建初始用户的 CK 订阅时出现错误
我是一名优秀的程序员,十分优秀!