iOS 开发之Widget的开发及使用(下)

在iOS 开发之Widget的开发及使用(上)中都交代清楚了关于widget扩展的添加,以及布局部分的内容,下面说下关键部分:关于数据共享的操作。

在Apple发布iOS8.0以后,对App有提供一个新的扩展选择项,叫做App groups,选择宿主Target之后,在capabilities选项卡下面会找到这个选项:

那么这个选项主要是做何使用呢?

iOS系统,每个开发应该都清楚,其内部程序都是遵循沙盒机制,App与App之间,是不能进行数据共享的,A 不能访问 B 的数据,同样 B 也不能访问 A 的数据。不要问为什么,iOS天生就这样任性。

为了能够让widget共享到宿主程序中的数据,所以,App groups这个功能就应运而生了。

选择宿主程序的Target,打开这个选项,然后添加你所需要的key进去,如下面图所示,这是我加的两组:

这两组key可以作为你将宿主程序的数据共享给扩展的主要主要和关键部分。

然后在选择扩展程序的Target,同样的操作,选择打开App groups,只是不同的是,这里的key不需要你再进行添加,而是进行勾选。

做完这些事情之后,基本数据共享的步骤就进行了一大半了,下来是具体的数据共享部分的代码部分的工作了。

通过App groups,可以用NSUserdefault和宿主程序进行小的数据共享,当然也可能是CoreData、sqlite或者其他的大数据的共享。

在用NSUserDefault做数据共享的时候,如果只是常规存储数据,读取数据如:

[[NSUserDefaults
standardUserDefaults] setObject:@""
forKey:@"xxx"];

[[NSUserDefaults
standardUserDefaults] valueForKey:@"xxx"];

是无法正常在widget中读取到数据的。

所以,在初始化NSUserDefaults的时候,要这样做:

NSUserDefaults *userDefault=[[NSUserDefaults
alloc]
initWithSuiteName:k_APP_GROUP_KEY];

[userDefault setValue:dic
forKey:@""];

[userDefault synchronize];

这样初始化,存储数据之后,然后再在扩展的ViewDidLoad中以同样的方式去初始化并读取数据,才能正常的根宿主程序的数据进行互通。Group_Key就是在添加App Group的时候,所填写的Key的名字。

好了,看到这里,就应该可以去完成一个由NSUserdefaults实现数据共享给扩展程序的操作了,可以试试看。

时间: 2024-08-05 11:13:12

iOS 开发之Widget的开发及使用(下)的相关文章

iOS 开发之Widget的开发及使用(上)

在iOS8发布以后,Apple官方发布了,有关第三方开发软件可以集成进手机的通知中心,对于我们这帮开发来说,无疑是一个很新鲜的玩意儿,都巴不得赶紧将自己的App加入Widget的功能扩展. 那么关于widget的功能扩展需要做的步骤,我简单的分享一下我个人的简单过程.不对望斧正.我将会分为两次分别概述widget的基本添加以及布局和数据共享部分. 首先,在自己的在xcode的菜单项,为当前项目添加一个新的target.然后选择Application Extension 类型选Today. 接下来

iOS开发之widget实现

前言 ????iOS extension的出现,方便了用户查看应用的服务,比如用户可以在Today的widgets中查看应用的简略信息,然后点击进入相关的应用界面.暂且不表网络上现有的widget文章,本篇文章主要说明本人具体实现widget的步骤,希望能够帮助到需要实现widget的同行朋友. 图1 Today的widget展示----以支付宝为例说明 文章将依次从以下几个问题着手,进行详细说明:1.如何为现有的工程添加widget:2.如何绘制UI:3.如何调起app:4.如何与host a

iOS开发之 3D Touch 开发

在App 的开发中对于开发人员来说新设备以及新功能的适配无疑是一个很苦逼的事.在今年九月份iPhone 6S 以及 6S+ 出来之后,新的功能 3D Touch又是一个比较头疼的事.刚刚看到的时候以为是比较麻烦的东西 看着开发文档就头大(本撸主英语水平有限).但是看完官方文档之后感觉也不是很麻烦.所以就自己写了一个Demo 供大家吐槽和狂喷. 我感觉  3D Touch  的使用和  UITabBar  差不多还是一个比较简单的东西,几乎是拿过来就能用的东西. 一. 给桌面 Icon 添加 3D

iOS开发之Bug--UITextField使用时文字向下偏移问题

这个问题,在之前项目中偶然遇到过,但是bug不明显,也不知道具体是哪种重现方式重现的,所以一直暂时略过了,但是随着项目的系统的规模变大,代码量越多, 这个问题出现的越来越明显了. 于是就只能靠百度和google了,然后体会到百度是没有成功的结果的,但是google却有成功的结果:http://blog.csdn.net/qq_29892943/article/details/50515150 下面就拷贝赋值作者的笔记: 最近在使用UITextField这个控件的时候,突然发现了一个问题,就是本来

iOS开发之CocoaPods的使用

透明色:00ff00ff //设置柱状图的颜色                ColorSet cs = new ColorSet();                cs.Id = "colorset1"; #region 设置柱状图的颜色 待开发                    string strColor = oYAXIS.Color;                    switch (strColor)                    {           

iOS开发之UILabel

UILabel是iOS开发中常用的一个组件,主要用来显示内容. UILabel的主要使用如下: ? 1 2 3 4 5 6 7 8 9 10 /*尺寸*/ CGRect labelRect = CGRectMake(100, 100, 80, 40); /*初始化*/ UILabel *titleLabel = [[UILabel alloc] initWithFrame:labelRect]; /*一些属性的设置*/ titleLabel.font = [UIFont systemFontOf

iOS开发之多XIB之间相互关联

Xib link Xib 1.直接加载xib中的UIView 创建一个View1.xib, 随便设一个背景色,加一个标识UILabel, 这样好知道是这个view是哪一个view. 你可以在这个view上加作意的subview,我只是说明原理,所以这儿并没有加作何subview. 最终我的View1如下图: 由于View1会放到其它View上作为subview,所以这儿size是Freeform, Status Bar是:None. 将下面代码放到viewDidLoad中: &1这行代码就是加载

iOS开发之UISearchBar初探

iOS开发之UISearchBar初探 UISearchBar也是iOS开发常用控件之一,点进去看看里面的属性barStyle.text.placeholder等等.但是这些属性显然不足矣满足我们的开发需求.比如:修改placeholder的颜色.修改UISearchBar上面的UITextfield的背景颜色.修改UITextfield上面的照片等等. 为了实现上述的需求,最好写一个UISearchBar的子类就叫LSSearchBar吧 LSSearchBar.h如下: #import <U

iOS开发之MVVM在项目中的应用

今天写这篇博客是想达到抛砖引玉的作用,想与大家交流一下思想,相互学习,博文中有不足之处还望大家批评指正.本篇博客的内容沿袭以往博客的风格,也是以干货为主,偶尔扯扯咸蛋(哈哈~不好好工作又开始发表博客啦~). 由于本人项目经验有限,关于架构设计方面的东西理解有限,我个人对MVVM的理解主要是借鉴于之前的用过的MVC的Web框架~在学校的时候用过ThinkPHP框架,和SSH框架,都是MVC的架构模式,今天MVVM与传统的MVC可谓是极为相似,也可以说是兄弟关系,也就是一家人了. 说到架构设计和团队