Problem:
I have been using the MVVMCross Connectivity plugin for a project. I went to upgrade theWP UI to windows phone 8.1 and hit issues immediately. This is due to the Inversion of Control
layer for Windows Phone in the plugin. The plugin is using deprecated functionality mainly the DnsEndPoint as part of the Microsoft.Phone.Net namespace. This is how the plugin is determining if a phone is connected. This requires the change be applied for IsPingReachable method in the Connectivity class in the Windows Phone UI layer for the plugin.
Solution:
Update the connectivity library for MVVMCross with this info1.) Test for internet connection on Phone
//Get the Internet connection profile
string connectionProfileInfo = string.Empty;
try {
ConnectionProfile InternetConnectionProfile = NetworkInformation.GetInternetConnectionProfile();
if (InternetConnectionProfile == null) {
NotifyUser("Not connected to Internet\n");
}
else {
connectionProfileInfo = GetConnectionProfile(InternetConnectionProfile);
NotifyUser("Internet connection profile = " +connectionProfileInfo);
}
}
catch (Exception ex) {
NotifyUser("Unexpected exception occurred: " + ex.ToString());
}
2.) Get Connectivity properties for Windows Phone 8.1
using Windows.Networking.Connectivity;
/// <summary>
/// Detect the current connection type
/// </summary>
/// <returns>
/// 2 for 2G, 3 for 3G, 4 for 4G
/// 100 for WiFi
/// 0 for unknown or not connected</returns>
private static byte GetConnectionGeneration()
{
ConnectionProfile profile = NetworkInformation.GetInternetConnectionProfile();
if (profile.IsWwanConnectionProfile)
{
WwanDataClass connectionClass = profile.WwanConnectionProfileDetails.GetCurrentDataClass();
switch (connectionClass)
{
//2G-equivalent
case WwanDataClass.Edge:
case WwanDataClass.Gprs:
return 2;
//3G-equivalent
case WwanDataClass.Cdma1xEvdo:
case WwanDataClass.Cdma1xEvdoRevA:
case WwanDataClass.Cdma1xEvdoRevB:
case WwanDataClass.Cdma1xEvdv:
case WwanDataClass.Cdma1xRtt:
case WwanDataClass.Cdma3xRtt:
case WwanDataClass.CdmaUmb:
case WwanDataClass.Umts:
case WwanDataClass.Hsdpa:
case WwanDataClass.Hsupa:
return 3;
//4G-equivalent
case WwanDataClass.LteAdvanced:
return 4;
//not connected
case WwanDataClass.None:
return 0;
//unknown
case WwanDataClass.Custom:
default:
return 0;
}
}
else if (profile.IsWlanConnectionProfile)
{
return 100;
}
return 0;
}
Source
- https://msdn.microsoft.com/en-us/library/windows/apps/xaml/hh452991.aspx
- http://stackoverflow.com/questions/24003786/how-to-get-connection-and-carrier-information-in-windows-phone-8-1-runtime
No comments:
Post a Comment