2016-10-14 2 views
0

네트워크 호출을 할 때 Apple Watch에 문제가 발생했습니다.SandboxViolation으로 Apple Watch Device 충돌 (1) 네트워크 아웃 바운드가 발생했습니다.

그것은 시뮬레이터에서 잘 작동하지만, 장치에 배포하면 내가 기기 로그에서 볼 :

MyAppleWatch 커널 (샌드)을 [0] SandboxViolation : MyWatchApp (203) 거부 (1) 네트워크 -outbound/개인의/var/실행 /에는 mDNSResponder 전화를 만들기위한 코드는 수리를 사용하여 수행하고 나는 그것이 원인이 아닌 상상하지만, 필요하면 내가 그것을 게시 할 예정 있도록 시뮬레이터 작동합니다

.

enter image description here

:

나는

<key>NSAppTransportSecurity</key> 
<dict> 
    <key>NSExceptionDomains</key> 
    <dict> 
     <key>my.domain.com</key> 
     <dict> 
      <key>NSExceptionRequiresForwardSecrecy</key> 
      <true/> 
      <key>NSExceptionAllowsInsecureHTTPLoads</key> 
      <true/> 
      <key>NSIncludesSubdomains</key> 
      <true/> 
     </dict> 
    </dict> 
    <key>NSAllowsArbitraryLoads</key> 
    <true/> 
</dict> 

나는에 WatchApp 및 WatchExtensionApp을 설정 WatchExtensionApp의 Info.plist 파일에서이 값을 설정 (이러한 키와 WatchApp에서 그들을 설정되지 않음) 한

다음에 시도 할 대상에 대해 약간의 손실이 있습니다. 어떤 도움이라도 대단히 감사하겠습니다. 나는 그것을 작업 가지고

답변

1

좋아, 첫째로 나는 변경 내 Info.plist에 :

<key>NSAppTransportSecurity</key> 
<dict> 
    <key>NSExceptionDomains</key> 
    <dict> 
     <key>my.domain.com</key> 
     <dict> 
      <key>NSExceptionRequiresForwardSecrecy</key> 
      <false/> 
      <key>NSExceptionAllowsInsecureHTTPLoads</key> 
      <true/> 
      <key>NSIncludesSubdomains</key> 
      <true/> 
     </dict> 
    </dict> 
</dict> 

내가 내 모든 네트워크 오히려 다시 끼 우고 + HttpClient를 사용하는 것보다 우리 NSUrlSession 호출을 변경했다. 그래서 HttpClient에 watchOS가 마음에 들지 않거나 watchos가 NSUrlSession과 함께 작동한다고 가정합니다. 어쨌든 여기 내 전화 중 하나의 샘플입니다 :

public async Task<HttpResponse> MakeCall(NSMutableUrlRequest request) 
    { 
     var result = new HttpResponse(); 
     var config = NSUrlSessionConfiguration.DefaultSessionConfiguration; 
     var session = NSUrlSession.FromConfiguration(config); 

     var resultUser = await session.CreateDataTaskAsync(request); 
     var response = resultUser.Response as NSHttpUrlResponse; 
     if (response != null) 
     { 
      result.StatusCode = (int)response.StatusCode; 
      result.Content = NSString.FromData(resultUser.Data, NSStringEncoding.UTF8).ToString(); 
     } 
     return result; 
    } 

    public async Task<HttpResponse> GetStuffWithParameter(string parameter, string authorization) 
    { 
     var url = new NSUrl($"https://www.domain.com/api/stuff/{parameter}"); 

     var header = new NSMutableDictionary(); 
     header.SetValueForKey(new NSString(authorization), new NSString("Authorization")); 
     header.SetValueForKey(new NSString("application/json"), new NSString("Content-Type")); 

     var request = new NSMutableUrlRequest(url) 
     { 
      Headers = header, 
      HttpMethod = "GET" 
     }; 

     return await MakeCall(request); 
    } 

    public class HttpResponse 
    { 
     public int StatusCode { get; set; } 
     public object Content { get; set; } 
    } 

희망이 도움이됩니다.

관련 문제