1. 程式人生 > >iOS新特性擴充套件之Today分享(2)

iOS新特性擴充套件之Today分享(2)

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擴充套件中不支援列印資料的,直接拿資料來用就可以的。