【发布时间】:2017-06-25 00:47:48
【问题描述】:
我正在尝试设置可变的新 ios 10 推送通知,并且在 didReceiveRequest 方法中我尝试读取一些参数,一个存储在 NSUserDefaults 中,一个存储在本地 JSON 文件中,如下所示:
- (void)didReceiveNotificationRequest:(UNNotificationRequest *)request withContentHandler:(void (^)(UNNotificationContent * _Nonnull))contentHandler {
self.contentHandler = contentHandler;
self.bestAttemptContent = [request.content mutableCopy];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSInteger index = [defaults integerForKey:@"index"];
NSString *path = [[NSBundle mainBundle] pathForResource:@"Words" ofType:@"json"];
NSData *data = [NSData dataWithContentsOfFile:path];
NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];
NSString *word = dict[@"Irish"][index];
self.bestAttemptContent.body = [NSString stringWithFormat:@"%@", word];
self.contentHandler(self.bestAttemptContent);
}
问题是方法运行太慢并且没有完成。我知道是这种情况,因为苹果会警告它,因为如果我用一个简单的行替换上面的整个方法,将标题更改为随机字符串,那么它运行良好。有谁知道如何使它更快或解决这个问题?
我想要完成的是每天收到每日推送通知时“索引”变量都会增加,它应该从 json 文件中读取该索引。所以我基本上希望用户每天都能收到 JSON 文件中的下一个字符串
谢谢
【问题讨论】:
-
您的 Words.json 文件有多大?可以使用效率更高的存储,比如 sqlite 吗?
-
我想过。我找到了一种方法来获取存储在用户默认值中的单词,但现在遇到了一些奇怪的问题,当我将正文文本返回 Null 时......在一些我知道存在的文本上
-
您收到
serviceExtensionTimeWillExpire了吗? Apple 给了你 30 秒的时间来处理这个请求,而且看起来你的代码运行时间并不长。问题可能出在其他地方。 -
我同意我认为问题可能不在这里。我找到了一种将我想要的单词存储在 NSUserDefaults 中的方法,但仍然遇到问题(请参阅此处:stackoverflow.com/questions/44751398/…)
标签: ios objective-c push-notification apple-push-notifications onesignal