前言
最近有點(diǎn)時間,請隨意記住之前關(guān)于UPnP技術(shù)的現(xiàn)實,想想需要好好整理一下。
2016年做了一個項目有這種需求:將手機(jī)本地音樂或者其他第三方的音樂資源送到一款智能音樂播放設(shè)備進(jìn)行播放,當(dāng)時就懵逼啦!最后也是通過網(wǎng)上找資料才實現(xiàn)的,雖然功能實現(xiàn)了,但是感覺現(xiàn)在有必要整理一番,順便講講心得哈!正文
DLNA,這里就借用百度百科上的吧:
DLNA的全稱是DIGITAL LIVING NETWORK ALLIANCE(數(shù)字生活網(wǎng)絡(luò)聯(lián)盟), 其宗旨是Enjoy your music, photos and videos, anywhere anytime, DLNA(Digital Living Network Alliance) 由索尼、英特爾、微軟等發(fā)起成立、旨在解決個人電腦,消費(fèi)電器,移動設(shè)備在內(nèi)無線網(wǎng)絡(luò)和有線網(wǎng)絡(luò)的互聯(lián)互通,使得數(shù)字媒體和內(nèi)容服務(wù)的無限制的共享和增長成為可能,目前成員公司已達(dá)280多家。
UPnP
通用即插即用(英語:Universal Plug and Play,簡稱UPnP)是由“通用即插即用論壇”(UPnP? Forum)推廣的一套網(wǎng)絡(luò)協(xié)議。該協(xié)議的目標(biāo)是使家庭網(wǎng)絡(luò)(數(shù)據(jù)共享、通信和娛樂)和公司網(wǎng)絡(luò)中的各種設(shè)備能夠相互無縫連接,并簡化相關(guān)網(wǎng)絡(luò)的實現(xiàn)。UPnP通過定義和發(fā)布基于開放、因特網(wǎng)通訊網(wǎng)協(xié)議標(biāo)準(zhǔn)的UPnP設(shè)備控制協(xié)議來實現(xiàn)這一目標(biāo)。
網(wǎng)上資料其實現(xiàn)在也越來越多了,但是個人覺得,作為iOS開發(fā)能用系統(tǒng)原生方案,何必使用第三方呢,可能是我比較喜歡原生的吧!
整個upnp的實現(xiàn)需要三個要素:
1、渲染器(播放視頻、播放音樂的設(shè)備)
2、服務(wù)(DMS),其實就是設(shè)備提供的服務(wù),比如我這個音樂播放器提供播放音樂服務(wù),具體設(shè)備提供哪些服務(wù)還得看設(shè)備
3、控制點(diǎn),作為遙控裝置使用,可尋找 DMS 上可播放的媒體檔案,并指定到可播放該內(nèi)容的終端播放裝置進(jìn)行播放的動作。
關(guān)于具體的詳細(xì)介紹我就不多講了,可以參考[這個人寫的](https://eliyar.biz/DLNA_with_iOS_Android/),我今天的任務(wù)是將封裝好的dlna工具分享給大家哈。
干貨
YPnP管理者:YMUpnpManager
@interface YMUpnpManager : NSObject
+ (instancetype)manager;
功能總體上分為兩大類:
1、通過發(fā)送upd消息進(jìn)行設(shè)備搜索
2、對搜索到的設(shè)備進(jìn)行各種功能演示,比如設(shè)置URI資源,播放等等操作,
3、輔助方法
/**
選擇具體的設(shè)備,
在真實場景中,可能存在有多個服務(wù)設(shè)備,這個時候必須選中一個進(jìn)行接下來的交互,
如果這步?jīng)]有進(jìn)行,則接下來的步驟將無法進(jìn)行
*/
- (void)selectedDevice:(YMUpnpDevice*)device;
在數(shù)據(jù)請求中,沒有按照網(wǎng)上很多很low的代理方式進(jìn)行回調(diào),而是使用了block的方式,因為這里在針對數(shù)據(jù)回調(diào)上使用代理是非常不合理的,在程序設(shè)計上使用block也比較順手,更加注重“一呼即答”設(shè)計理念。
針對網(wǎng)上缺失的訂閱方面的資源進(jìn)行補(bǔ)充(只經(jīng)過理論測試哈)
/**
發(fā)送訂閱消息
@param time 訂閱事件
@param callBack 回調(diào)地址
@param serverType 服務(wù)類型
接收回調(diào)會在內(nèi)部建立一個http server,需要保存sid
*/
- (void)sendSubcirbeWithTime:(int)time callBack:(NSString*)callBack serverType:(YMUpnpServerType)serverType result:(void(^)(BOOL success))result;
/**
續(xù)訂某項服務(wù)
注意:要在之前訂閱的時間之前發(fā)起,否則無效
@param time 續(xù)訂的時間
@param serverType 服務(wù)類型
*/
- (void)contractSubscirbeWithTime:(int)time serverType:(YMUpnpServerType)serverType result:(void(^)(BOOL success))result;
/**
移除訂閱
@param serverType 服務(wù)類型
*/
- (void)removeSubscirbeWithServerType:(YMUpnpServerType)serverType result:(void(^)(BOOL success))result;
將手機(jī)變成DMS實現(xiàn)具體的itunes音樂和本地phone服務(wù)操作
「鏈接」點(diǎn)擊這個鏈接查看相關(guān)介紹哈
1、首先我之前的項目是借助Pla框架實現(xiàn)的
2、啟動服務(wù)
/**
啟動itunes音樂服務(wù)
*/
- (void)intendStartItunesMusicServerWithServerName:(NSString *)theName {
[self initUPnP];
itunesServer = [[PLT_MediaServerObject alloc] initServerSelfDelegateWithServerName:theName];
itunesDMSDelegate = [[ItunesMusicDMSDelegate alloc] init];
[itunesServer setDelegate:itunesDMSDelegate];
[upnp addDevice:itunesServer];
}
photo服務(wù)啟動
/**
啟動圖片server
*/
- (void)intendStartIOSPhotoServerWithServerName:(NSString *)theName {
[self initUPnP];
// photoServer = [[PLT_MediaServerObject alloc] initServerSelfDelegateWithServerName:theName];
// photoDMSDelegate = [[PhotoDMSDelegate alloc] init];
// [photoServer setDelegate:photoDMSDelegate];
// [upnp addDevice:photoServer];
}
只有啟動服務(wù)后,才會有服務(wù)點(diǎn),這些是系統(tǒng)自帶的。
上面代碼比較陳舊,有需要的可以自行找下那個Pla哈,我這個項目寫的比較亂,不想整理了
注意點(diǎn)
對于某種的設(shè)備進(jìn)行什么操作,雖然可以通過獲取設(shè)備詳細(xì)的服務(wù)來獲取,但是針對一些實際開發(fā)場景,你會對你的設(shè)備有哪些功能會不知道嗎?所以,demo中的一些功能也只是大眾化的操作,這些upnp指令都是固定的,具體需要用到其他功能,需要根據(jù)設(shè)備的實現(xiàn)。
咱寫這篇文章就是想讓大家知道dlna其實一點(diǎn)都不難哈!或許是我們接觸的較少才會對這方面的知識比較陌生,然后給大家提供[下載地址](https://github.com/Mamakou/DLNA_UPNP-Manager),如果喜歡記得點(diǎn)個贊就好,點(diǎn)個贊就好,點(diǎn)個贊就好。
活在當(dāng)下,不努力就是一種慢性自殺,學(xué)習(xí)才能使自己進(jìn)步,才能變成高富帥,贏取白富美,達(dá)到人生巔峰!謝謝!??!
1.《怎么設(shè)置dlna?總結(jié)很全面速看!iOS 使用Upnp實現(xiàn)DLNA投屏技術(shù)》援引自互聯(lián)網(wǎng),旨在傳遞更多網(wǎng)絡(luò)信息知識,僅代表作者本人觀點(diǎn),與本網(wǎng)站無關(guān),侵刪請聯(lián)系頁腳下方聯(lián)系方式。
2.《怎么設(shè)置dlna?總結(jié)很全面速看!iOS 使用Upnp實現(xiàn)DLNA投屏技術(shù)》僅供讀者參考,本網(wǎng)站未對該內(nèi)容進(jìn)行證實,對其原創(chuàng)性、真實性、完整性、及時性不作任何保證。
3.文章轉(zhuǎn)載時請保留本站內(nèi)容來源地址,http://f99ss.com/gl/2980033.html