关闭

iOS新特性扩展之Today分享(2)

标签: ios扩展Today扩展iOS扩展应用
193人阅读 评论(0) 收藏 举报
分类:

1、在上一小节中,我们简单介绍了Today扩展的数据存储应用,但是对于共享内容比较多的话,单纯的用NSUserDefaults存储还是不够的,有同学可能会用数据库之类的存储方式,但数据库也是不太简单的,这里我们可以用2种方式解决,共享文件和共享frameWork。
2、共享文件
(1)首先我们要创建一个swift文件并写入代码,创建过程就不多说了,
这里写图片描述
(2)文件创建完成之后,我们需要把文件添加到Today target中进行编译,
这里写图片描述
(3)添加完成之后,就可以在Today文件中使用了,

class TodayViewController: UIViewController, NCWidgetProviding {

    @IBOutlet weak var labelView: UILabel!

    override func viewDidLoad() {
        super.viewDidLoad()
        let myData = Mydata()
        myData.setMyData()
        labelView.text = myData.title

    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    // 更新界面的时候调用
    func widgetPerformUpdateWithCompletionHandler(completionHandler: ((NCUpdateResult) -> Void)) {
        // Perform any setup necessary in order to update the view.

        // If an error is encountered, use NCUpdateResult.Failed
        // If there's no update required, use NCUpdateResult.NoData
        // If there's an update, use NCUpdateResult.NewData

        labelView.text = "界面数据更新了"
        completionHandler(NCUpdateResult.NewData)
    }
}

(4)目前为止,文件共享就完成了。

3、framework共享
(1)如果要共享的文件比较多,有可能添加删除重复在做,就很容易混乱,所以我们还可以利用framework来完成,把需要的文件制作成framework,这样的话,就可以只利用framework中的文件就可以了,对其他的文件没有影响。
(2)创建framework

这里写图片描述

点击target之后会出现下面的界面,

这里写图片描述

点击next之后,会提示我们输入framework的名称,

这里写图片描述

然后点击完成,我们的framework就创建好了,

这里写图片描述

(3)配置framework(1)
首先将我们创建的那个文件从应用target中删除,

这里写图片描述

这里系统会默认吧我们创建的framework添加进去,所以我们不用手动添加,

这里写图片描述

(4)配置framework(2)
把我们创建的文件添加到framework中,

这里写图片描述

这样的话,我们的framework配置就完成了

(5)使用framework
下面就可以直接使用framework中的文件了,
首先在ViewController.swift中导入我们的framework
这里写图片描述
这里报了一个错,是因为我们应用target支持的版本是8.3,framework target支持的版本是9.1,吧版本改成统一的再编译就可以了。

需要注意的就是,我们需要把MyData.swift中的方法全部改成public,

这里写图片描述

这样的话,直接就可以使用了,应用的使用:

这里写图片描述

Today扩展的应用:

import UIKit
import NotificationCenter

import MyDataKit

class TodayViewController: UIViewController, NCWidgetProviding {

    @IBOutlet weak var labelView: UILabel!

    override func viewDidLoad() {
        super.viewDidLoad()

        let myData = Mydata()
        myData.setMyData()
        labelView.text = myData.title

    }

到这里文件的共享就结束了。

4、一般的应用的Today都是可以通过点击进入到本应用中,同学们可以试一下其他的应用跳转,这里我们也简单测试一下,

(1)要跳转到应用中,首先需要注册Schemes,
这里写图片描述

(2)注册好之后,就可以拿来用了,首先在Today上放一个Button,并拉线设置点击事件,并在事件中写上代码:

@IBAction func btnClick(sender: UIButton) {

        let url = NSURL(string: "weatherEnter://enter")
        extensionContext?.openURL(url!, completionHandler: { (isComple) -> Void in

        });

    }

(3)接收响应
在AppDelegate.swift中实现一个方法,如下:

 func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool {

        if url.scheme == "weatherEnter" {

            if url.host == "enter" {
                let alert = UIAlertView(title: "提示", message: "通过Today打开", delegate: nil, cancelButtonTitle: "取消")
                alert.show()

            }
            return true
        }

        return false
    }

这样的话,基本上就完成了。

注意:Today扩展中不支持打印数据的,直接拿数据来用就可以的。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:49271次
    • 积分:909
    • 等级:
    • 排名:千里之外
    • 原创:43篇
    • 转载:0篇
    • 译文:0篇
    • 评论:1条
    最新评论