最近在对ios通知中心插件widget做一下技术验证,以下记录一些坑,以防以后忘记,如果是小白可以看看:
1.关于数据通讯,app groups的打开不仅要在原生app中,还得 在新建的widget中打开,两个都打开并勾选创建的app groups才能用userdefault实现数据通讯
2.通过FileManager进行widget和原生app通讯时,可以存储数据库,但路径只能为NSURL *documentsDirectory = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:@"group.xxx"];
*
不能加上@"Library/Caches/widgetTest"
,否则会创建数据库失败
3.widget的没有展开和折叠按钮是因为还没设置widgetActiveDisplayModeDidChange方法,方法如下:
- (void)widgetActiveDisplayModeDidChange:(NCWidgetDisplayMode)activeDisplayMode withMaximumSize:(CGSize)maxSize {
if (activeDisplayMode == NCWidgetDisplayModeCompact) {
self.preferredContentSize = CGSizeMake([UIScreen mainScreen].bounds.size.width, 110);
} else {
self.preferredContentSize = CGSizeMake([UIScreen mainScreen].bounds.size.width, 300);
}
}
4.若想不显示隐藏折叠按钮,把widgetLargestAvailableDisplayMode设置为折叠模式就可以了,写法为:self.extensionContext.widgetLargestAvailableDisplayMode = NCWidgetDisplayModeCompact;