iPhoneプライベートライブラリなしですべてのSSIDのリストを入手

StackOverflow https://stackoverflow.com//questions/9684341

  •  13-12-2019
  •  | 
  •  

質問

プライベートライブラリを使用せずにiPhone上の利用可能なすべてのSSIDの list を取得することは可能ですか?

私は iPhone Get SSIDを取得します。 電流ネットワークについて

この回答言及:

あなたがあなたのデバイスを脱獄するなら、 apple80211 プライベートフレームワークを使用することができます。利用可能なWi-Fiネットワークとその信号強度を検索する。しかし、それはまたあなたのアプリが拒否されることを意味します。

Appleは、 captvivenetwork API しかし、利用可能なすべてのネットワークのリストを取得するための解決策はないようです。 Apple80211プライベートライブラリを使用して行うことは可能です。またはそれらすべてへの接続。

私は何かが足りない、または解決策はありませんか?

役に立ちましたか?

解決

プライベートライブラリ(Apple80211)を使用せずに、デバイスが現在接続されているネットワークのSSIDを取得できます。

他のヒント

iOS 9以降、 nehotspothelper を使用してSSIDのリストを取得できます。しかし、リクエストを送信することによってAppleからcom.apple.developer.networking.HotspotHelperエンタイトルメントを取得する必要があります。

nofollownoreferrer"> https://developer.apple.com/documentation/NetWorkeXtension/Nehosspothelperd/a.>より多くの情報のために。

iOS 9およびiOS 11のネットワーク拡張の一部として新しいAPIがリリースされています。アプリの実行中にネットワークをスキャンすることはできません。両方とも、関連タスクを実行できます。例えば。 HotSpot Helperを使用して設定Wi-Fiページが実行されている間は、ネットワークをスキャンでき、ユーザーがこれらのいずれかを使用してネットワークに参加できるようにすることができます。

これは2つのフレームワークの比較です。

ホットスポットヘルパー

  • NEHotspotHelper(IOS 9で導入された、 wwdc 2015 )。
  • アップルから特別な許可を必要とします。
  • com.apple.developer.networking.HotspotHelperエンタイトルメントを要求します。
  • ステップバイステップの指示にこの作業を取得するには、この回答
  • を参照してください。
  • 設定アプリのWi-Fi画面を介してDiscovery /認証にWi-Fiネットワークに参加することができます。ネットワークがスキャンされているときに通知されるように登録します(たとえば、ユーザーが設定アプリのWi-Fiを起動したときに、パスワードを自動的にプリメリに記入してネットワーク名の近くに注釈を表示できます。ユーザーはまだ接続するためにネットワーク名をタップする必要がありますが、それを事前に記入した場合はパスワードの入力を求められません。

     Enter Imageの説明がここに

ホットスポット構成

  • NEHotspotConfigurationManager(IOS 11で導入された、 WWDC 2017 )。
  • アップルから特別な許可を必要としません。
  • com.apple.developer.networking.HotspotConfigurationエンタイトルメントを要求します。
  • Wi-Fiネットワークへの接続を開始することができます。アプリが実行されている間に接続する必要があるSSID /パスワードのリストを提供します。ネットワークに接続したい場合は、ユーザーに尋ねるダイアログを表示します。

    href="https://i.stack.imgur.com/5y5yym.png" rel="nofollow noreferrer">  Enter Imageの説明がここに

まず2つのシステムヘッダファイルを超えるとインポート

import SystemConfiguration/SystemConfiguration.h
import SystemConfiguration/CaptiveNetwork.h
.

下記関数/メソッドReturn SSIDNAME

-(NSString *)getNetworkId{
    NSString *string = CFBridgingRelease(CNCopySupportedInterfaces());
    NSArray *interfacesArray = CFBridgingRelease(CFBridgingRetain(string));
        if(interfacesArray.count > 0){
            NSString *networkName = [interfacesArray objectAtIndex:0];
            CFStringRef yourFriendlyCFString = (__bridge CFStringRef)networkName;
            NSDictionary *unsafeInterfaceData = CFBridgingRelease(CNCopyCurrentNetworkInfo(yourFriendlyCFString));
            NSString *ssidName = unsafeInterfaceData[@"SSID"];
            return ssidName;
        }
    return @"No network Found";
}
.

ステップ1:フレームワークを追加する SystemConfiguration.Framework
ステップ2:次のヘッダーファイル

import SystemConfiguration
import SystemConfiguration.CaptiveNetwork
.

ステップ3:今すぐコード:

func getUsedSSID()->String {

       let interfaces = CNCopySupportedInterfaces()

        if interfaces != nil {

            let interfacesArray = CFBridgingRetain(interfaces) as! NSArray

            if interfacesArray.count > 0 {

                let interfaceName = interfacesArray[0] as! String
                let unsafeInterfaceData = CNCopyCurrentNetworkInfo(interfaceName)! as Dictionary
                let SSIDName = unsafeInterfaceData["SSID"] as! String
                print(SSIDName)/* here print recentally used wifi name*/
                return SSIDName
            }else{
                return "0"
            }
        }else{
            return "0"
        }
    }
.

#import SystemConfiguration#
##import SystemConfiguration.CaptiveNetwork##

 //create variable
  var SSIDNameArray = NSMutableArray()
  var nameArray : NSArray = [];
 // Here function to return all SSIDName
    func getUsedSSID()->NSArray{
        let interfaces = CNCopySupportedInterfaces()
        if interfaces != nil {
            let interfacesArray = CFBridgingRetain(interfaces) as! NSArray
            if interfacesArray.count > 0 {
                for interfaceName in interfacesArray {
                    let unsafeInterfaceData = CNCopyCurrentNetworkInfo(interfaceName as! CFString)! as NSDictionary
                    let SSIDName = unsafeInterfaceData["SSID"] as! String
                    self.SSIDNameArray .add(SSIDName)
                }
                nameArray = self.SSIDNameArray .copy() as! NSArray
                return nameArray;
            }else{
                 return nameArray;
            }
        }else{
            return nameArray;
        }
    }
.
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top