IOSに作成した既存のAndroidアプリケーションを複製しようとしています。私のアプリケーションでは、SSIDとパスワードを指定してWiFiネットワークに接続できるはずです。 SSIDとパスワードはハードコーディングするか、ユーザーが入力できます。私はインターネット上でこれをiOSでどのように行うことができるかを調べていましたが、この動作は非常に推奨されておらず、アプリケーションが拒否されないパブリック/ドキュメント化されたライブラリを使用してこれを行う方法はないようですApp Store。
問題は、このアプリケーションを個人的に使用することであり、App Storeに提出する予定はないので、外部ライブラリを使用してもかまいません。友人がそれを使用したい場合、エンタープライズIPAをエクスポートし、インストール方法を指示できます。
検索すると、 MobileWifi.framework が適切な候補であるように見えました。ただし、SSIDとパスワードを指定してこのライブラリを使用してWiFiネットワークに接続する簡単な方法はないと思われます。
SSIDとパスワードを指定してWifiネットワークへの接続に成功した人はいますか?
IOS 11では、Appleが提供するパブリックAPIを使用して、アプリを離れることなくプログラムでWiFiネットワークに参加できます。
使用する必要があるクラスは、NEHotspotConfiguration
と呼ばれます。
使用するには、アプリの機能でHotspot
機能を有効にする必要があります( Adding Capabilities )。クイックワーキングの例:
NEHotspotConfiguration *configuration = [[NEHotspotConfiguration
alloc] initWithSSID:@“SSID-Name”];
configuration.joinOnce = YES;
[[NEHotspotConfigurationManager sharedManager] applyConfiguration:configuration completionHandler:nil];
これにより、ユーザーに「SSID-Name」WiFiネットワークへの参加を促します。ユーザーがアプリを離れるまでWiFiに接続されたままになります。
これは、実際のデバイスでこのコードを実行して機能させるために必要なシミュレーターでは機能しません。
詳細はこちら: https://developer.Apple.com/documentation/networkextension/nehotspotconfiguration
iOS 11でwifiネットワークに接続します。次のようにssidとパスワードを使用してwifiに接続できます。
アプリIDでホットスポットを有効にし、サービスを構成します
ホットスポット設定を有効にした後
IOS 11専用のSwift 4.0コード:
let configuration = NEHotspotConfiguration.init(ssid: "SSIDname", passphrase: "Password", isWEP: false)
configuration.joinOnce = true
NEHotspotConfigurationManager.shared.apply(configuration) { (error) in
if error != nil {
if error?.localizedDescription == "already associated."
{
print("Connected")
}
else{
print("No Connected")
}
}
else {
print("Connected")
}
}
ここや他の場所で見ているものとは反対に、あなたはそれをすることができます。通常のユーザーに十分なものを作るのは難しいですが、そうである必要がなければ、コーディングは本当に簡単です。それはエンタープライズ管理者のものですが、誰でもできます。 「接続プロファイル」を検索します。たとえば、ComcastはiOSアプリでこれを行い、ホットスポットを設定します。
基本的に、SafariまたはMailを介してデバイスに取り込むXMLドキュメントです。それには多くのトリックがあり、ユーザーエクスペリエンスは素晴らしいものではありませんが、iOS 10で動作し、ジェイルブレイクを必要としないことを確認できます。 Configuratorを使用してXMLを生成し、 このスレッド を提供することをお勧めします(ただし、特にWiFiに関するものではないため、人々はそれを見つけられません)。 this blog forインストールされているかどうかを照会します。これは驚くほど簡単ではありませんが、実際に機能します。
この質問に回答しました 何度も繰り返しますが、十分な担当者がいないか、質問を重複として閉じる方法を見つけられないため、より良い回答を簡単に見つけることができます。
UPDATE:iOS 11は、この機能のためのAPIを直接(最終的に!)提供します。 NEHotspotConfiguration を参照してください。 Xamarin C#コードは次のようになります。
var config = new NEHotspotConfiguration(Ssid, Pw, false);
config.JoinOnce = false;
短い答え、いいえ。
長い答え:)
この質問は何度も聞かれました。
最も興味深い答えは、GitHubプロジェクトを指す最初のリンク wifiAssociate にあるようです。ただし、3番目のリンクの誰かが、これはiOS8ではもう機能しないので、実行に苦労するかもしれないと説明しています。
さらに、iDeviceをジェイルブレイクする必要があります。
私の2セント:あなたが得た場合:
アーキテクチャi386の未定義シンボル:
"_ OBJC_CLASS _ $ _ NEHotspotConfigurationManager"、参照元:WiFiViewController.oのobjc-class-ref "_OBJC_CLASS _ $ _ NEHotspotConfiguration"、参照元:WiFiViewController.oのobjc-class-ref ld:シンボルが見つかりませんアーキテクチャi386
単純にシミュレータでは機能しません。
実際のデバイスではコンパイルします。使用する:
class func startHotspotHelperStuff(){
if TARGET_IPHONE_SIMULATOR == 0 {
if #available(iOS 11.0, *) {
let configuration = NEHotspotConfiguration(ssid: "ss")
configuration.joinOnce = true
NEHotspotConfigurationManager.shared.apply(configuration, completionHandler: { (err: Error?) in
print(err)
})
} else {
// Fallback on earlier versions
}
}// if TARGET_IPHONE_SIMULATOR == 0
}
[機能]で[ネットワーク拡張機能とホットスポットの構成]の両方がオンになっていることを確認してください。
let wiFiConfig = NEHotspotConfiguration(ssid: YourSSID,
passphrase: YourPassword, isWEP: false)
wiFiConfig.joinOnce = false /*set to 'true' if you only want to join
the network while the user is within the
app, then have it disconnect when user
leaves your app*/
NEHotspotConfigurationManager.shared.apply(wiFiConfig) { error in
if error != nil {
//an error occurred
print(error?.localizedDescription)
}
else {
//success
}
}
IOS 11.の後、wifiネットワークをプログラムで接続できます。次のようにssidとパスワードを使用してwifiを接続できます。
Swift
var configuration = NEHotspotConfiguration.init(ssid: "wifi name", passphrase: "wifi password", isWEP: false)
configuration.joinOnce = true
NEHotspotConfigurationManager.shared.apply(configuration) { (error) in
if error != nil {
//an error accured
print(error?.localizedDescription)
}
else {
//success
}
}
Xcode 9とSwift 4を使用してwifiに接続できます
let WiFiConfig = NEHotspotConfiguration(ssid: "Mayur1",
passphrase: "123456789",
isWEP: false)
WiFiConfig.joinOnce = false
NEHotspotConfigurationManager.shared.apply(WiFiConfig) { error in
// Handle error or success
print(error?.localizedDescription)
}