11

Apple は、Yosemite と CoreWLAN フレームワークでかなりの変更を導入したようです。ヘッダー ファイルを引用して、新しい API を使用したいと思います。

/*!
 * @method
 *
 * @param type
 * A CWEventType value.
 *
 * @param error
 * An NSError object passed by reference, which upon return will contain the error if an error occurs.
 * This parameter is optional.
 *
 * @result
 * A BOOL value indicating whether or not an error occurred. YES indicates no error occurred.
 *
 * @abstract 
 * Register for specific Wi-Fi event notifications.
 * 
 * @discussion
 * Requires the <i>com.apple.wifi.events</i> entitlement.
 */
- (BOOL)startMonitoringEventWithType:(CWEventType)type error:(out NSError **)error NS_AVAILABLE_MAC(10_10);

CWEventType を次のように設定します。CWEventTypeSSIDDidChange

資格が必要と表示されますが、Mac で実行できません。エラーメッセージは次のとおりです。

アプリが予期せず終了しました。デバッガーからのメッセージ: コード署名エラーにより終了しました。

そして、私の資格ファイル(問題があると思われる場所)は次のようになります。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>com.apple.wifi.events</key>
    <true/>
</dict>
</plist>

ターゲットのビルド設定でコード署名パスを設定しています。そういえば、ローカル資格ファイルを除外すると、アプリは実行されますが、期待どおりに動作しません。調査中の API は、次の説明を含むエラー オブジェクトを返します。

Error Domain=com.apple.wifi.request.error Code=4 "The operation couldn’t be completed. (com.apple.wifi.request.error error 4.)"

それは間違いなくマインドツイスターです。少なくとも、そうでないことを願っています。そうでなければ、私は完全な馬鹿です. メンバー センターで自分のアプリの特定のアプリ ID と、特定の開発プロファイルを持っています (ただし、ワイルドカード開発プロファイルを使用しているため、その必要はありません)。

前もって感謝します。

4

3 に答える 3

4

現在 (2015 年 7 月 31 日) にバグがあるようですCWWiFiClient: エンタイトルメントが適切に付与されません。これは、サンドボックス化されていないアプリにも適用されます。詳細については、Apple 開発者フォーラムでこの質問を参照してください。

その結果、当面は非推奨の API に頼らざるを得なくなる可能性があります。syammala は、廃止された API の使用方法の良い例を提供します。

于 2015-07-31T22:01:56.027 に答える