4

新しい NetworkExtension API を試しました。アプリですべてのステップを再現することに成功しました。ただし、Wifi 設定画面の SSID 名の下にカスタム アノテーションがまだ表示されないという問題があります。iOS 9 ベータ 3、xcode 7 ベータ 3 を使用しています。

これらの手順を正常に完了しました。

  • @note 1 アプリケーションの Info.plist には、'network-authentication' を含む * UIBackgroundModes 配列を含める必要があります。

  • @note 2 * アプリケーションは、資格の 1 つとして 'com.apple.developer.networking.HotspotHelper' * を設定する必要があります。資格の値はブール値 * 値 true です。

アプリ内のコードは次のとおりです。「インターネット」という名前の SSID に「Try Here」というテキストで注釈を付けようとしています。SSID「インターネット」に対して setConfidence メソッドが呼び出されたというログを取得します。ただし、Wifi 選択画面に実際の注釈は表示されません。

また、アプリ名をデフォルトの注釈として表示することを約束した options オブジェクトに「nil」を渡そうとしました。しかし、それもわかりません。メソッド registerWithOptions() の呼び出しに対して「true」が返され、wifi 設定画面を開くとコールバックが返されます。

 

NSMutableDictionary* options = [[NSMutableDictionary alloc] init]; 
[options setObject:@"Try Here" forKey:kNEHotspotHelperOptionDisplayName]; 
 dispatch_queue_t queue = dispatch_queue_create("com.myapp.ex", 0); 
BOOL returnType = [NEHotspotHelper registerWithOptions:options queue:queue 
handler: ^(NEHotspotHelperCommand * cmd) { 
    if(cmd.commandType == kNEHotspotHelperCommandTypeEvaluate || cmd.commandType == kNEHotspotHelperCommandTypeFilterScanList ) { 
         
        for (NEHotspotNetwork* network  in cmd.networkList) {  
            if ([network.SSID isEqualToString:@"Internet"]){ 
                [network setConfidence:kNEHotspotHelperConfidenceHigh];               
                NSLog(@"Confidance set to high for ssid:%@",network.SSID); 
            }  
        }    
    } 
}];

=========================

私たちが欠けているものを理解するのを手伝ってください。

4

3 に答える 3

7

アプリ内からSSID「TP-LINK」の「Connect to MyWifi」でWifiホットスポットを認証および注釈するための以下のコードを実装しました。正常に動作します。

NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:@"Connect to MyWifi", kNEHotspotHelperOptionDisplayName, nil];

dispatch_queue_t queue = dispatch_queue_create("com.myapp.ex", 0);
BOOL isAvailable = [NEHotspotHelper registerWithOptions:options queue:queue handler: ^(NEHotspotHelperCommand * cmd) {
    NSMutableArray *hotspotList = [NSMutableArray new];

    if(cmd.commandType == kNEHotspotHelperCommandTypeEvaluate || cmd.commandType == kNEHotspotHelperCommandTypeFilterScanList) {
        for (NEHotspotNetwork* network  in cmd.networkList) {
            NSLog(@"network name:%@", network.SSID);
            if ([network.SSID isEqualToString:@"TP-LINK"]) {
                [network setConfidence:kNEHotspotHelperConfidenceHigh];
                [network setPassword:@"<wifi-password>"];                    
                [hotspotList addObject:network];
            }
        }

        NEHotspotHelperResponse *response = [cmd createResponse:kNEHotspotHelperResultSuccess];
        [response setNetworkList:hotspotList];
        [response deliver];
    }
}];

注: 上記のコードを機能させるには、

  1. networkextension@apple.comに郵送して、Apple からアクセス権を取得する必要があります。
  2. 資格を取得したら、新しいプロビジョニング プロファイルを作成する必要があります。ここでネットワーク拡張資格を追加し (アクセスできる場合にのみ利用可能)、そのプロファイルを xcode で使用して機能させます。
  3. xcode の資格ファイルで、 資格com.apple.developer.networking.HotspotHelperを true に追加します。ここに画像の説明を入力
  4. Info.plistで、 network-authenticationキーを Required バックグラウンド モード配列に 追加ここに画像の説明を入力 します。ありがとう
于 2016-08-28T07:44:24.703 に答える