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 と、特定の開発プロファイルを持っています (ただし、ワイルドカード開発プロファイルを使用しているため、その必要はありません)。
前もって感謝します。