MMWormholeiOS 通訊框架
MMWormhole 是 iOS 擴(kuò)展與宿主應(yīng)用的通訊框架。在iOS或OS X擴(kuò)展與其包含的應(yīng)用程序之間建立了橋梁。用于在兩個(gè)位置之間來(lái)回傳遞數(shù)據(jù)或命令。郵件被存檔到寫(xiě)入應(yīng)用程序共享應(yīng)用程序組的文件中。該效果與應(yīng)用程序和擴(kuò)展之間的進(jìn)程間通信非常相似,盡管擴(kuò)展和包含應(yīng)用程序之間不存在真正的進(jìn)程間通信。
還支持CFNotificationCenter達(dá)爾文通知,以支持實(shí)時(shí)更改通知。當(dāng)消息傳遞到 wormhole 時(shí),感興趣的各方可以在 wormhole 的任何一側(cè)偵聽(tīng)并收到這些更改的通知。當(dāng)通過(guò) wormhole 發(fā)送消息時(shí),其效果幾乎是雙方的即時(shí)更新。
MMWormhole旨在簡(jiǎn)化在擴(kuò)展及其包含的應(yīng)用程序之間共享非?;镜男畔⒑兔畹倪^(guò)程。無(wú)論包含應(yīng)用程序正在運(yùn)行與否,其都應(yīng)保持穩(wěn)定,但只有在應(yīng)用程序在后臺(tái)喚醒時(shí),通知才會(huì)在包含應(yīng)用程序中觸發(fā)。這使得MMWormhole非常適合包含應(yīng)用程序已經(jīng)通過(guò)某種形式的后臺(tái)模式運(yùn)行的情況。
MMWormhole使用NSKeyedArchiver作為序列化介質(zhì),因此任何與NSCoding兼容的對(duì)象都可以作為消息。對(duì)于許多應(yīng)用程序而言,共享簡(jiǎn)單的字符串,數(shù)字或JSON對(duì)象足以驅(qū)動(dòng)Widget或Apple Watch應(yīng)用程序的UI。可以輕松地將消息作為存檔文件發(fā)送和保存,并在以后喚醒應(yīng)用或擴(kuò)展程序時(shí)閱讀。
示例:
[self.wormhole passMessageObject:@{@"buttonNumber" : @(1)} identifier:@"button"];
[self.wormhole listenForMessageWithIdentifier:@"button"
listener:^(id messageObject) {
self.numberLabel.text = [messageObject[@"buttonNumber"] stringValue];
}];
