Appstock for Unity
  • Documentation
  • API Reference
Search Results for

    Show / Hide Table of Contents
    • Overview
    • Package Contents
    • Installation
    • Requirements and limitations
      • Requirements
      • Unity 2021/2022 Android issues
      • iOS blocks insecure requests
      • iOS Simulator on arm64
    • Displaying Ads
      • SDK Initialization
      • Banner Ad
      • Interstitial Ad
      • Rewarded Ad
      • Native Ads
        • Introduction to Native Ads
        • Building Native Ad Request
        • Applying Native Ad Response
    • Advanced Configuration
      • SDK Configuration
      • Improving targeting
      • Ext Slot
    • Samples

    iOS blocks insecure requests

    Native SDK binaries might attempt to access ad exchange servers via "insecure" HTTP (rather than HTTPS), which can fail due to iOS feature -- see Preventing Insecure Network Connections.

    To allow such communication in your app, Info.plist should be modified.

    For more info see:

    • App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure.

    Here is a modified script that can be put inside Editor folder to automate this task.

    using UnityEditor;
    using UnityEditor.Build;
    using System.IO;
    using UnityEditor.Build.Reporting;
    using UnityEditor.iOS.Xcode;
    
    // adds an ATS exception domain to the Info.plist
    public class InfoPlistUpdater : IPostprocessBuildWithReport
    {
        public int callbackOrder { get { return 0; } }
    
        public void OnPostprocessBuild(BuildReport report)
        {
            BuildTarget buildTarget = report.summary.platform;
            string pathToBuiltProject = report.summary.outputPath;
    
            if (buildTarget == BuildTarget.iOS)
            {
                // Get plist
                string plistPath = pathToBuiltProject + "/Info.plist";
                PlistDocument plist = new PlistDocument();
                plist.ReadFromString(File.ReadAllText(plistPath));
    
                PlistElementDict allowsDict = plist.root.CreateDict("NSAppTransportSecurity");
    
                allowsDict.SetBoolean("NSAllowsArbitraryLoads", true);
    
                PlistElementDict exceptionsDict = allowsDict.CreateDict("NSExceptionDomains");
    
                PlistElementDict domainDict = exceptionsDict.CreateDict("mobilesdk.io");
                domainDict.SetBoolean("NSExceptionAllowsInsecureHTTPLoads", true);
                domainDict.SetBoolean("NSIncludesSubdomains", true);
    
                // Write to file
                File.WriteAllText(plistPath, plist.WriteToString());
            }
        }
    }
    
    In this article
    Back to top Generated by DocFX