2016-03-17 17 views
5

Mac App StoreでリリースされるUnityとセットアップでビルドされたアプリを持っています。ネットワーキングタスクは、アプリストアではなくOS Xビルドでうまく動作しますApp Storeの検証/ codesignが必要なビルドが行われると、ネットワーキングは失敗します。アプリケーションとビルドプロセスは、ずっと前には機能しませんでしたが、今は失敗します。codesign/packageの後にOSX Macストアアプリのネットワーキングが失敗する

資格にネットワーキング権限が含まれているため、システムコンソールでサンドボックスエラーのトレースが表示されません。アプリ内の購入ネットワーキングコールは成功していますが、端末内のトラフィックをチェックすると、データの出入りはありません。

だから私は誰がこの問題を引き起こしているのか、問題が何であるかを理解するために使うことができるさらなるアイデアがあるのだろうかと思っていました。

+0

どのプラグインを使用しますか? xcodeでどのようなフレームワークを追加しますか?ネットワーキングタスクは何ですか?シンプルなjsonのクエリやソケットまたは何ですか?サポートを受ける機会を増やし、私たちがあなたを助けてくれるようにしてください。 – DeyaEldeen

+0

唯一のプラグインはUnity IAPであり、Xcode経由で追加されたフレームワークはありません(Xcodeを全く使用していません)。ネットワーク私はParseに接続しようとしていますが、WWW呼び出しでサイトをテストしましたが、何も通過していません。 – AlexTheMighty

+0

@AlexTheMighty Unity 5.3.4p1を使用して同じ問題が発生しています。あなたは解決策を見つけましたか? –

答えて

0

UnityのWWWクラスが間違っていたことはわかりませんでしたが、System.Net.WebClientクラスを使用して問題を回避できました。 UnityのWWWクラスと似たインターフェイスを持つ単純なラッパーを実装しました。私が使用したコードは次のとおりです。

using System; 
using System.Net; 
using System.Net.Security; 
using System.Text; 

/// <summary> 
/// Web request using the WebClient class. 
/// </summary> 
/// <seealso cref="Assets.Scripts.WebRequest" /> 
internal class WebRequest 
{ 
    /// <summary> 
    /// The web client. 
    /// </summary> 
    private WebClient _client; 

    /// <summary> 
    /// The error message. 
    /// </summary> 
    private string _error; 

    /// <summary> 
    /// The is done flag. 
    /// </summary> 
    private bool _isDone; 

    /// <summary> 
    /// The progress. 
    /// </summary> 
    private float _progress; 

    /// <summary> 
    /// The text. 
    /// </summary> 
    private string _text; 

    /// <summary> 
    /// Initializes a new instance of the <see cref="WebRequest"/> class. 
    /// </summary> 
    /// <param name="url">The URL.</param> 
    public WebRequest(string url) 
    { 
     this._client = new System.Net.WebClient(); 
     this._client.DownloadProgressChanged += this.WebClientProgressChanged; 
     this._client.DownloadStringCompleted += this.WebClientDownloadCompleted; 
     this._client.DownloadStringAsync(new Uri(url)); 
    } 

    /// <summary> 
    /// Initializes a new instance of the <see cref="WebRequestDotNet"/> class. 
    /// </summary> 
    /// <param name="url">The URL.</param> 
    /// <param name="form">The form.</param> 
    public WebRequest(string url, UnityEngine.WWWForm form) 
    { 
     this._client = new System.Net.WebClient(); 
     this._client.UploadProgressChanged += this.WebClientUploadProgressChanged; 
     this._client.UploadDataCompleted += this.WebClientUploadCompleted; 

     this._client.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded"; 

     // Try to get the header from the Unity form 
     foreach (var header in form.headers) 
     { 
     const string ContentType = "Content-Type"; 
     if (header.Key == ContentType) 
     { 
      string contentType = header.Value; 
      this._client.Headers.Remove(ContentType); 
      this._client.Headers[ContentType] = contentType; 
     } 
     } 

     this._client.UploadDataAsync(new Uri(url), form.data); 
    } 

    /// <summary> 
    /// Gets the error message. Returns null if there is no error. 
    /// </summary> 
    /// <value> 
    /// The error message. 
    /// </value> 
    public string Error 
    { 
     get 
     { 
     return this._error; 
     } 
    } 

    /// <summary> 
    /// Gets a value indicating whether this request is done. 
    /// </summary> 
    /// <value> 
    /// <c>true</c> if this instance is done; otherwise, <c>false</c>. 
    /// </value> 
    public bool IsDone 
    { 
     get 
     { 
     return this._isDone; 
     } 
    } 

    /// <summary> 
    /// Gets the progress, 0 to 1. 
    /// </summary> 
    /// <value> 
    /// The progress. 
    /// </value> 
    public float Progress 
    { 
     get 
     { 
     return this._progress/100.0f; 
     } 
    } 

    /// <summary> 
    /// Gets the resulting text. 
    /// </summary> 
    /// <value> 
    /// The text. 
    /// </value> 
    public string Text 
    { 
     get 
     { 
     return this._text; 
     } 
    } 

    /// <summary> 
    /// Called when the download is complete. 
    /// </summary> 
    /// <param name="sender">The sender.</param> 
    /// <param name="e">The <see cref="DownloadStringCompletedEventArgs"/> instance containing the event data.</param> 
    private void WebClientDownloadCompleted(object sender, DownloadStringCompletedEventArgs e) 
    { 
     if (e.Error != null) 
     { 
     this._error = e.Error.ToString(); 
     } 
     else 
     { 
     this._text = e.Result; 
     } 

     this._isDone = true; 
    } 

    /// <summary> 
    /// Called when the progress changes. 
    /// </summary> 
    /// <param name="sender">The sender.</param> 
    /// <param name="e">The <see cref="DownloadProgressChangedEventArgs"/> instance containing the event data.</param> 
    private void WebClientProgressChanged(object sender, DownloadProgressChangedEventArgs e) 
    { 
     this._progress += e.ProgressPercentage; 
    } 

    /// <summary> 
    /// Called when the upload is complete. 
    /// </summary> 
    /// <param name="sender">The sender.</param> 
    /// <param name="e">The <see cref="UploadValuesCompletedEventArgs"/> instance containing the event data.</param> 
    private void WebClientUploadCompleted(object sender, UploadDataCompletedEventArgs e) 
    { 
     if (e.Error != null) 
     { 
     this._error = e.Error.ToString(); 
     } 
     else 
     { 
     this._text = Encoding.UTF8.GetString(e.Result); 
     } 

     this._isDone = true; 
    } 

    /// <summary> 
    /// Called when the upload progress changes. 
    /// </summary> 
    /// <param name="sender">The sender.</param> 
    /// <param name="e">The <see cref="UploadProgressChangedEventArgs"/> instance containing the event data.</param> 
    private void WebClientUploadProgressChanged(object sender, UploadProgressChangedEventArgs e) 
    { 
     this._progress += e.ProgressPercentage; 
    } 
} 
関連する問題