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

原创 2016年05月31日 12:52:29

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扩展中不支持打印数据的,直接拿数据来用就可以的。

版权声明:本文为博主原创文章,未经博主允许不得转载。

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

1、在iOS 的新特性中,包含了几种特殊的分享,下面就首先介绍一下Today的分享扩展应用。 2、Today扩展的用处还是比较多的,利用Today扩展,我们不用进入到应用程序中就能够直接看到应用中的...
  • sw_gegewu
  • sw_gegewu
  • 2016年05月30日 18:29
  • 216

IOS 应用 分享 扩展

IOS 应用 分享 扩展
  • HeroGuo_JP
  • HeroGuo_JP
  • 2016年04月13日 00:45
  • 1774

iOS8中Today Extension的使用

扩展(Extension)是iOS 8中引入的一个非常重要的新特性。扩展让app之间的数据交互成为可能。用户可以在app中使用其他应用提供的功能,而无需离开当前的应用。 iOS 8系统有6个支持...
  • ralbatr
  • ralbatr
  • 2015年03月11日 09:23
  • 9124

Today Extension 与 Host App 共享数据的3种方法

iOS App之间共享数据的方法主要有三种: Shared User Defaults、Shared Data Container、openURL API。 最近做了一个Today Extension...
  • wershest
  • wershest
  • 2015年08月20日 22:28
  • 1164

ios8新特性widget开发

ios8发布已经有一段时间了,伴随着ios8同时也出现了许多新的特性,ios系统将会越来越开放,这是好事。其中一个新特性就是在下拉通知栏里加入了个性的widget,开发者可以自己定义widget的样式...
  • kuloveyouwei
  • kuloveyouwei
  • 2015年03月02日 19:40
  • 21650

ios 分享扩展

1, 创建分享扩展 File --- New -- Target 2, 设置分享的时候必须要指定 一个扩展规则 3,设置 APP  Group 来实现 实现应用共享...
  • luckly_girl
  • luckly_girl
  • 2016年07月27日 17:44
  • 177

ios8 share extension 分享扩展 问题小结

ios8 的分享扩展问题总结,包括为什么加了分享扩展但是在device中显示不出来...
  • a1056244734
  • a1056244734
  • 2016年02月03日 15:11
  • 4078

iOS8扩展插件Extension的开发

一.iOS8扩展插件概述 WWDC14除了发布了OS X v10.10和switf外,iOS8.0也开始变得更加开放了。说到开放,当然要数应用扩展(App Extension)了。顾名思...
  • zzzzzdddddxxxxx
  • zzzzzdddddxxxxx
  • 2015年08月13日 14:48
  • 1169

iOS Today Extension/widget编程小记

本文高屋建瓴地从App Extensions讲解到Today Extension;介绍了如何从头开始创建一个Today Extension;探讨了一些经常碰到的问题;点出了Today Extensio...
  • lixing333
  • lixing333
  • 2015年08月31日 22:48
  • 3590

today extension 扩展使用

http://blog.csdn.net/ralbatr/article/details/44194389 效果图:
  • u013355871
  • u013355871
  • 2016年06月27日 16:16
  • 221
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS新特性扩展之Today分享(2)
举报原因:
原因补充:

(最多只允许输入30个字)