title: You are using download over http. Currently Unity adds NSAllowsArbitraryLoads to Info.plist to simplify transition, but it will be removed soon
body: <p>I am uploading data to database using WWW.
  I have two data classes for data object.</p>
  
  <pre><code>[Serializable]
  public class pushdatawrapper{
      public string email;
      public pushdata[] shotsArray=new pushdata[1];
  }
  [Serializable]
  public class pushdata{
      public string timehappened;
      public string clubtype;     
      public pushdata(string timestamp_,string clubtype_)
      {
          timehappened = timestamp_;
          clubtype = clubtype_;           
      }
  }
  </code></pre>
  
  <p>Loading Json array of data object to database, I tried two approaches.
  The first one was ok, but the second one is always failed at calling <code>StartCoroutine</code> function.</p>
  
  <p><code>First approach</code></p>
  
  <pre><code>public class BLEBridge : MonoBehaviour {
      void Start () {
         pushdata_ pdata = new pushdata_("123123123123.0","15","123.0","123.0", "123.0", "123.0","123.0", "123.0","123.0","123.0","123.0","123.0", "First");
          pushdatawrapper_ pw = new pushdatawrapper_ ();
          pw.email = "test@gmail.com";
          pw.shotsArray[0] = pdata;
          StartCoroutine (PushData_ (pw));
      }
  
      private IEnumerator PushData_(pushdatawrapper_ pdata){
          WWW www;
          Hashtable postHeader = new Hashtable();
          postHeader.Add("Content-Type", "application/json");
          string dataToJason = JsonUtility.ToJson(pdata);
          Debug.Log ("dataToJason " + dataToJason);
          // convert json string to byte
          var formData = System.Text.Encoding.UTF8.GetBytes(dataToJason);
          www = new WWW("http://rmotion.rapsodo.com/api/push/new", formData, postHeader);
          StartCoroutine(WaitForRequest(www));
          return www;
  
      }
      IEnumerator WaitForRequest(WWW data)
      {
          yield return data; // Wait until the download is done
          if (data.error != null)
          {
              Debug.Log("There was an error sending request: " + data.text);
          }
          else
          {
              Debug.Log("WWW Request: " + data.text);
          }
      }
  
  }
  </code></pre>
  
  <p>This first method is always ok.
  But in actual implementation, I need to upload data from a static function. Those <code>private IEnumerator PushData_(pushdatawrapper_ pdata) and IEnumerator WaitForRequest(WWW data)</code> can't be static.</p>
  
  <p>So what I did was
  I made a separate class as</p>
  
  <pre><code>public class UploadData: MonoBehaviour{
      public void uploadindividualshot(pushdatawrapper pw){       
          StartCoroutine (PushData (pw));
  
  
      }
  
      private IEnumerator PushData(pushdatawrapper pdata){
          WWW www;
          Hashtable postHeader = new Hashtable();
          postHeader.Add("Content-Type", "application/json");
          string dataToJason = JsonUtility.ToJson(pdata);
          Debug.Log ("dataToJason " + dataToJason);
          // convert json string to byte
          var formData = System.Text.Encoding.UTF8.GetBytes(dataToJason);
          Debug.Log ("before www ");
          www = new WWW("http://rmotion.rapsodo.com/api/push/new", formData, postHeader);
          Debug.Log ("after new ");
          StartCoroutine(WaitForRequest(www));
          Debug.Log ("after WaitForRequest ");
          return www;
  
      }
      IEnumerator WaitForRequest(WWW data)
      {
          Debug.Log ("start pushing ");
          yield return data; // Wait until the download is done
          if (data.error != null)
          {
              Debug.Log("There was an error sending request: " + data.text);
          }
          else
          {
              Debug.Log("WWW Request: " + data.text);
          }
      }
  
  }
  </code></pre>
  
  <p>Then call the instance of the class from static method as</p>
  
  <pre><code>public class BLEBridge : MonoBehaviour {
  
      void Start(){}
  
      public unsafe static void GetGolfREsult()
      {
         pushdata pdata = new pushdata("123123123123.0","15","123.0","123.0", "123.0", "123.0","123.0", "123.0","123.0","123.0","123.0","123.0", "First");
         pushdatawrapper pw = new pushdatawrapper();
         pw.email = Login.loginName;
         pw.shotsArray[0] = pdata;
         UploadData up = new UploadData ();
          up.uploadindividualshot (pw);
      }
  }
  </code></pre>
  
  <p>I always have error as</p>
  
  <pre><code>after new 
  UploadData:PushData(pushdatawrapper)
  BLEBridge:GetGolfREsult()
  
  (Filename: /Users/builduser/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51)
  
  libc++abi.dylib: terminating with uncaught exception of type Il2CppExceptionWrapper
  2018-04-29 17:25:25.565292+0800 RMotion[270:7241] You are using download over http. Currently Unity adds NSAllowsArbitraryLoads to Info.plist to simplify transition, but it will be removed soon. Please consider updating to https.
  </code></pre>
  
  <p>The program has error at <code>StartCoroutine(WaitForRequest(www));</code></p>
  
  <p>What is wrong with second approach?</p>