iMessage App使用總結(jié)

關(guān)于具體用法,這幾篇博客已經(jīng)做了大致總結(jié):
http://www.reibang.com/p/be79b8729bf8
http://www.cocoachina.com/ios/20160919/17593.html
其中iMessage App的用法大體上分兩種: Stickers與Interactive Messages。其中Stickers類似于表情包,非常的簡(jiǎn)單耙箍,也沒什么坑寒波。

Interactive Messages雖然內(nèi)容也不多,但目前為止能找到的資料還是太少头朱,所以我用這篇博客來記錄一下自己在開發(fā)過程中遇到的一些坑座享。

  1. 當(dāng)Container App未上架:在接收方?jīng)]有安裝Container App的情況下婉商,無論我把MSMessage對(duì)象的URL屬性設(shè)置成什么,對(duì)方都會(huì)在iMessage內(nèi)部打開App Store首頁(yè)渣叛。發(fā)送方在發(fā)送message后如果刪除Container App之后也會(huì)遇到相同情況丈秩。

  2. 當(dāng)Container App已上架:接收方?jīng)]有安裝Container App的情況下,接收方點(diǎn)擊message之后會(huì)在iMessage內(nèi)部打開App Store并跳轉(zhuǎn)到下載Container App的下載頁(yè)淳衙。

  3. Interactive Messages是不支持Universal Links的蘑秽,所以上面謀篇博客中說可以使用Universal Links進(jìn)行跳轉(zhuǎn),應(yīng)該是想當(dāng)然了箫攀。

4.iMessage只能通過URL Scheme的方式打開自己的Containing App肠牲,無法打開其他App,且url的shceme沒有時(shí)靴跛,無法打開任何app缀雳。哪怕Containing App沒有配置URL Scheme,iMessage依舊可以打開梢睛,url的scheme只要不為空肥印,則只能打開Containing App。
這里是蘋果對(duì)

- (void)openURL:(NSURL *)URL completionHandler:(void (^)(BOOL success))completionHandler;

這個(gè)方法的解釋:
Each extension point determines whether to support this method, or under which conditions to support this method. In iOS 8, only the Today extension point (used for creating widgets) supports this method.
Important

Apple allows a widget to use the openURL:completionHandler: method to open the widget’s own containing app.

If you employ this method to open other apps from your widget, your App Store submission might entail additional review to ensure compliance with the intent of widgets.

To learn more, read App Store Review Guidelines and iOS Human Interface Guidelines, linked to from Apple’s App Review Support page
看樣子绝葡,在iOS8的時(shí)候深碱,today可以通過這個(gè)方法調(diào)起其他的App,但是蘋果覺得不妥藏畅,就通過審核的方式禁止敷硅,在后來的某個(gè)版本中,蘋果直接不管你的URL墓赴,只要scheme不為空竞膳,就只能打開Containing App

  1. 假設(shè)接收方裝了Container App航瞭,那么我們最希望的場(chǎng)景應(yīng)該是對(duì)方點(diǎn)擊message之后跳轉(zhuǎn)到自己的App诫硕。于是非常自然的會(huì)想到在這兩個(gè)方法中做一些處理:
-(void)willSelectMessage:(MSMessage *)message conversation:(MSConversation *)conversation;
-(void)didSelectMessage:(MSMessage *)message conversation:(MSConversation *)conversation;

然后就會(huì)驚喜的發(fā)現(xiàn):第一次點(diǎn)擊是OK的,順利的跳轉(zhuǎn)到了Container App刊侯,然后回來再點(diǎn)擊卻發(fā)現(xiàn)沒卵用了章办,不是打開Container App,而是打開iMessage App。而且通過打斷點(diǎn)發(fā)現(xiàn)毫無反應(yīng)藕届。這是因?yàn)楫?dāng)調(diào)轉(zhuǎn)到Container App之后iMessage App就已經(jīng)退出了挪蹭,可以試試在這兩個(gè)方法中打Log試試:

-(void)willResignActiveWithConversation:(MSConversation *)conversation;
-(void)didResignActiveWithConversation:(MSConversation *)conversation;

既然點(diǎn)擊message后會(huì)喚起iMessage App,那么不妨在這兩個(gè)方法中加入一些邏輯:

-(void)willBecomeActiveWithConversation:(MSConversation *)conversation;
-(void)didBecomeActiveWithConversation:(MSConversation *)conversation;

為了選擇能夠盡早進(jìn)入Container App休偶,我是這么寫的:

-(void)willBecomeActiveWithConversation:(MSConversation *)conversation {
    if (conversation.selectedMessage) {
        [self.extensionContext openURL:[NSURL URLWithString:@"containerAppDemo://"] completionHandler:nil];
    }
}
  1. 對(duì)于試圖利用AppDelegate對(duì)象在Extension中試圖使用URL Schemers跳轉(zhuǎn)到自家Container App的同學(xué)梁厉,不妨這么寫:
    if (conversation.selectedMessage) {
        [self.extensionContext openURL:[NSURL URLWithString:@"containerAppDemo://"] completionHandler:nil];

絕大部分Extension的UIViewController都有這個(gè)屬性

@interface UIViewController(NSExtensionAdditions) <NSExtensionRequestHandling>

// Returns the extension context. Also acts as a convenience method for a view controller to check if it participating in an extension request.
@property (nullable, nonatomic,readonly,strong) NSExtensionContext *extensionContext NS_AVAILABLE_IOS(8_0);

@end

本人還是小菜雞一枚,還望各位大神不吝賜教踏兜。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末词顾,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子碱妆,更是在濱河造成了極大的恐慌肉盹,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,635評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件疹尾,死亡現(xiàn)場(chǎng)離奇詭異上忍,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)纳本,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門窍蓝,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人饮醇,你說我怎么就攤上這事它抱。” “怎么了朴艰?”我有些...
    開封第一講書人閱讀 168,083評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵观蓄,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我祠墅,道長(zhǎng)侮穿,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,640評(píng)論 1 296
  • 正文 為了忘掉前任毁嗦,我火速辦了婚禮亲茅,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘狗准。我一直安慰自己克锣,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評(píng)論 6 397
  • 文/花漫 我一把揭開白布腔长。 她就那樣靜靜地躺著袭祟,像睡著了一般。 火紅的嫁衣襯著肌膚如雪捞附。 梳的紋絲不亂的頭發(fā)上巾乳,一...
    開封第一講書人閱讀 52,262評(píng)論 1 308
  • 那天您没,我揣著相機(jī)與錄音,去河邊找鬼胆绊。 笑死氨鹏,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的压状。 我是一名探鬼主播仆抵,決...
    沈念sama閱讀 40,833評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼种冬!你這毒婦竟也來了肢础?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,736評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤碌廓,失蹤者是張志新(化名)和其女友劉穎传轰,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體谷婆,經(jīng)...
    沈念sama閱讀 46,280評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡慨蛙,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了纪挎。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片期贫。...
    茶點(diǎn)故事閱讀 40,503評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖异袄,靈堂內(nèi)的尸體忽然破棺而出通砍,到底是詐尸還是另有隱情,我是刑警寧澤烤蜕,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布封孙,位于F島的核電站,受9級(jí)特大地震影響讽营,放射性物質(zhì)發(fā)生泄漏虎忌。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評(píng)論 3 333
  • 文/蒙蒙 一橱鹏、第九天 我趴在偏房一處隱蔽的房頂上張望膜蠢。 院中可真熱鬧,春花似錦莉兰、人聲如沸挑围。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽杉辙。三九已至,卻和暖如春寂嘉,著一層夾襖步出監(jiān)牢的瞬間奏瞬,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工泉孩, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留硼端,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,909評(píng)論 3 376
  • 正文 我出身青樓寓搬,卻偏偏與公主長(zhǎng)得像珍昨,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子句喷,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評(píng)論 2 359

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