MSDN Library

快速入门:检索网络连接信息(使用 JavaScript 和 HTML 的 Windows 应用商店应用)

本主题向你介绍如何检索设备上网络连接的连接详细信息和使用信息。

先决条件

以下示例使用 JavaScript,且基于网络信息示例。 有关创建第一个应用的帮助,请参阅创建第一个采用 JavaScript 的 Windows 应用商店应用

为了使你的 Windows 应用商店应用能够使用网络,你必须在项目 Package.appxmanifest 文件中设置此功能。 有关每个网络功能的定义,请参阅如何配置网络隔离功能

什么是连接配置文件?

一个 ConnectionProfile 即代表设备上已建立的一个网络连接。从 ConnectionProfile 中访问的信息可用于确定当前连接水平、跟踪数据使用情况,或者确定用于维护连接的网络适配器。通过注册,从而通知你所连接的 ConnectionProfile 的属性更改,Windows 应用商店应用可在针对网络环境的变化调整行为时做出正确的选择。有关如何注册以便接收这些更改的通知的详细信息,请参阅快速入门:管理连接事件和可用性更改

有关更具体的情况,例如一些经常漫游且使用按流量计费网络的移动设备的联网应用程序,ConnectionProfile 所提供的成本和数据计划信息可用于防止意外被运营商收取服务费用。有关详细信息,请参阅快速入门:管理按流量计费的网络成本约束

检索连接配置文件

首先,我们需要定义一些变量;一个 NetworkInformation 实例,以定义你的应用用来检索 ConnectionProfile 的方法。然后是一个 NetworkCostType 实例,以定义 ConnectionProfile 所表示的可能的网络成本类型。


var networkInfo = Windows.Networking.Connectivity.NetworkInformation;
var networkCostInfo = Windows.Networking.Connectivity.NetworkCostType;


NetworkInformation 类定义了ConnectionProfile 检索的两种方法。GetInternetConnectionProfile 方法仅返回与 Internet 连接关联的配置文件。


function DisplayInternetConnectionProfileInfo() {
    try {
        var internetProfile = networkInfo.getInternetConnectionProfile();
        mySample.displayStatus(GetConnectionProfileInfo(internetProfile));
    }
    catch (e) {
        mySample.displayError("Exception Caught: " + e + "\n\r");
    }
}


调用 GetConnectionProfiles 方法时将在配置文件中检索设备上目前已建立的所有连接(包括 Internet 连接)。


function DisplayConnectionProfileList() {
    var profileList = "";
    try {
        var ConnectionProfiles = networkInfo.getConnectionProfiles();
        if (ConnectionProfiles.length != 0) {
            for (var i = 0; i < ConnectionProfiles.length; i++) {

                profileList += GetConnectionProfileInfo(ConnectionProfiles[i]);
                profileList += "----------------------------------------------------------------\n\r";
            }
            mySample.displayStatus(profileList);
        }
        else {
            mySample.displayStatus("No profiles found");
        }
    }

    catch (e) {
        mySample.displayError("Exception Caught: " + e + "\n\r");
    }
}


从连接配置文件访问信息

从每个 ConnectionProfile 中,可以访问以下连接信息:

数据来自描述

连接成本

ConnectionCost

提供连接成本详细信息,包括数据限制和漫游信息。

成本类型

NetworkCostType

指示连接目前所用的网络的成本类型。

数据计划状态与使用情况

DataPlanStatusDataPlanUsage

提供连接所关联的数据计划的具体使用信息。

本地使用情况

DataUsage

提供本地连接的使用信息。

网络适配器

NetworkAdapter

标识可为连接提供连接功能的网络适配器。

 

下面的示例函数在被传递 ConnectionProfile 时会调用对象所定义的方法来检索连接状态和使用信息。


function GetConnectionProfileInfo(connectionProfile) {

    try {
        if (connectionProfile == null) {
            return "";
        }

        var returnString = "ProfileName: " + connectionProfile.profileName + "\n\r";
        returnString += "Connected: " + connectionProfile.connected + "\n\r";

        //Display Connection cost info
        returnString += "Connection Cost Information:\n\r";
        returnString += "===============\n\r";
        var connectionCost = connectionProfile.getConnectionCost();
        returnString += "Cost Type: " + GetCostType(connectionCost.networkCostType) + "\n\r";
        returnString += "Roaming: " + connectionCost.roaming + "\n\r";
        returnString += "Over Datalimit: " + connectionCost.overDataLimit + "\n\r";
        returnString += "Approaching Datalimit: " + connectionCost.approachingDataLimit + "\n\r";

        //Display Dataplan status info
        returnString += "Dataplan Status Information:\n\r";
        returnString += "===============\n\r";
        var dataPlanStatus = connectionProfile.getDataPlanStatus();
        if (dataPlanStatus.dataPlanUsage != null) {
            returnString += "Usage In Megabytes: " + dataPlanStatus.dataPlanUsage.megabytesUsed + "\n\r";
            returnString += "Last Sync Time: " + dataPlanStatus.dataPlanUsage.lastSyncTime + "\n\r";
        }
        else {
            returnString += "Dataplan Usage: " + "Not Defined" + "\n\r";
        }

        if (dataPlanStatus.InboundBitsPerSecond != null) {
            returnString += "Inbound Bits Per Second: " + dataPlanStatus.InboundBitsPerSecond + "\n\r";
        }
        else {
            returnString += "Inbound Bits Per Second: " + "Not Defined" + "\n\r";
        }

        if (dataPlanStatus.OutboundBitsPerSecond != null) {
            returnString += "Outbound Bits Per Second: " + dataPlanStatus.OutboundBitsPerSecond + "\n\r";
        }
        else {
            returnString += "Outbound Bits Per Second: " + "Not Defined" + "\n\r";
        }

        if (dataPlanStatus.dataLimitInMegabytes != null) {
            returnString += "Data Limit In Megabytes: " + dataPlanStatus.dataLimitInMegabytes + "\n\r";
        }
        else {
            returnString += "Data Limit In Megabytes: " + "Not Defined" + "\n\r";
        }

        if (dataPlanStatus.nextBillingCycle != null) {
            returnString += "Next Billing Cycle: " + dataPlanStatus.nextBillingCycle + "\n\r";
        }
        else {
            returnString += "Next Billing Cycle: " + "Not Defined" + "\n\r";
        }

        if (dataPlanStatus.maxDownloadFileSizeInMegabytes != null) {
            returnString += "Maximum Download File Size in Megabytes: " + dataPlanStatus.maxDownloadFileSizeInMegabytes + "\n\r";
        }
        else {
            returnString += "Maximum Download File Size in Megabytes: " + "Not Defined" + "\n\r";
        }
        returnString += "Cost Based Suggestions: " + CostBasedSuggestions(connectionCost) + "\n\r";
    }

    catch (e) {
        mySample.displayError("Exception Caught: " + e + "\n\r");
    }

    return returnString;
}


摘要

在本主题中,我们回顾了如何检索连接配置文件及各个配置文件所包含的连接信息。若要确保可靠的连接体验,必须使用该信息来帮助你的应用作出正确的选择。

有关使用连接信息来指导联网应用的行为的其他指南和最佳做法,请参阅快速入门:管理连接事件和可用性更改

相关主题

网络信息示例
快速入门:管理连接事件和可用性更改
如何检索特定时间段内的连接使用情况数据
如何检索网络适配器和区域信息

 

 

显示:
© 2016 Microsoft