国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

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

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

如何做視頻網(wǎng)站的廣告推廣,網(wǎng)站平臺做推廣,服務(wù)器網(wǎng)站后臺登陸密碼黃框顯示,陜西建設(shè)網(wǎng)站電子政務(wù)大廳文章目錄 背景介紹方案及代碼1、新建MAUI項(xiàng)目2、建立NSUrlSession會話連接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會話連接
    • 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ā)過程中也是碰到了不少問題,所以在此簡單分享使用MAUI在IOS上完成下載功能的經(jīng)驗(yàn),也希望大家少踩坑。文章中如有不妥的地方,也請多多指教。

介紹

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

方案及代碼

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

image.png
image.png

2、建立NSUrlSession會話連接

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

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

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

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

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

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

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

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

image.png
image.png

5、DidFinishDownloading 完成下載

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

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

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

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

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

7、ResumeDownload 恢復(fù)下載

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

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

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

效果圖

fcli2-ikon4.gif

總結(jié)

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

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

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

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

http://aloenet.com.cn/news/42010.html

相關(guān)文章:

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