web-dev-qa-db-ja.com

com.Apple.nsurlstorage-cacheという名前のサービスへの接続が無効になりました

IOS8用のカスタムキーボードを作成していますが、NSURLConnectionのいくつかの問題を理解するのに苦労しています。

私はsendAsynchronousRequest:メソッドを次のように使用しています:

[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
        NSLog(@"recieved asynchronous response");

        if (!connectionError) {
            [self connection:nil didReceiveData:data];
            [self connectionDidFinishLoading:nil];
        }
        else{
            NSLog(@"connection failed - %@", connectionError);
        }
    }];

これはすべて一定期間(1〜2日)は正しく機能しているようで、データを正しく受信できます。この後、次のエラーメッセージが表示され始めます。

 ***cachedResponseForRequest:key:handler failed: 

Error Domain = NSCocoaErrorDomain Code = 4099 "操作を完了できませんでした。(Cocoaエラー4099。)"(com.Apple.nsurlstorage-cacheという名前のサービスへの接続が無効になりました。)UserInfo = 0x17579030 {NSDebugDescription =サービスへの接続名前付きcom.Apple.nsurlstorage-cacheが無効になりました。}; {NSDebugDescription = "com.Apple.nsurlstorage-cacheという名前のサービスへの接続が無効になりました。";

その後、物事を再び正しく機能させることができるように見える唯一の方法は、電話のコンテンツと設定をリセットすることです。なぜこれが起こっているのかについて誰かが私を正しい方向に向けることができれば、私は非常に感謝するでしょう。前もって感謝します。

9
SteveB

これは、デバイスがキーボードでインターネットを使用することを許可しなかったために発生します。

これを修正するには、まず、キーボード拡張のInfo.plistのキー「RequestsOpenAccess」の値が「YES」であることを確認します。

次に、アプリをデバイスにインストールした後、[設定]-> [一般]-> [キーボード]-> [キーボード]->に移動し、[フルアクセスを許可する]ボタンをオンにします。

7
Drico

私もこの問題を抱えていました。アプリのウィジェットを作成すると、ウィジェットはネットワークを使用できます。次に、ネットワークの使用を許可する方法を見つけました。

ターゲット(キーボード)->機能->アプリサンドボックスをオンにする->ネットワークをチェックするだけです。着信接続(サーバー)発信接続(クライアント)

5
DianQK

私もこの問題を抱えていました。アプリのウィジェットを作成すると、ウィジェットはネットワークを使用できます。次に、ネットワークの使用を許可する方法を見つけました。

ターゲット(キーボード)->機能->アプリサンドボックスをオンにする->ネットワークをチェックするだけです。着信接続(サーバー)発信接続(クライアント)

申し訳ありませんが^ _ ^、画像をアップロードできません(今サインアップしているため)。

0
user4967649

この問題を回避する方法を見つけました。

この問題を解決するには、次のようにテストを開始する前に環境変数を追加します。

XPC_SIMULATOR_LAUNCHD_NAME = "com.Apple.CoreSimulator.SimDevice.04042E78-E743-4376-94E9-31842D4770B6.launchd_sim"

しかし - 04042E78-E743-4376-94E9-31842D4770B6は各環境によって異なります。したがって、ハードコーディングすることはできません。プロジェクト設定から値を読み取る方法を探しています。

0
Mavrix