iOS的Share Extension分享機(jī)制

在最近參與的項(xiàng)目過程中蛤奥,我發(fā)現(xiàn)一個(gè)有趣的現(xiàn)象。國(guó)內(nèi)的App開發(fā)者僚稿,在設(shè)計(jì)“分享”這個(gè)功能的時(shí)候凡桥,一般都會(huì)根據(jù)業(yè)務(wù)的實(shí)際需要,設(shè)計(jì)一套自定義的解決方案蚀同,我們姑且稱之為“自定義分享插件”缅刽。而相比之下啊掏,國(guó)外的開發(fā)者更傾向于使用iOS提供的系統(tǒng)級(jí)的Share Extension,我們姑且稱之為“原生分享插件”衰猛。那么迟蜜,這兩種方案,各有什么特色和優(yōu)缺點(diǎn)呢啡省?


國(guó)外的App一般都會(huì)采用iOS的原生分享插件娜睛,圖為Amazon、Ebay卦睹、Etsy畦戒。


國(guó)內(nèi)的App一般都會(huì)采用iOS的原生分享插件,圖為微信结序、淘寶障斋、知乎

什么是原生分享插件?

我們先來(lái)簡(jiǎn)單看一下什么是蘋果的原生分享插件Share Extension笼痹。前面說過配喳,由于中國(guó)App開發(fā)大量使用自定義的分享方式,所以可能很多設(shè)計(jì)師還不熟悉原生分享的機(jī)制凳干。另外晴裹,蘋果直到去年的iOS8.0才重新定義了iOS的Extension機(jī)制,并重新設(shè)計(jì)了Share Extension救赐,使得她真正變得好用而受到開發(fā)者的認(rèn)可涧团。所以,原生分享插件對(duì)于我們來(lái)說经磅,其實(shí)還挺新的:)

在早先版本里泌绣,從iOS5到iOS6,乃至iOS7预厌,分享插件的界面設(shè)計(jì)進(jìn)過了幾次變更阿迈,但是功能上一直十分有限,一開始僅限于系統(tǒng)級(jí)和系統(tǒng)原生應(yīng)用的內(nèi)容傳遞轧叽,例如發(fā)送照片內(nèi)容到郵件和短信苗沧,或者從Safari保存網(wǎng)頁(yè)等。后來(lái)蘋果通過與Twitter和Facebook等幾家公司簽訂獨(dú)立的協(xié)議炭晒,實(shí)現(xiàn)了整合的方案待逞,使內(nèi)容分享到這些應(yīng)用的過程更方便。

但是蘋果顯然也意識(shí)到了這一點(diǎn)网严,即系統(tǒng)和應(yīng)用识樱,以及應(yīng)用與應(yīng)用之間傳遞內(nèi)容信息的需求是用戶真實(shí)存在的需求,需要一個(gè)真正系統(tǒng)級(jí)的解決方案,就像當(dāng)年的Push Notification那樣怜庸,一個(gè)方案解決所有App的問題当犯,而不是一家一家地去簽協(xié)議。


歷代iOS的分享界面

所以休雌,在去年的iOS8發(fā)布時(shí)灶壶,蘋果對(duì)分享機(jī)制做了大刀闊斧的改變肝断,這就是新的Share Extension杈曲,原生分享插件。App開發(fā)者只需要在開發(fā)過程中胸懈,為App加入原生分享插件担扑,向系統(tǒng)注冊(cè),就可以通過Extension來(lái)實(shí)現(xiàn)與系統(tǒng)和其他App的內(nèi)容分享了趣钱。原生分享插件就相當(dāng)于一個(gè)中間媒介涌献,可以接受Host App(發(fā)送內(nèi)容的App)提交的內(nèi)容,轉(zhuǎn)交給想要分享到的Containing App(接受內(nèi)容的App)首有。燕垃、


Share Extension的工作原理


舉例來(lái)說,如果你開發(fā)的是一個(gè)電商類App井联,希望鼓勵(lì)用戶把App上的商品分享給他們的朋友或者社交媒體卜壕,那么通過掛載和注冊(cè)原生分享插件,以后用戶想要分享App上的內(nèi)容時(shí)烙常,喚出分享界面轴捎,就可以把內(nèi)容分享到系統(tǒng)上的任一(注冊(cè)了分享插件的)位置。相反蚕脏,如果你開發(fā)的是一個(gè)社交App侦副,并鼓勵(lì)用戶從其他內(nèi)容源分享內(nèi)容你的App,同樣需要注冊(cè)到分享插件驼鞭,表明你同意接受由它發(fā)送來(lái)的內(nèi)容秦驯。

當(dāng)然,不同形式的內(nèi)容也不是隨便就到處傳遞的挣棕。無(wú)論你是發(fā)送內(nèi)容的Host App译隘,還是接受內(nèi)容的Containing App,都需要向原生分享插件描述清楚穴张,要發(fā)送或接受的內(nèi)容是什么格式细燎,比如圖片視頻、文本還是鏈接皂甘。這被稱為Activation Rules玻驻。也就是說,假如用戶要分享的是一段文字,那么當(dāng)他點(diǎn)擊分享按鈕時(shí)璧瞬,彈出的Share Sheet上户辫,就不會(huì)顯示Instagram和Pintrest這類App,因?yàn)樗麄冎唤邮軋D片分享嗤锉。這也就是說渔欢,盡管是同一個(gè)原生分享組件,但是在不同的App上瘟忱,它出現(xiàn)時(shí)顯示的內(nèi)容會(huì)自動(dòng)根據(jù)要分享出去的內(nèi)容性質(zhì)做出變化奥额。

所以,iOS的Share Extension原生分享插件访诱,就像一個(gè)巨大的內(nèi)容中轉(zhuǎn)站垫挨,在系統(tǒng)和App,以及App之間建立起關(guān)聯(lián)触菜,方便內(nèi)容的傳遞九榔。

那么為什么要采用這樣一種集成式的設(shè)計(jì)思路,而不是鼓勵(lì)各App之間點(diǎn)對(duì)點(diǎn)傳輸呢涡相?

最大的優(yōu)勢(shì)就是安全性和便利性哲泊。

iOS上的App被設(shè)計(jì)在一個(gè)“沙盒”里,App與系統(tǒng)間催蝗,以及App與另一個(gè)App之間的數(shù)據(jù)傳輸是受到嚴(yán)格限制的切威。所以我們經(jīng)常遇到App在使用相機(jī)、相冊(cè)或者GPS傳感器時(shí)生逸,都要請(qǐng)求用戶同意的場(chǎng)景牢屋。這樣設(shè)計(jì)的好處就是蘋果的設(shè)備安全系數(shù)很高,惡意軟件和病毒很難入侵槽袄。在這種情況下烙无,如果系統(tǒng)允許App隨便傳遞內(nèi)容信息,肯定是不行的遍尺。App們互相之間如果要傳遞信息截酷,也要先建立信任,也就是授權(quán)乾戏。所以在沒有原生分享插件的時(shí)候迂苛,每一次分享動(dòng)作,伴隨的都是可能要一次新的授權(quán)(如果你自定義分享插件鼓择,情況便是如此)三幻。而原生分享插件,就是將這些授權(quán)全都集中起來(lái)呐能,由系統(tǒng)平臺(tái)一次完成(App向系統(tǒng)注冊(cè)時(shí))念搬。這樣抑堡,iOS通過這種集成的方式,既能保證沙盒機(jī)制不被破壞朗徊,又實(shí)現(xiàn)了系統(tǒng)層面的信息分享首妖。

當(dāng)App注冊(cè)了原生分享插件,一方面爷恳,它就可以通過插件向系統(tǒng)和其他所有(也注冊(cè)了分享插件)的App發(fā)送內(nèi)容有缆,只要對(duì)方接受內(nèi)容的形式(圖片、文本等)温亲。另一方面棚壁,它也同意接受來(lái)自插件的相應(yīng)內(nèi)容。這意味著铸豁,用戶在iOS設(shè)備上灌曙,從任意一個(gè)App分享內(nèi)容到其他任意一個(gè)App時(shí),都不用再額外進(jìn)行一個(gè)App之間的授權(quán)動(dòng)作了节芥。分享真正變成系統(tǒng)級(jí)別的,無(wú)處不在的逆害。

并且头镊,這個(gè)方案的系統(tǒng)整合程度很高,意味著魄幕,在實(shí)際的交互場(chǎng)景中相艇,用戶甚至可以不用跳轉(zhuǎn)到他要分享的那個(gè)App里去操作,而是直接在當(dāng)前界面完成分享纯陨,然后繼續(xù)該干嘛干嘛坛芽。


用戶在Pintrest里將內(nèi)容分享到Evernot

講完了這些,那么問題來(lái)了:

既然蘋果的這套Share Extension機(jī)制這么好翼抠,為什么國(guó)內(nèi)的App們還偏要自定義分享插件呢咙轩?

最大的問題在于,App的開發(fā)者想要分享內(nèi)容到甲乙丙阴颖,而原生分享插件顯示的是ABC活喊。

蘋果在設(shè)計(jì)原生分享插件時(shí),是從所有用戶的習(xí)慣角度出發(fā)的量愧,如果用戶經(jīng)常分享內(nèi)容到Facebook和Pintrest钾菊,而不常用Twitter,那么他可以通過Share的Action Sheet上的“更多”按鈕偎肃,進(jìn)入一個(gè)設(shè)置頁(yè)面煞烫,在那里調(diào)整分享到App的順序,甚至把不常用的分享渠道關(guān)掉累颂。


分享的目標(biāo)只有用戶自己能控制


這顯然不符合國(guó)內(nèi)一些開發(fā)者的口味滞详,尤其是BAT這樣的大公司。微信就關(guān)閉了對(duì)原生分享的支持,而選擇了大量的自定義茵宪,所以我們可以看到微信的Share Sheet上出現(xiàn)了“收藏”最冰、“調(diào)整字體”等跟分享毫無(wú)關(guān)系的功能。淘寶的分享也是自定義的稀火。這類大公司的邏輯更多是讓分享內(nèi)容在自家的生態(tài)體系里流動(dòng)暖哨,而不是整個(gè)平臺(tái)。


國(guó)內(nèi)的開發(fā)者更喜歡自定義

一個(gè)非常有意思的特例是Pintrest凰狞。這家公司在自己的App上也使用了自定義的分享插件净薛,為了方便用戶把內(nèi)容分享給App內(nèi)的好友關(guān)系圈。但是如果在自定義的sheet上點(diǎn)擊表示“更多”的那個(gè)“…”紅色按鈕远剩,這是App又會(huì)調(diào)出原生分享插件表鳍。真是既滿足了自己的小算盤,又照顧到了全平臺(tái)的用戶逾冬。而這樣做的副作用就是黍聂,如果用戶在第一個(gè)自定義Sheet上點(diǎn)擊分享到Facebook,則調(diào)用系統(tǒng)分享編輯界面身腻,而如果用戶是在第二個(gè)原生分享sheet上點(diǎn)擊产还,則會(huì)跳轉(zhuǎn)到Facebook App里去做分享內(nèi)容編輯。


Pinterest兼顧了兩種分享機(jī)制嘀趟,先啟用自定義分享脐区,用戶點(diǎn)擊“更多”時(shí),啟用系統(tǒng)的原生分享



在兩個(gè)不同的分享插件里她按,點(diǎn)擊分享到Facebook時(shí)牛隅,界面體驗(yàn)是不一樣的
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市酌泰,隨后出現(xiàn)的幾起案子媒佣,更是在濱河造成了極大的恐慌,老刑警劉巖宫莱,帶你破解...
    沈念sama閱讀 218,755評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件丈攒,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡授霸,警方通過查閱死者的電腦和手機(jī)巡验,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)碘耳,“玉大人显设,你說我怎么就攤上這事⌒帘妫” “怎么了捕捂?”我有些...
    開封第一講書人閱讀 165,138評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵瑟枫,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我指攒,道長(zhǎng)慷妙,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,791評(píng)論 1 295
  • 正文 為了忘掉前任允悦,我火速辦了婚禮膝擂,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘隙弛。我一直安慰自己架馋,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評(píng)論 6 392
  • 文/花漫 我一把揭開白布全闷。 她就那樣靜靜地躺著叉寂,像睡著了一般。 火紅的嫁衣襯著肌膚如雪总珠。 梳的紋絲不亂的頭發(fā)上屏鳍,一...
    開封第一講書人閱讀 51,631評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音姚淆,去河邊找鬼孕蝉。 笑死,一個(gè)胖子當(dāng)著我的面吹牛腌逢,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播超埋,決...
    沈念sama閱讀 40,362評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼搏讶,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了霍殴?” 一聲冷哼從身側(cè)響起媒惕,我...
    開封第一講書人閱讀 39,264評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎来庭,沒想到半個(gè)月后妒蔚,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,724評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡月弛,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年肴盏,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片帽衙。...
    茶點(diǎn)故事閱讀 40,040評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡菜皂,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出厉萝,到底是詐尸還是另有隱情恍飘,我是刑警寧澤榨崩,帶...
    沈念sama閱讀 35,742評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站章母,受9級(jí)特大地震影響母蛛,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜乳怎,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評(píng)論 3 330
  • 文/蒙蒙 一彩郊、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧舞肆,春花似錦焦辅、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至哩盲,卻和暖如春前方,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背廉油。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工惠险, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人抒线。 一個(gè)月前我還...
    沈念sama閱讀 48,247評(píng)論 3 371
  • 正文 我出身青樓班巩,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親嘶炭。 傳聞我的和親對(duì)象是個(gè)殘疾皇子抱慌,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評(píng)論 2 355

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