【问题标题】:List nearby wifi networks on iOS with a Cordova app使用 Cordova 应用程序在 iOS 上列出附近的 wifi 网络
【发布时间】: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 网络。

标签: ios cordova cordova-plugins


【解决方案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] - 错误错误:未捕获(承诺):不支持跨度>
猜你喜欢
  • 1970-01-01
  • 2014-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-18
  • 2012-01-23
  • 1970-01-01
相关资源
最近更新 更多