抖音技术能力大揭密!钜惠大礼、深度体验,尽在火山引擎增长沙龙,就等你来! 立即报名>> 了解详情
写点什么

NetworkInfo 原生扩展示例

2011 年 9 月 28 日

目录

要求

预备知识

熟悉为 iOS 构建移动 AIR 应用程序,包括熟悉 Objective C 和 Xcode

需要的第三方产品

用户水平

中级

需要的产品

示例文件

注意:要使用此原生扩展,您需要 Flash Builder 4.5.1 Premium 和 Adobe AIR 3,可以在 Adobe Labs 上获得它们的候选发行版。

NetworkInfo 类是针对 Adobe AIR 的一个原生扩展。它允许来自 ActionScript 的 AIR 应用程序开发人员获取每个网络接口的信息。

ActionScript 已提供了一个适用于桌面的 NetworkInfo 类和适用于 TV 设备的 AIR。此原生扩展提供了一个类似的类,使针对 iOS 的 AIR 应用程序也可以获取每个网络接口的信息。

附加的 ZIP 文件包含:

  • 目录 NetworkInfoActionScriptLibrary 中的 ActionScript 库。此目录包含创建 NetworkInfo 扩展的 ActionScript 部分的 Flash Builder 项目。
  • 目录 NetworkInfoiOSLibrary 中的 iOS 原生库。此目录包含创建 NetworkInfo 扩展的 iOS 原生部分的 Xcode 项目。要构建 Xcode 项目,首先将 FlashRuntimeExtension.h 从 <AIR_SDK>/include/FlashRuntimeExtensions.h 复制到 NetworkInfoiOSLibrary 目录。
  • 一个名为 Binaries 的目录,包含 AIR 应用程序开发人员使用原生扩展所需的所有内容:ANE 文件、SWC 文件和包含扩展 ID 的文本文件。
  • 一个名为 NetworkInfoUsageApp 的目录,包含使用 NetworkInfo 原生扩展的示例 AIR 应用程序。

ActionScript 库

ActionScript 库包含 NetworkInfo 类。NetworkInfo 类向 AIR 应用程序提供了这些公共方法和属性:

  • public static function get networkInfo(): NetworkInfo
  • public function findInterfaces(): Vector.

NetworkInfo 对象是一个单一实体。AIR 应用程序使用静态 networkInfo 属性获取这个单一 NetworkInfo 对象。

findInterfaces() 方法返回 NetworkInterface 对象的一个 Vector。NetworkInterface 类也在 ActionScript 库中定义。NetworkInterface 类提供以下公共属性:

  • public function get name():String
  • public function get displayName():String
  • public function get mtu():int
  • public function get hardwareAddress():String
  • public function get active():Boolean
  • public function get addresses():Vector.

addresses() 属性返回 InterfaceAddress 对象的一个 Vector。InterfaceAddress 类也在 ActionScript 库中定义。它包含以下公共属性:

  • public function get address():String
  • public function get broadcast():String
  • public function get prefixLength():int
  • public function get ipVersion():String

注意:NetworkInfo 扩展中的类的公共函数和属性(NetworkInfo、NetworkInterface 和 InterfaceAddress)通过相同的名称与现有的 ActionScript 类中的公共函数和属性对应。请参阅 ActionScript 3 Reference for the Adobe Flash Platform 中的 NetworkInfo NetworkInterface InterfaceAddress

应用程序用途

要使用 NetworkInfo 扩展,AIR 应用程序可以执行以下操作:

  • 访问静态属性 NetworkInfo.networkInfo 获取 NetworkInfo 独立对象。
  • 调用 NetworkInfo 独立对象的 findInterfaces() 方法获得网络接口的列表。

例如:

复制代码
var ntf:Vector.<NetworkInterface> = NetworkInfo.networkInfo.findInterfaces();

注意:不要调用 new NetworkInfo()。以这种方式尝试创建 NetworkInfo 类的实例会抛出异常。

然后您可以处理返回的 Vector 中的每个 NetworkInterface 对象。例如:

复制代码
for each (var interfaceObj:NetworkInterface in ntf)
{
// Access interfaceObj.name, interfaceObj.displayName, interfaceObj.active,
// interfaceObj.hardwareAddress, and interfaceObj.mtu
for each(var address:InterfaceAddress in interfaceObj.addresses)
{
// Access address.address, address.broadcast, address.ipVersion, and address.prefixLength
}
}

请注意,InterfaceAddress 类的 prefixLength 字段不受支持。它的值始终为 -1。

iOS 原生库

iOS 原生库在 Objective C 中使用原生扩展 C API 实现。原生库包含这些原生扩展 C API 的示例:

  • 扩展初始化器和终结器,使用签名 FREInitializer() 和 FREFinalizer()。
  • 上下文初始化器和终结器,使用签名 FREContextInitializer() 和 FREContextFinalizer()。
  • 原生函数 findInterfaces(),使用签名 FREFunction()。
  • FRENewObject()
  • FRENewObjectFromBool()
  • FRENewObjectFromInt32()
  • FRENewObjectFromUTF8()
  • FRESetArrayElementAt()

原生函数 findInterfaces() 调用 iOS API getifaddrs() 函数来获取设备网络接口的链接列表。该函数处理列表中的元素,返回一个 NetworkInterface 对象数组以获取扩展的 ActionScript 部分。

延伸阅读

关于开发 Adobe AIR 的原生扩展的更多信息,请参阅:

查看原文: NetworkInfo native extension sample

2011 年 9 月 28 日 03:451196
用户头像

发布了 27 篇内容, 共 15646 次阅读, 收获喜欢 2 次。

关注

评论

发布
暂无评论
发现更多内容

饿了么4年 + 阿里2年:研发路上的一些总结与思考

程序员生活志

阿里 饿了么 经验总结

Fastjson到了说再见的时候了

YourBatman

Jackson Fastjson JSON库

常见的emit实现AOP demo

八苦-瞿昙

随笔 随笔杂谈 aop

LeetCode 题解:122. 买卖股票的最佳时机 II,JavaScript,一遍循环,详细注释

Lee Chen

前端进阶训练营

[POJ 1001] Exponentiation JAVA解题报告

一直AC一直爽

算法 刷题 POJ ACM

【API进阶之路】因为不会创建云服务器,我被实习生摆了一道

华为云开发者社区

虚拟机 服务器 API 华为云 API接口管理

【小白学YOLO】一文带你学YOLOv1 Testing

华为云开发者社区

人工智能 算法 图像识别 什么是多线程

[POJ 1000] A+B Problem 经典水题 JAVA解题报告

一直AC一直爽

POJ OJ ACM 水题

面向进化的软件架构

星际行者

软件架构 进化

字节跳动李本超:一年成为 Committer,我与 Flink 社区的故事

Apache Flink

flink

密码学的随机性与区块链随机数

CECBC区块链专委会

提速数字化!区块链加速应用落地,新制造与服务不断推出

CECBC区块链专委会

JAVA算法

Bruce Duan

排序算法 Java算法

一个简单的物联网设备接入网关高可用方案

凸出

Java nginx Netty

一千万个身份证号在java中需要多少内存

华宇法律科技

Java string heap memory

多线程为了同个资源打起架来了,该如何让他们安定?

小林coding

并发编程 多线程 操作系统 计算机基础

你的个人博客网站该上线了!

北漂码农有话说

Python好找工作吗?

cdhqyj

第七周作业

andy

极客大学

智能标注原理揭秘,一文读懂人工智能如何解决标注难题

百度大脑

人工智能 百度 学习 AI 百度大脑

又被逼着优化代码,这次我干掉了出入参 Log日志

程序员内点事

Java

天府之国迎来数字经济发展高地新契机

CECBC区块链专委会

数字货币 区块链技术 应用落地 人才政策产业

程序员开启社交和打造影响力的最佳方式

非著名程序员

程序员 提升认知 写作 程序员成长 社交

三分钟热度的干劲

落曦

kubernetes 集群升级,备份,故障恢复(kubeadm)

小小文

Kubernetes 群集安装 故障 kubeadm

架构师训练营」第 7 周作业

edd

极客大学架构师训练营

【源码系列】Spring Cloud Gateway

Alex🐒

源码 SpringCloud Gateway

存储性能加速引擎之预读

焱融科技

Linux sds 焱融科技 分布式存储 预读

阿里云高级技术专家李晓成:面向5G的云网一体及云原生应用实践

阿里云Edge Plus

BIGO | Likee深度推荐模型的特征工程优化

DT极客

数据分析师 ”痛“ 谁能了解

松子(李博源)

数据分析 产品经理 数据产品 数据模型

Study Go: From Zero to Hero

Study Go: From Zero to Hero

NetworkInfo原生扩展示例-InfoQ