iOS Today Extension開發(fā)(Widget)

前言:

  • 自從iOS8API中開放iOS Today 擴(kuò)展之后 很多朋友都在研究一下出來裝個(gè)X例嘱,說實(shí)話這個(gè)東西做出來是挺炫的啄刹,感覺很高大上,但是經(jīng)過我查閱資料正經(jīng)研究這個(gè)東西的時(shí)候感覺很簡單,沒有大家想的那么高端州胳,廢話不多說上操作。

先來張效果圖:

Untitled.gif
  • 第一步:創(chuàng)建 iOS Today 擴(kuò)展(見圖)
1.png
2.png
3.png
  • 如上體創(chuàng)建完成之后會(huì)在工程目錄多一個(gè)TodayViewController文件夾
    應(yīng)為我們這個(gè)教程截圖是我已經(jīng)做好的工程所以文件夾正常的StoryBoard文件我已經(jīng)刪除選用純代碼開發(fā)逸月。

純代碼需要配置info.plist的倆項(xiàng)參數(shù):

移除NSExtensionMainStoryboard 鍵栓撞,并添加NSExtensionPrincipalClass 鍵,使用view controller的名字作為值碗硬。

4.png

第二步:開發(fā)這個(gè)玩意

  • UI樣式

如果你看一下官方對于今日插件的UI指南瓤湘,有兩點(diǎn)值得注意:
1、盡量不要使用背景肛响,默認(rèn)的毛玻璃效果很好岭粤,也比較統(tǒng)一;
2特笋、盡量保持默認(rèn)的縮進(jìn)剃浇,即左邊會(huì)空幾個(gè)像素巾兆。

  • 如果想改變默認(rèn)縮進(jìn),在TodayViewController里面實(shí)現(xiàn)以下方法虎囚,縮進(jìn)就沒有了:
-(UIEdgeInsets)widgetMarginInsetsForProposedMarginInsets:        (UIEdgeInsets)defaultMarginInsets{
    return UIEdgeInsetsZero;
}

與宿主App進(jìn)行交互-擴(kuò)展App跳轉(zhuǎn)主App

TodayViewController.m類實(shí)現(xiàn)代碼
//點(diǎn)擊按鈕跳轉(zhuǎn)頁面
-(void)BUttonClick:(UIButton *)Bt{
UIButton* button = (UIButton*)Bt;
  if (button.tag == 0) {
    [self.extensionContext openURL:[NSURL URLWithString:@"跳轉(zhuǎn)鏈接"] completionHandler:^(BOOL success) {
         NSLog(@"open url result:%d",success);
    }];
}
else if(button.tag == 1) {
    [self.extensionContext openURL:[NSURL URLWithString:@"跳轉(zhuǎn)鏈接"] completionHandler:^(BOOL success) {
        NSLog(@"open url result:%d",success);
    }];
}
else if(button.tag == 2) {
    [self.extensionContext openURL:[NSURL URLWithString:@"跳轉(zhuǎn)鏈接"] completionHandler:^(BOOL success) {
        NSLog(@"open url result:%d",success);
    }];
}
}

配置跳轉(zhuǎn)鏈接協(xié)議

16632-8df6a709f3a34305.png
  • 跳轉(zhuǎn)鏈接示例:iOSWidgetApp://為跳轉(zhuǎn)頁面做標(biāo)識(shí)

AppDelegate.m類實(shí)現(xiàn)代碼

跳轉(zhuǎn)鏈接與TodayViewController.m類跳轉(zhuǎn)鏈接相對應(yīng)
-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{
UINavigationController * nav = (UINavigationController*)[customTabBarController.viewControllers objectAtIndex:0];
  if ([ctrlString isEqual:@"跳轉(zhuǎn)鏈接"]) {
      跳轉(zhuǎn)操作
  }if ([ctrlString isEqual:@"跳轉(zhuǎn)鏈接"]) {
      跳轉(zhuǎn)操作
  }if ([ctrlString isEqual:@"跳轉(zhuǎn)鏈接"]) {
      跳轉(zhuǎn)操作
  }
  return NO;
 }

數(shù)據(jù)共享(主App和擴(kuò)展App)

數(shù)據(jù)共享的方式有很多種方法我來介紹倆種具體你們在研究
第一種:利用Group
  • 這種方法原理就是將主App和擴(kuò)展App做一個(gè)緩存空間(NSUserDefaults)配置如下:
C8BAEAB5-6872-4A91-99FF-D806E4D4F882.png
  • 在工程目錄->TARGETS->分別選擇主App和擴(kuò)展App->Capabilities->App Groups->按照圖做就好了(Steps三個(gè)對勾要都打上)

主App存擴(kuò)展App所需要數(shù)據(jù)

NSUserDefaults* userDefault = [[NSUserDefaults alloc] initWithSuiteName:@"group.cn.10086.shandongmcc"];
[userDefault setBool:YES forKey:@"islogin"];

擴(kuò)展App取所需要數(shù)據(jù)

NSUserDefaults *myDefaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.cn.10086.shandongmcc"];
BOOL isLogin = [myDefaults objectForKey:@"slogan"];
  • 這就可以了正常主App與擴(kuò)展App進(jìn)行數(shù)據(jù)交互的第一種方法角塑;
第二種:利用接口
  • 擴(kuò)展App也可以進(jìn)行數(shù)據(jù)請求解析,所需要的數(shù)據(jù)直接做接口請求處理就好淘讥;
    還有靜態(tài)庫代碼共享等等的數(shù)據(jù)共享方法你們就自己研究吧圃伶。

總結(jié):

  • 重點(diǎn)一:創(chuàng)建擴(kuò)展
  • 重點(diǎn)二:創(chuàng)建數(shù)據(jù)共享空間(App Groups)
  • 重點(diǎn)三:主App存,擴(kuò)展App取
  • 重點(diǎn)四:開發(fā)過程是OC語言自己不會(huì)去找老師

補(bǔ)充:

  • iOS8中Today擴(kuò)展遇到在模擬器中OK蒲列,在5S以上真機(jī)就會(huì)失敗的問題窒朋,還會(huì)報(bào)can attach to it by selecting Debug > Attach to Process 之類的錯(cuò)誤,之前一直以為是Xcode的BUG蝗岖,其實(shí)想想只在5S上出現(xiàn)侥猩,就應(yīng)該想到64位編譯的問題了
    解決方法:
    1、Build Settings->Architectures 選擇 Standard architectures (armv7, arm64)
    2抵赢、Build Settings->Valid Architectures 設(shè)定 armv7 armv7s armv8 arm64
    3欺劳、Build Settings->Build Active Architectures Only 設(shè)定為 NO
    4、擴(kuò)展Today的Target按如上設(shè)置

  • 有很多哥們問我說為什么我在調(diào)試的時(shí)候斷點(diǎn)打了卻不走呢铅鲤?
    解決辦法:
    別急划提。。一句話你調(diào)試主就運(yùn)行主邢享,調(diào)試擴(kuò)展就運(yùn)行擴(kuò)展鹏往。

  • 好吧在說一句就一句。驼仪。主App代碼是不能給擴(kuò)展用得掸犬,想公用代碼得打包靜態(tài)庫。歸誰得代碼就要放到誰得目錄下啊兄弟绪爸。

  • GitHub下載地址:https://github.com/QQ396368888/iOSToday.git

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末湾碎,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子奠货,更是在濱河造成了極大的恐慌介褥,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,454評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件递惋,死亡現(xiàn)場離奇詭異柔滔,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)萍虽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門睛廊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人杉编,你說我怎么就攤上這事超全∨厮” “怎么了?”我有些...
    開封第一講書人閱讀 157,921評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵嘶朱,是天一觀的道長蛾坯。 經(jīng)常有香客問我,道長疏遏,這世上最難降的妖魔是什么脉课? 我笑而不...
    開封第一講書人閱讀 56,648評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮财异,結(jié)果婚禮上倘零,老公的妹妹穿的比我還像新娘。我一直安慰自己宝当,他們只是感情好视事,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,770評(píng)論 6 386
  • 文/花漫 我一把揭開白布胆萧。 她就那樣靜靜地躺著庆揩,像睡著了一般。 火紅的嫁衣襯著肌膚如雪跌穗。 梳的紋絲不亂的頭發(fā)上订晌,一...
    開封第一講書人閱讀 49,950評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音蚌吸,去河邊找鬼锈拨。 笑死,一個(gè)胖子當(dāng)著我的面吹牛羹唠,可吹牛的內(nèi)容都是我干的奕枢。 我是一名探鬼主播,決...
    沈念sama閱讀 39,090評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼佩微,長吁一口氣:“原來是場噩夢啊……” “哼缝彬!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起哺眯,我...
    開封第一講書人閱讀 37,817評(píng)論 0 268
  • 序言:老撾萬榮一對情侶失蹤谷浅,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后奶卓,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體一疯,經(jīng)...
    沈念sama閱讀 44,275評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,592評(píng)論 2 327
  • 正文 我和宋清朗相戀三年夺姑,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了墩邀。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,724評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡盏浙,死狀恐怖眉睹,靈堂內(nèi)的尸體忽然破棺而出留潦,到底是詐尸還是另有隱情,我是刑警寧澤辣往,帶...
    沈念sama閱讀 34,409評(píng)論 4 333
  • 正文 年R本政府宣布兔院,位于F島的核電站,受9級(jí)特大地震影響站削,放射性物質(zhì)發(fā)生泄漏坊萝。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,052評(píng)論 3 316
  • 文/蒙蒙 一许起、第九天 我趴在偏房一處隱蔽的房頂上張望十偶。 院中可真熱鬧,春花似錦园细、人聲如沸惦积。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽狮崩。三九已至,卻和暖如春鹿寻,著一層夾襖步出監(jiān)牢的瞬間睦柴,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評(píng)論 1 266
  • 我被黑心中介騙來泰國打工毡熏, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留坦敌,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,503評(píng)論 2 361
  • 正文 我出身青樓痢法,卻偏偏與公主長得像狱窘,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子财搁,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,627評(píng)論 2 350

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