2013-01-21 29 views

回答

1

Viber應用程序的網絡質量是指數據連接。

在NSURLConnectionDataDelegate的connection:didReceiveResponse:處設置開始時間,然後發送一些內容並對connection:didReceiveData:處的字節進行計數。在connectionDidFinishLoading:設置完成時間,計算時間間隔並將其與您的任意閾值進行匹配。

1

我感覺默認的iOS框架會有這些信息(請看iOS中的網絡庫)。如果沒有,您可以查看ping時間(在後臺ping一個URL並查看延遲量,確保您使用的服務器始終可用並且速度很快,ping google.com也許?)

+0

我真的很喜歡這個答案,我腦海裏唯一的問題是檢查ping是否會使用大量資源。你有這樣做的最佳方式?否則一個好主意! – Septronic

+0

不是,你已經在做VoIP了,發送頻率很高的語音包。因此,每秒鐘ping一次都不會有太大的變化。我需要補充說明ping Google的想法是錯誤的,您希望顯示與您的服務器的連接,以便您能夠Ping自己的服務並將響應時間與預期進行比較。 –

+0

稍微輕一點的方法可能是保持連接打開並接收連續數據(服務器必須能夠發送數據流,例如每秒鐘1個字節)。這會更輕,因爲它每次都會節省創建一個新數據包,這會產生開銷(數據包標題,打開新連接,握手等) –

0

因此,我環顧四周,閱讀了Ege Akpinar之前給出的非常有用的答案,並且偶然發現了這篇文章。他們使用蘋果自己的類,它可以在Mac OSX和iOS中使用:

Get ping latency from host

蘋果的樣品鏈接,可通過上面的鏈接,但效率和速度的緣故,這裏是它的直接鏈接:

https://developer.apple.com/library/mac/samplecode/SimplePing/Introduction/Intro.html#//apple_ref/doc/uid/DTS10000716-Intro-DontLinkElementID_2

我還發現另一個帖子裏介紹瞭如何使用斯威夫特實現類。我想我可能有它,如果你使用的是斯威夫特:

Using Simple Ping in swift (iOS)

我希望這會有些用處。