中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

如何做視頻網(wǎng)站的廣告推廣網(wǎng)站平臺(tái)做推廣

如何做視頻網(wǎng)站的廣告推廣,網(wǎng)站平臺(tái)做推廣,服務(wù)器網(wǎng)站后臺(tái)登陸密碼黃框顯示,陜西建設(shè)網(wǎng)站電子政務(wù)大廳文章目錄 背景介紹方案及代碼1、新建MAUI項(xiàng)目2、建立NSUrlSession會(huì)話連接3、使用NSUrlSessionDownloadTask 創(chuàng)建下載任務(wù)4、DidWriteData 監(jiān)聽下載5、DidFinishDownloading 完成下載6、CancelDownload (取消/暫停)下載7、ResumeDownload 恢復(fù)下載8、殺死進(jìn)程-恢復(fù)下載 效果圖總…

文章目錄

  • 背景
  • 介紹
  • 方案及代碼
    • 1、新建MAUI項(xiàng)目
    • 2、建立NSUrlSession會(huì)話連接
    • 3、使用NSUrlSessionDownloadTask 創(chuàng)建下載任務(wù)
    • 4、DidWriteData 監(jiān)聽下載
    • 5、DidFinishDownloading 完成下載
    • 6、CancelDownload (取消/暫停)下載
    • 7、ResumeDownload 恢復(fù)下載
    • 8、殺死進(jìn)程-恢復(fù)下載
  • 效果圖
  • 總結(jié)

背景

最近在MAUI項(xiàng)目中碰到了大文件下載方面的需求,要求可以實(shí)現(xiàn)顯示下載進(jìn)度、暫停、繼續(xù)下載等,在開發(fā)過程中也是碰到了不少問題,所以在此簡(jiǎn)單分享使用MAUI在IOS上完成下載功能的經(jīng)驗(yàn),也希望大家少踩坑。文章中如有不妥的地方,也請(qǐng)多多指教。

介紹

NSURLSession 是 iOS 中用于處理網(wǎng)絡(luò)請(qǐng)求和數(shù)據(jù)下載的核心類之一。它提供了強(qiáng)大的功能,使應(yīng)用程序能夠與遠(yuǎn)程服務(wù)器通信、下載文件、上傳數(shù)據(jù)等。
本文我們借助NSUrlSession 中的NSUrlSessionDownloadTask來創(chuàng)建下載任務(wù)。
下載任務(wù)直接將服務(wù)器的響應(yīng)數(shù)據(jù)寫入臨時(shí)文件,在數(shù)據(jù)從服務(wù)器到達(dá)時(shí)為應(yīng)用提供進(jìn)度更新。
在后臺(tái)會(huì)話中使用下載任務(wù)時(shí),即使應(yīng)用處于掛起狀態(tài)或未運(yùn)行,這些下載也會(huì)繼續(xù)。
可以暫停(取消)下載任務(wù),稍后再恢復(fù)它們(需要服務(wù)端支持)還可以恢復(fù)由于網(wǎng)絡(luò)連接問題而失敗的下載
此方法內(nèi)部實(shí)現(xiàn)了一邊下載,一邊將下載數(shù)據(jù)寫入沙盒的操作,下載完成后會(huì)自動(dòng)刪除沙盒中的文件,所以我們需要在回調(diào)(DidFinishDownloading)中將文件移動(dòng)至其他位置進(jìn)行保存。

方案及代碼

1、新建MAUI項(xiàng)目

image.png
image.png

2、建立NSUrlSession會(huì)話連接

這里我們使用的網(wǎng)路連接類為NSUrlSession,它提供了一個(gè)用于發(fā)出網(wǎng)絡(luò)請(qǐng)求和處理異步網(wǎng)絡(luò)任務(wù)的 API并且它支持后臺(tái)傳輸。在初始化NSUrlSession之前,我們需要先創(chuàng)建NSUrlSessionConfiguration,它是NSUrlSession中的一個(gè)重要的配置,NSUrlSessionConfiguration 有三種模式:

  • DefaultSessionConfiguration(默認(rèn)模式)
  • BackgroundSessionConfiguration (后臺(tái)模式) :后臺(tái)模式允許你創(chuàng)建一個(gè)后臺(tái)會(huì)話,該會(huì)話可以在應(yīng)用程序處于后臺(tái)或掛起狀態(tài)時(shí)繼續(xù)進(jìn)行網(wǎng)絡(luò)請(qǐng)求。你需要提供一個(gè)唯一的標(biāo)識(shí)符(identifier),以便在應(yīng)用程序重新啟動(dòng)時(shí)恢復(fù)會(huì)話。
  • EphemeralSessionConfiguration(瞬時(shí)模式) :創(chuàng)建一個(gè)臨時(shí)會(huì)話,它在請(qǐng)求結(jié)束后不會(huì)持久化任何數(shù)據(jù),包括緩存和存儲(chǔ)的憑據(jù)。適用于需要臨時(shí)性的、不需要持久化數(shù)據(jù)的請(qǐng)求,例如臨時(shí)登錄或隱私敏感的請(qǐng)求。

我們先在項(xiàng)目中新建IOSDownloadManagerService.cs然后繼承于Microsoft.iOS 中的NSUrlSessionDownloadDelegate方法,然后建立NSUrlSession會(huì)話連接
這里我們使用BackgroundSessionConfiguration 模式創(chuàng)建后臺(tái)下載任務(wù)。
注意無論下載多少文件,我們只需要初始化一個(gè)URLSession
image.png

3、使用NSUrlSessionDownloadTask 創(chuàng)建下載任務(wù)

這里我們使用 NSUrlSessionDownloadTask來實(shí)現(xiàn)下載,資源會(huì)下載到一個(gè)臨時(shí)文件,下載完成需將文件移動(dòng)至想要的路徑,系統(tǒng)會(huì)刪除臨時(shí)路徑文件。
image.png

4、DidWriteData 監(jiān)聽下載

開始下載后我們可以通過 重寫 DidWriteData 方法來獲取當(dāng)前正在下載的文件信息,包括 當(dāng)前的session會(huì)話、當(dāng)前的下載任務(wù)NSURLSessionDownloadTask、本次傳遞過來的數(shù)據(jù)量、目前為止下載了多少的數(shù)據(jù)等。 我們通過這些信息來計(jì)算當(dāng)前下載速度,下載進(jìn)度等。
image.png

打印下載進(jìn)度監(jiān)聽日志

image.png
image.png

5、DidFinishDownloading 完成下載

下載完成后,會(huì)觸發(fā)DidFinishDownloading事件
通過重寫DidFinishDownloading來監(jiān)聽下載完成事件,將文件移動(dòng)到自己想保存的路徑下。
image.png

到這里我們就完成一個(gè)基礎(chǔ)的文件下載功能。當(dāng)然一個(gè)完整的下載管理功能,我們還需要具備暫停下載、恢復(fù)下載、后臺(tái)下載、殺死進(jìn)程后恢復(fù)下載等功能的支持。

6、CancelDownload (取消/暫停)下載

我們可以通過NSUrlSessionDownloadTaskCancel方法來暫?;蛉∠螺d任務(wù),Cancel方法會(huì)回調(diào)一個(gè)NSData格式斷點(diǎn)數(shù)據(jù)給我們,然后我們可以將斷點(diǎn)數(shù)據(jù)保存起來,用于后續(xù)恢復(fù)下載。
在此之前我們需要調(diào)整 StartDownload 方法,將文件下載任務(wù)NSUrlSessionDownloadTask 存起來,用戶后續(xù)恢復(fù)下載。
image.png
CancelDownload 暫停/取消下載
image.png

注意:僅滿足以下條件時(shí),才能恢復(fù)下載:
1、首次請(qǐng)求資源以來,資源未發(fā)生更改
2、任務(wù)是 HTTP 或 HTTPS 請(qǐng)求GET
3、服務(wù)器在其響應(yīng)中提供 or 頭或者同時(shí)提供 ETagLast-Modified
4、服務(wù)器支持字節(jié)范圍請(qǐng)求
5、系統(tǒng)尚未刪除臨時(shí)文件

7、ResumeDownload 恢復(fù)下載

這里我們利用 NSUrlSessionCreateDownloadTask(NSData resumeData) 方法根據(jù) 斷點(diǎn)數(shù)據(jù) 創(chuàng)建一個(gè)新的下載任務(wù),以便從之前中斷的位置繼續(xù)下載。
image.png

8、殺死進(jìn)程-恢復(fù)下載

這里我們使用 DidCompleteWithError 方法來監(jiān)聽載任務(wù)錯(cuò)誤事件包括殺死進(jìn)程
當(dāng)我們的正在執(zhí)行下載任務(wù)的應(yīng)用程序被異常殺掉進(jìn)程后,重新啟動(dòng)后會(huì)進(jìn)入DidCompleteWithError方法,所以我們要想恢復(fù)下載就需要先獲取下載任務(wù)的斷點(diǎn)數(shù)據(jù),這一點(diǎn)我們可以利用本地存儲(chǔ),提前將斷點(diǎn)數(shù)據(jù)存入到本地文件中。
Maui.Essentials
image.png
DidCompleteWithError
image.png
到此,基本上大功告成了。

效果圖

fcli2-ikon4.gif

總結(jié)

本文主要介紹了基于IOS下載中的幾個(gè)關(guān)鍵方法,還是主要以介紹思路為主。
為了便于展示,文章中的代碼示例拆得比較分散,大家還是以熟悉主要流程和主要方法為先,至于實(shí)現(xiàn)方式,八仙過海各顯神通。

關(guān)于NSURLSessionDownloadTask 更多的內(nèi)容請(qǐng)參考官方文檔

https://developer.apple.com/documentation/foundation/nsurlsessiondownloadtask

最后,由于文章篇幅有限,對(duì)于UI部分渲染的部分并沒有展示,由于數(shù)據(jù)渲染還是比較簡(jiǎn)單,大家可以基于Blazor實(shí)現(xiàn),也可直接使用MAUI ProgressBar等,這里就不過多介紹,對(duì)MAUI與Blazor感興趣的朋友可自行深入研究。

http://www.risenshineclean.com/news/42010.html

相關(guān)文章:

  • 公司網(wǎng)站設(shè)計(jì)意見百度搜索排名購(gòu)買
  • 申請(qǐng)自助網(wǎng)站深圳網(wǎng)站設(shè)計(jì)專業(yè)樂云seo
  • 四川省的建設(shè)廳注冊(cè)中心網(wǎng)站首頁(yè)怎么創(chuàng)建自己的網(wǎng)站平臺(tái)
  • 網(wǎng)站建設(shè)費(fèi)應(yīng)計(jì)入什么科目網(wǎng)站優(yōu)化排名軟件哪些最好
  • 羅湖網(wǎng)站建設(shè)公司上海高端網(wǎng)站建設(shè)
  • 哪個(gè)網(wǎng)站可以做免費(fèi)請(qǐng)?zhí)W(wǎng)頁(yè)設(shè)計(jì)與制作期末作品
  • 變態(tài)傳奇手游網(wǎng)頁(yè)優(yōu)化公司
  • 鹽城網(wǎng)站平臺(tái)建設(shè)百度網(wǎng)盤網(wǎng)頁(yè)版
  • 網(wǎng)站改備案信息嗎最新的疫情信息
  • 銅山網(wǎng)站建設(shè)seo基本步驟
  • 網(wǎng)頁(yè)設(shè)計(jì)制作網(wǎng)站模板免費(fèi)簡(jiǎn)述seo和sem的區(qū)別
  • 專業(yè)網(wǎng)站建站公司合肥網(wǎng)站設(shè)計(jì)
  • 邢臺(tái)地區(qū)網(wǎng)站建設(shè)個(gè)人怎么在百度上做推廣
  • 每天做特賣的網(wǎng)站是哪個(gè)關(guān)鍵詞優(yōu)化推廣排名
  • 蘇州企業(yè)網(wǎng)站seo怎么關(guān)閉seo綜合查詢
  • 聊城做網(wǎng)站最好的網(wǎng)絡(luò)公司網(wǎng)絡(luò)宣傳方案
  • 無限制的網(wǎng)站訪問網(wǎng)站推廣的具體方案
  • 點(diǎn)墨網(wǎng)站網(wǎng)站seo設(shè)置是什么
  • 手機(jī)咋做網(wǎng)站微博指數(shù)查詢
  • 動(dòng)漫設(shè)計(jì)與游戲制作專業(yè)長(zhǎng)沙seo招聘
  • 網(wǎng)站正在升級(jí)建設(shè)中代碼seo優(yōu)化培訓(xùn)課程
  • 模板網(wǎng)站建設(shè)珠海廣東又出現(xiàn)新病毒
  • 杭州建設(shè)網(wǎng) 執(zhí)法人員名單seo營(yíng)銷名詞解釋
  • 國(guó)外網(wǎng)站國(guó)內(nèi)做二維碼企業(yè)網(wǎng)站營(yíng)銷的典型案例
  • 學(xué)生管理系統(tǒng) 靜態(tài)網(wǎng)站源碼如何開展網(wǎng)絡(luò)營(yíng)銷活動(dòng)
  • 做分銷的官網(wǎng)網(wǎng)站北京整站線上推廣優(yōu)化
  • 如何做行業(yè)網(wǎng)站寧波網(wǎng)站優(yōu)化
  • 怎么做學(xué)校網(wǎng)站和微信公眾號(hào)域名查詢 ip
  • 東阿網(wǎng)站建設(shè)百度seo流量
  • 我想注冊(cè)公司怎么注冊(cè)網(wǎng)站排名優(yōu)化服務(wù)