iOS通知中心插件与应用的数据交互
2014-12-18 12:09
253 查看
通知中心插件 - 数据传递
名字解释:Widget:指通知中心的插件
Host:指插件的宿主,即通知中心的Today区域
Container:指插件所依托存在的应用
Widget和Host数据共享
主要是利用协议下的
- (void)widgetPerformUpdateWithCompletionHandler:(void (^)(NCUpdateResult))completionHandler
方法进行,根据系统的要求,进行相应的视图更新等处理。
Widget和Container数据共享
Widget和Container之间,数据的共享可以通过AppGroup配置后,对共用的存储空间内进行数据共享。
主要步骤有
1.在target中配置AppGroup
2.利用NSUserDefault或者NSFileManager访问AppGroup共享区域的内容,如果是NSUserDefault需要用创建方法:
[[NSUserDefault alloc] initWithSuiteName:groupID]
如果是NSFileManager需要使用下面的获取路径方法
[[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:groupID]
Widget和Container的实时数据交互
按照苹果的设计来看,本意是不希望Widget和Container存在直接的实时数据交互的,但是如果我们真的有一些特殊需求,比如:
当Container开启时,可以实时改变一些Widget中的内容;又或者在Widget中触发某个按钮之类的操作,希望可以实时影响应用的展示...
这里我想到一种利用他们之间的AppGroup存储可以共享使用,建立文件监视来变相达到目的的方法。查了一下iOS中目前好像没有相应的FileWatchDog类,因此自己做了一个,丢在github上,链接FileWatchDog
共享数据的原理是:Widget和Container都对同一个文件,进行文件变动监视,这样另一方有什么要传递的数据或指令,可以通过写文件的方式来提醒另一方,达到变相的实时数据交互。
PS:
网上看到过有人在Widget中利用NSURLSession来进行对Container的下载结束的提醒,这种也在特定条件下可以做一些事情,因此一并列在这里。
相关文章推荐
- 随笔:关于ios通知中心插件widget验证的一些坑
- Discuz!教程之应用中心安装插件提示“数据下载错误(105)”的解决办法
- IOS使用本地通知(UILocalNotification)删除应用角标小红点不删除通知中心内容
- Discuz!应用中心安装插件显示数据下载错误(105/102)的解决方法
- Android上基于JSON的数据交互应用
- 道高一尺魔高一丈:iOS破解应用下载中心AppTrackr VS. 苹果
- 关于企业SOA应用的数据交互协议
- GMIC2011:熊俊谈从数据看iOS移动应用开发
- Cisco企业数据中心及应用培训总结
- jquery 插件ztree的应用------动态加载树节点数据
- ADO.NET访问数据-DataSet本地缓存与数据库的交互过程,以及应用
- 数据中心或将成为光缆应用的新引擎
- (术)IOS应用的产品设计、交互设计理念断想
- ios开发中和web数据的交互的总结(二)
- ios开发中和web数据的交互的总结(三)
- 道高一尺魔高一丈:iOS破解应用下载中心AppTrackr VS. 苹果
- 关于企业SOA应用的数据交互协议
- Android上基于JSON的数据交互应用
- 如何导入和导出应用数据通过电子邮件应用程序在你的IOS
- 解决discuz x2.5插件只能从它的应用中心安装的问题