使用 Cordova 应用程序在 iOS 上列出附近的 wifi 网络

Posted

技术标签:

【中文标题】使用 Cordova 应用程序在 iOS 上列出附近的 wifi 网络【英文标题】:List nearby wifi networks on iOS with a Cordova app 【发布时间】:2019-01-12 21:40:00 【问题描述】:

我正在使用 Cordova CLI(不是 PhoneGap)编写一个跨平台移动应用程序来控制物联网设备。如何显示附近 Wifi 网络的列表,以便用户可以选择并连接到它?

我尝试过 WifiWizard 和 WifiWizard2,但它们似乎对 ios 的支持有限。而Cordova's core Connection plugin 只能显示用户是否连接到 wifi、蜂窝或什么都没有。

我还发现了一些与 wifi 相关的 Cordova 插件,它们似乎已经失去了对 iOS 的支持,例如 NativeSettingsOpener。

我已经尝试过这个基本的 WifiWizard2 功能:

    WifiWizard2.getConnectedSSID().then(function(network) 
          alert(network);
        ).catch(function(error) 
          alert('oops: ', error);
        );

当我在浏览器的本地主机上运行它时,它正确地提醒我我没有连接到网络。

我希望它也可以在 iOS 上运行。但是,当我在使用 Cordova 为 iOS 编译它之后在 iOS 上运行这个函数时,它既没有给我网络也没有给我一个错误。

【问题讨论】:

除非设备支持无线附件配置 (WAC),否则您无法在 iOS 上的应用程序中执行此操作,该配置已在 MFi 计划下获得许可。您需要指导用户打开 iOS 偏好设置并手动连接到正确的 WiFi 网络。 【参考方案1】:

您必须异步加载扫描功能。下面是一个使用 ionic 和 Cordova 的示例:

import  Component  from '@angular/core';

declare var WifiWizard2: any;

@Component(
    selector: 'app-home',
    templateUrl: 'home.page.html',
    styleUrls: ['home.page.scss'],
)
export class HomePage 

    results = [];
    info_txt = "";

    async getNetworks() 
        this.info_txt = "loading...";
        try 
            let results = await WifiWizard2.scan();
            this.results = results;
            this.info_txt = "";
         catch (error) 
            this.info_txt = error;
        
    

我自己网站上的完整示例在这里https://www.tonyfox.co.uk/posts/using-wifiwizard2-with-ionic/

【讨论】:

请注意,必须明确披露您可能与您推荐/链接到的产品或网站的任何关联,否则这些帖子很可能会作为垃圾邮件被删除。 对不起@TylerH,没有发布,我再次更新了答案以提及这一点 请注意,在 typescript 中声明 var 可以被 import 替换,强烈建议不要使用 type any 能否添加连接和断开 wifi 的示例代码? @TonyFox,此插件扫描方法抛出以下错误:WifiWizard2 scan WifiWizard21044267574 ["options": []] [error] - 错误错误:未捕获(承诺):不支持跨度>

以上是关于使用 Cordova 应用程序在 iOS 上列出附近的 wifi 网络的主要内容,如果未能解决你的问题,请参考以下文章

使用 Cordova 防止 iOS 应用程序保留屏幕快照

以远程服务器为目标时,Cordova iOS 崩溃

Cordova 4.0 config.xml 中的 Android 权限

如何使用 Ionic / Cordova 在 iOS 上启用多任务处理?

Cordova 应用程序无法在 iOS 设备上正确显示

我可以在非 iOS 设备上的 Cordova 应用程序中使用 Apple CloudKit JS 吗?