iOS_Widget搭建

前言

嘗試開發(fā)TodayWidget前查了些資料,自己動(dòng)手時(shí)發(fā)現(xiàn),那些技術(shù)博客等文檔,對于widget的開發(fā),大多都有些陳舊。在Xcode 9環(huán)境下,無需itunes connect申請widget ID,無需安裝繁多的證書,可以直接進(jìn)行開發(fā)!!!本文將會(huì)涵蓋widget開發(fā)的所有入門內(nèi)容,保證從0開始,一步步搭建一個(gè)可上架的widget項(xiàng)目!


重點(diǎn)

1. 無需安裝證書及申請額外Bundle identifier;

2. 不能調(diào)整widget視圖高度(iOS 11);

3. 文件數(shù)據(jù)共享要點(diǎn);

4. widget搭建完整流程。


文章目錄

1. 添加widget

2. 設(shè)計(jì)UI(代碼實(shí)現(xiàn))

3. 共享數(shù)據(jù)及文件

4. 額外功能的實(shí)現(xiàn)(App跳轉(zhuǎn))

5. 需要注意的事項(xiàng)



1. 添加widget

File? -->? New? -->? Target

命名,添加后,工程目錄下會(huì)看到這個(gè)group:

現(xiàn)在widget已經(jīng)添加完成了。

對!就是那么簡單!不需要額外申請ID,不需要安裝證書,運(yùn)行一下就可以在Today Extension下看到一個(gè)“hello word”小組件了。



2. 設(shè)計(jì)UI(代碼實(shí)現(xiàn))

這里只介紹代碼實(shí)現(xiàn)的方法,需要修改一下info.plist配置。如果喜歡用storyboard,那和普通的視圖搭建沒什么區(qū)別~

點(diǎn)擊上圖中的info.plist文件

- 刪除 NSExtensionMainStoryboard

- 添加NSExtensionPrincipalClass? (String) TodayViewController

得到以下結(jié)果:

開始設(shè)計(jì)UI

在唯一的viewController文件,和一般的視圖搭建沒有太多不同。講幾點(diǎn)需要注意的。

-widget高度調(diào)整

widget默認(rèn)高度110像素,搜索到的資料顯示,調(diào)整高度用這個(gè)方法

在iOS 11系統(tǒng)下,此方法無效。

筆者添加了手機(jī)上250+個(gè)App的所有widget組件,全部都是默認(rèn)高度!未發(fā)現(xiàn)一個(gè)例外!!!

至此,大致可以下結(jié)論:

iOS 11中,TodayWidget高度不可調(diào)整。上圖方法雖然沒有標(biāo)明已經(jīng)棄用,雖然打斷點(diǎn)發(fā)現(xiàn)依然被執(zhí)行,但是很可惜,并沒有效果。【望各位不要和筆者一樣苦苦鉆研,才終于明發(fā)現(xiàn)這一事實(shí)。】

-數(shù)據(jù)共享

當(dāng)需要調(diào)用主App中的持久化數(shù)據(jù)、文件、圖片等一切資料時(shí),務(wù)必共享數(shù)據(jù)!!!這一點(diǎn)在下一部分著重展開。



3. 共享數(shù)據(jù)及文件

-文件、圖片等

這一類比較簡單,步驟如下:

點(diǎn)擊需要共享的文件,右側(cè)Target Membership點(diǎn)選TodayWidget,共享文件。

或者在添加文件時(shí),點(diǎn)擊Options ,點(diǎn)選TodayWidget

就可以使用了:)

-持久化數(shù)據(jù)(NSUserDefault)

將TodayWidget和主App設(shè)置在同一組內(nèi)【需聯(lián)網(wǎng)】

通過NSUserDefault進(jìn)行數(shù)據(jù)共享。

保存:

提取:

搞定。??



4. 額外功能的實(shí)現(xiàn)

-widget跳轉(zhuǎn)主App

需要通過URL Schemes進(jìn)行跳轉(zhuǎn)。

設(shè)置App的URL:

主App的info.plist文件中添加以下字段:

在widget中使用如下方法跳轉(zhuǎn):

-其他有需要再補(bǔ)充……



5. 需要注意的事項(xiàng)

-版本號需保持相同

Project 中,主App與TodayWidget版本號需一致。

提交二進(jìn)制文件時(shí),若版本號不一致,會(huì)報(bào)錯(cuò),但仍然可以成功上傳,不知道直接上架會(huì)發(fā)生什么錯(cuò)誤。

-widget視圖進(jìn)行NSLog

運(yùn)行的項(xiàng)目選擇widget,這個(gè)大家應(yīng)該都知道哦。



最后成品,用自己的App《問卦六爻》為例。

Today Extension:

3D Touch:




完。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容