├── .editorconfig ├── .gitignore ├── MoveSamplesIn.bat ├── MoveSamplesOut.bat ├── README.md ├── SampleProject~ ├── Assets │ ├── Samples.meta │ └── Samples │ │ ├── 01 - Context Screen.meta │ │ └── 01 - Context Screen │ │ ├── .sample.json │ │ ├── Context Screen Sample.unity │ │ ├── Context Screen Sample.unity.meta │ │ ├── Prefabs.meta │ │ ├── Prefabs │ │ ├── Context Screen.prefab │ │ └── Context Screen.prefab.meta │ │ ├── Scripts.meta │ │ ├── Scripts │ │ ├── AutoSwitchLayout.cs │ │ ├── AutoSwitchLayout.cs.meta │ │ ├── ContextScreenManager.cs │ │ ├── ContextScreenManager.cs.meta │ │ ├── ContextScreenView.cs │ │ └── ContextScreenView.cs.meta │ │ ├── Sprites.meta │ │ └── Sprites │ │ ├── UIBackground_Border10pxNone.png │ │ ├── UIBackground_Border10pxNone.png.meta │ │ ├── dialog illustration-1.png │ │ └── dialog illustration-1.png.meta ├── Packages │ └── manifest.json └── ProjectSettings │ ├── AudioManager.asset │ ├── ClusterInputManager.asset │ ├── DynamicsManager.asset │ ├── EditorBuildSettings.asset │ ├── EditorSettings.asset │ ├── GraphicsSettings.asset │ ├── InputManager.asset │ ├── NavMeshAreas.asset │ ├── NetworkManager.asset │ ├── Physics2DSettings.asset │ ├── PresetManager.asset │ ├── ProjectSettings.asset │ ├── QualitySettings.asset │ ├── TagManager.asset │ ├── TimeManager.asset │ ├── UnityConnectSettings.asset │ └── VFXManager.asset ├── TestProject~ ├── 2018.4 │ ├── Assets │ │ ├── AdditionalTestData.meta │ │ ├── AdditionalTestData │ │ │ ├── SKAdNetworks │ │ │ ├── SKAdNetworks.json │ │ │ ├── SKAdNetworks.json.meta │ │ │ └── SKAdNetworks.meta │ │ ├── Info_Test.plist │ │ ├── Info_Test.plist.meta │ │ ├── Plugins.meta │ │ ├── Plugins │ │ │ └── Editor.meta │ │ ├── SKAdNetworks │ │ ├── SKAdNetworks.json │ │ ├── SKAdNetworks.json.meta │ │ ├── SKAdNetworks.meta │ │ ├── SKAdNetworks.xml │ │ ├── SKAdNetworks.xml.meta │ │ ├── SKAdNetworks_Bad1 │ │ ├── SKAdNetworks_Bad1.json │ │ ├── SKAdNetworks_Bad1.json.meta │ │ ├── SKAdNetworks_Bad1.meta │ │ ├── SKAdNetworks_Bad1.xml │ │ ├── SKAdNetworks_Bad1.xml.meta │ │ ├── SKAdNetworks_Bad2 │ │ ├── SKAdNetworks_Bad2.json │ │ ├── SKAdNetworks_Bad2.json.meta │ │ ├── SKAdNetworks_Bad2.meta │ │ ├── SKAdNetworks_Bad2.xml │ │ ├── SKAdNetworks_Bad2.xml.meta │ │ ├── SKAdNetworks_Bad3 │ │ ├── SKAdNetworks_Bad3.meta │ │ ├── Scenes.meta │ │ ├── Scenes │ │ │ ├── SampleScene.unity │ │ │ └── SampleScene.unity.meta │ │ ├── Script.meta │ │ └── Script │ │ │ ├── Main.cs │ │ │ └── Main.cs.meta │ ├── Packages │ │ └── manifest.json │ └── ProjectSettings │ │ ├── AudioManager.asset │ │ ├── ClusterInputManager.asset │ │ ├── DynamicsManager.asset │ │ ├── EditorBuildSettings.asset │ │ ├── EditorSettings.asset │ │ ├── GraphicsSettings.asset │ │ ├── InputManager.asset │ │ ├── NavMeshAreas.asset │ │ ├── NetworkManager.asset │ │ ├── Physics2DSettings.asset │ │ ├── PresetManager.asset │ │ ├── ProjectSettings.asset │ │ ├── QualitySettings.asset │ │ ├── TagManager.asset │ │ ├── TimeManager.asset │ │ ├── UnityConnectSettings.asset │ │ └── VFXManager.asset └── 2019.4 │ ├── Assets │ ├── AdditionalTestData.meta │ ├── AdditionalTestData │ │ ├── SKAdNetworks │ │ ├── SKAdNetworks.json │ │ ├── SKAdNetworks.json.meta │ │ └── SKAdNetworks.meta │ ├── Info_Test.plist │ ├── Info_Test.plist.meta │ ├── SKAdNetworks │ ├── SKAdNetworks.json │ ├── SKAdNetworks.json.meta │ ├── SKAdNetworks.meta │ ├── SKAdNetworks.xml │ ├── SKAdNetworks.xml.meta │ ├── SKAdNetworks_Bad1 │ ├── SKAdNetworks_Bad1.json │ ├── SKAdNetworks_Bad1.json.meta │ ├── SKAdNetworks_Bad1.meta │ ├── SKAdNetworks_Bad1.xml │ ├── SKAdNetworks_Bad1.xml.meta │ ├── SKAdNetworks_Bad2 │ ├── SKAdNetworks_Bad2.json │ ├── SKAdNetworks_Bad2.json.meta │ ├── SKAdNetworks_Bad2.meta │ ├── SKAdNetworks_Bad2.xml │ ├── SKAdNetworks_Bad2.xml.meta │ ├── SKAdNetworks_Bad3 │ ├── SKAdNetworks_Bad3.meta │ ├── Scenes.meta │ ├── Scenes │ │ ├── SampleScene.unity │ │ └── SampleScene.unity.meta │ ├── Script.meta │ └── Script │ │ ├── Main.cs │ │ └── Main.cs.meta │ ├── Packages │ └── manifest.json │ └── ProjectSettings │ ├── AudioManager.asset │ ├── ClusterInputManager.asset │ ├── DynamicsManager.asset │ ├── EditorBuildSettings.asset │ ├── EditorSettings.asset │ ├── GraphicsSettings.asset │ ├── GvhProjectSettings.xml │ ├── InputManager.asset │ ├── NavMeshAreas.asset │ ├── Physics2DSettings.asset │ ├── PresetManager.asset │ ├── ProjectSettings.asset │ ├── QualitySettings.asset │ ├── TagManager.asset │ ├── TimeManager.asset │ ├── UnityConnectSettings.asset │ ├── VFXManager.asset │ └── XRSettings.asset └── com.unity.ads.ios-support ├── .gitignore ├── .npmignore ├── CHANGELOG.md ├── CHANGELOG.md.meta ├── Documentation~ └── index.md ├── Editor.meta ├── Editor ├── AssemblyInfo.cs ├── AssemblyInfo.cs.meta ├── Parser.meta ├── Parser │ ├── ISkAdNetworkParser.cs │ ├── ISkAdNetworkParser.cs.meta │ ├── SkAdNetworkFileExtension.cs │ ├── SkAdNetworkFileExtension.cs.meta │ ├── SkAdNetworkJsonParser.cs │ ├── SkAdNetworkJsonParser.cs.meta │ ├── SkAdNetworkParser.cs │ ├── SkAdNetworkParser.cs.meta │ ├── SkAdNetworkUrlParser.cs │ ├── SkAdNetworkUrlParser.cs.meta │ ├── SkAdNetworkXmlParser.cs │ └── SkAdNetworkXmlParser.cs.meta ├── PostProcessBuildPlist.cs ├── PostProcessBuildPlist.cs.meta ├── Source.meta ├── Source │ ├── ISkAdNetworkSource.cs │ ├── ISkAdNetworkSource.cs.meta │ ├── SkAdNetworkLocalSource.cs │ ├── SkAdNetworkLocalSource.cs.meta │ ├── SkAdNetworkLocalSourceProvider.cs │ ├── SkAdNetworkLocalSourceProvider.cs.meta │ ├── SkAdNetworkRemoteSource.cs │ └── SkAdNetworkRemoteSource.cs.meta ├── Unity.Advertisement.IosSupport.Editor.asmdef └── Unity.Advertisement.IosSupport.Editor.asmdef.meta ├── LICENSE.md ├── LICENSE.md.meta ├── Runtime.meta ├── Runtime ├── AssemblyInfo.cs ├── AssemblyInfo.cs.meta ├── Plugins.meta ├── Plugins │ ├── iOS.meta │ └── iOS │ │ ├── Categories.meta │ │ ├── Categories │ │ ├── NSInvocation.meta │ │ ├── NSInvocation │ │ │ ├── NSEnumWrapper.meta │ │ │ ├── NSEnumWrapper │ │ │ │ ├── UASupportPrimitivesBox.h │ │ │ │ ├── UASupportPrimitivesBox.h.meta │ │ │ │ ├── UASupportPrimitivesBox.m │ │ │ │ └── UASupportPrimitivesBox.m.meta │ │ │ ├── NSInvocation+Convenience.h │ │ │ ├── NSInvocation+Convenience.h.meta │ │ │ ├── NSInvocation+Convenience.m │ │ │ └── NSInvocation+Convenience.m.meta │ │ ├── UASupportTools.h │ │ ├── UASupportTools.h.meta │ │ ├── UASupportTools.m │ │ └── UASupportTools.m.meta │ │ ├── SkAdNetworkInterface.m │ │ ├── SkAdNetworkInterface.m.meta │ │ ├── SkAdNetworkManager.h │ │ ├── SkAdNetworkManager.h.meta │ │ ├── SkAdNetworkManager.m │ │ ├── SkAdNetworkManager.m.meta │ │ ├── TrackingAuthorizationInterface.m │ │ ├── TrackingAuthorizationInterface.m.meta │ │ ├── TrackingAuthorizationManager.h │ │ ├── TrackingAuthorizationManager.h.meta │ │ ├── TrackingAuthorizationManager.m │ │ └── TrackingAuthorizationManager.m.meta ├── SkAdNetwork.meta ├── SkAdNetwork │ ├── SkAdNetworkBinding.cs │ └── SkAdNetworkBinding.cs.meta ├── Unity.Advertisement.IosSupport.asmdef ├── Unity.Advertisement.IosSupport.asmdef.meta ├── iOSTransparency.meta └── iOSTransparency │ ├── ATTrackingStatusBinding.cs │ └── ATTrackingStatusBinding.cs.meta ├── Tests.meta ├── Tests ├── .tests.json ├── Editor.meta ├── Editor │ ├── PListTests.cs │ ├── PListTests.cs.meta │ ├── SkAdNetworkParserTests.cs │ ├── SkAdNetworkParserTests.cs.meta │ ├── SkAdNetworkSourceTests.cs │ ├── SkAdNetworkSourceTests.cs.meta │ ├── Unity.Advertisement.IosSupport.Editor.Tests.asmdef │ └── Unity.Advertisement.IosSupport.Editor.Tests.asmdef.meta ├── Runtime.meta └── Runtime │ ├── RuntimeTests.cs │ ├── RuntimeTests.cs.meta │ ├── Unity.Advertisement.IosSupport.Tests.asmdef │ └── Unity.Advertisement.IosSupport.Tests.asmdef.meta ├── package.json └── package.json.meta /.editorconfig: -------------------------------------------------------------------------------- 1 | [*] 2 | formatter = generic 3 | # require manual formatting so that bugs during dev of formatter do not auto-ruin formatter code 4 | disable_auto_format = true 5 | 6 | [*.cs] 7 | formatters = uncrustify, generic 8 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.sln 2 | *.sln* 3 | *.csproj 4 | *.csproj* 5 | *.DS_Store 6 | JetBrains* 7 | .idea/ 8 | Library/ 9 | Temp/ 10 | Logs/ 11 | obj/ 12 | ProjectVersion.txt -------------------------------------------------------------------------------- /MoveSamplesIn.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | echo Moving samples from project to package. 3 | REM Clean out what was in there 4 | rmdir /S /Q com.unity.ads.ios-support\Samples 5 | 6 | REM Copy over from the Samples folder in the unity project 7 | xcopy /S /I /Q SampleProject~\Assets\Samples com.unity.ads.ios-support\Samples 8 | -------------------------------------------------------------------------------- /MoveSamplesOut.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | echo Moving samples out of the package directory. 3 | 4 | REM Clean out what was in there 5 | rmdir /S /Q com.unity.ads.ios-support\Samples 6 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Using this package 2 | 3 | This package supports Apple's SKAdNetwork and AppTrackingTransparency frameworks for your made-with-Unity iOS application, by aggregating proper ad network IDs and providing access to relevant Apple developer APIs. 4 | 5 | For more information about iOS 14 technical integration, including this package's support functionality, please see the full [iOS 14 technical documentation](https://unityads.unity3d.com/help/monetization/ios14). 6 | 7 | ## Installing the package 8 | 9 | ### From this repository 10 | 11 | 1. Download this repo to your hard drive. 12 | 2. In the Unity Editor, open the [Unity Package Manager](https://docs.unity3d.com/Manual/Packages.html) window. 13 | 3. Click the **+** button and select **Add package from disk...**. 14 | 4. Navigate to the location where you downloaded the repo and select the iOS14 Support package (_..\com.unity.ads.ios-support-master\com.unity.ads.ios-support\package.json_) to install the package. If successful, the iOS14 Support package will appear in the package manager list (note that you must have **All packages** selected to view it). 15 | 16 | ### From Unity Package Manager 17 | 18 | 1. In the Unity Editor, select **Window** > **Package** Manager to open the Package Manager. 19 | 2. Select the **iOS 14 Advertising Support** package from the list, then select the most recent verified version. 20 | 3. Click the **Install** or **Update** button. 21 | 22 | ## Apple developer API extensions 23 | 24 | This package provides access to the following Apple developer APIs: 25 | 26 | ``` 27 | public static void SkAdNetworkUpdateConversionValue(int conversionValue) 28 | ``` 29 | This method allows you to [update the attribution conversion value](https://developer.apple.com/documentation/storekit/skadnetwork/3566697-updateconversionvalue?language=objc). 30 | 31 | ``` 32 | SkAdNetworkRegisterAppForNetworkAttribution() 33 | ``` 34 | This method allows you to [register for attribution](https://developer.apple.com/documentation/storekit/skadnetwork/2943654-registerappforadnetworkattributi?language=objc). 35 | 36 | ``` 37 | public static void RequestAuthorizationTracking() 38 | ``` 39 | This method allows you to [request the user permission dialogue](https://developer.apple.com/documentation/apptrackingtransparency/attrackingmanager/3547037-requesttrackingauthorization). 40 | 41 | ``` 42 | public static AuthorizationTrackingStatus GetAuthorizationTrackingStatus() 43 | ``` 44 | This method allows you to check the app tracking transparency (ATT) [authorization status](https://developer.apple.com/documentation/apptrackingtransparency/attrackingmanager/3547038-trackingauthorizationstatus). 45 | 46 | ## Sample Project 47 | 48 | The SampleProject~ folder included here is a complete Unity project, compatible with Unity 2018.4.33f1 and up. This project contains an example of a context screen you could use to give context to users before showing the native App Tracking Transparency dialog. 49 | -------------------------------------------------------------------------------- /SampleProject~/Assets/Samples.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4d8b193ec9b664f8094648a23b3c4be2 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /SampleProject~/Assets/Samples/01 - Context Screen.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 620a9b369ffa14b67b934283edcff9cc 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /SampleProject~/Assets/Samples/01 - Context Screen/.sample.json: -------------------------------------------------------------------------------- 1 | { 2 | "displayName": "01 Context Screen", 3 | "description": "This sample showcases the basics of how implement a Context Screen for the iOS App Tracking Transparency feature.", 4 | "createSeparatePackage": false 5 | } 6 | -------------------------------------------------------------------------------- /SampleProject~/Assets/Samples/01 - Context Screen/Context Screen Sample.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a2154acf9dc1c46e5a8df649580ad6b9 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /SampleProject~/Assets/Samples/01 - Context Screen/Prefabs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b456238a0d67d4fe7a23ceab3419966b 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /SampleProject~/Assets/Samples/01 - Context Screen/Prefabs/Context Screen.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fa79c615e83e14e2fbc0f083dee317e0 3 | PrefabImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /SampleProject~/Assets/Samples/01 - Context Screen/Scripts.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 896c313e1acc747f5a75a4e2b2aabe33 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /SampleProject~/Assets/Samples/01 - Context Screen/Scripts/AutoSwitchLayout.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | namespace Unity.Advertisement.IosSupport.Samples 4 | { 5 | [ExecuteInEditMode] 6 | public class AutoSwitchLayout : MonoBehaviour 7 | { 8 | public Transform portraitModeLayoutTransform; 9 | public Transform landscapeModeLayoutTransform; 10 | 11 | float m_PreviousAspectRatio; 12 | 13 | private void Update() 14 | { 15 | var aspectRatio = 1f * Screen.width / Screen.height; 16 | 17 | if (!Mathf.Approximately(aspectRatio, m_PreviousAspectRatio) 18 | && portraitModeLayoutTransform 19 | && landscapeModeLayoutTransform) 20 | { 21 | m_PreviousAspectRatio = aspectRatio; 22 | 23 | if (aspectRatio > 1f) 24 | { 25 | landscapeModeLayoutTransform.gameObject.SetActive(true); 26 | portraitModeLayoutTransform.gameObject.SetActive(false); 27 | } 28 | else 29 | { 30 | portraitModeLayoutTransform.gameObject.SetActive(true); 31 | landscapeModeLayoutTransform.gameObject.SetActive(false); 32 | } 33 | } 34 | } 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /SampleProject~/Assets/Samples/01 - Context Screen/Scripts/AutoSwitchLayout.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9c9a84136181c491fa22c727d7e4831a 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /SampleProject~/Assets/Samples/01 - Context Screen/Scripts/ContextScreenManager.cs: -------------------------------------------------------------------------------- 1 | using Unity.Advertisement.IosSupport.Components; 2 | using UnityEngine; 3 | using System; 4 | using UnityEngine.iOS; 5 | 6 | namespace Unity.Advertisement.IosSupport.Samples 7 | { 8 | /// 9 | /// This component will trigger the context screen to appear when the scene starts, 10 | /// if the user hasn't already responded to the iOS tracking dialog. 11 | /// 12 | public class ContextScreenManager : MonoBehaviour 13 | { 14 | /// 15 | /// The prefab that will be instantiated by this component. 16 | /// The prefab has to have an ContextScreenView component on its root GameObject. 17 | /// 18 | public ContextScreenView contextScreenPrefab; 19 | 20 | void Start() 21 | { 22 | #if UNITY_IOS 23 | // check with iOS to see if the user has accepted or declined tracking 24 | var status = ATTrackingStatusBinding.GetAuthorizationTrackingStatus(); 25 | Version currentVersion = new Version(Device.systemVersion); 26 | Version ios14 = new Version("14.5"); 27 | 28 | if (status == ATTrackingStatusBinding.AuthorizationTrackingStatus.NOT_DETERMINED && currentVersion >= ios14) 29 | { 30 | var contextScreen = Instantiate(contextScreenPrefab).GetComponent(); 31 | 32 | // after the Continue button is pressed, and the tracking request 33 | // has been sent, automatically destroy the popup to conserve memory 34 | contextScreen.sentTrackingAuthorizationRequest += () => Destroy(contextScreen.gameObject); 35 | } 36 | #else 37 | Debug.Log("Unity iOS Support: App Tracking Transparency status not checked, because the platform is not iOS."); 38 | #endif 39 | } 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /SampleProject~/Assets/Samples/01 - Context Screen/Scripts/ContextScreenManager.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5f0c6ccc637064b31981616bfc724dcb 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /SampleProject~/Assets/Samples/01 - Context Screen/Scripts/ContextScreenView.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using UnityEngine; 3 | 4 | namespace Unity.Advertisement.IosSupport.Components 5 | { 6 | /// 7 | /// This component controls an iOS App Tracking Transparency context screen. 8 | /// You should only have one of these in your app. 9 | /// 10 | public sealed class ContextScreenView : MonoBehaviour 11 | { 12 | /// 13 | /// This event will be invoked after the ContinueButton is clicked 14 | /// and after the tracking authorization request has been sent. 15 | /// It's a good idea to subscribe to this event so you can destroy 16 | /// this GameObject to free up memory after it's no longer needed. 17 | /// Once the tracking authorization request has been sent, there's no 18 | /// need for this popup again until the app is uninstalled and reinstalled. 19 | /// 20 | public event Action sentTrackingAuthorizationRequest; 21 | 22 | public void RequestAuthorizationTracking() 23 | { 24 | #if UNITY_IOS 25 | Debug.Log("Unity iOS Support: Requesting iOS App Tracking Transparency native dialog."); 26 | 27 | ATTrackingStatusBinding.RequestAuthorizationTracking(AuthorizationTrackingReceived); 28 | 29 | sentTrackingAuthorizationRequest?.Invoke(); 30 | #else 31 | Debug.LogWarning("Unity iOS Support: Tried to request iOS App Tracking Transparency native dialog, " + 32 | "but the current platform is not iOS."); 33 | #endif 34 | } 35 | 36 | private void AuthorizationTrackingReceived(int status) { 37 | Debug.LogFormat("Tracking status received: {0}", status); 38 | 39 | } 40 | 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /SampleProject~/Assets/Samples/01 - Context Screen/Scripts/ContextScreenView.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 43c0833ba503546f1906839450d99850 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /SampleProject~/Assets/Samples/01 - Context Screen/Sprites.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b74174c3c3f684ed78e93999053406ff 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /SampleProject~/Assets/Samples/01 - Context Screen/Sprites/UIBackground_Border10pxNone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/com.unity.ads.ios-support/427fd3bf93924378646e3e81958ded2412cb7c04/SampleProject~/Assets/Samples/01 - Context Screen/Sprites/UIBackground_Border10pxNone.png -------------------------------------------------------------------------------- /SampleProject~/Assets/Samples/01 - Context Screen/Sprites/UIBackground_Border10pxNone.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2f30a9623bbb145b9b7b5d7b407fa074 3 | TextureImporter: 4 | fileIDToRecycleName: {} 5 | externalObjects: {} 6 | serializedVersion: 9 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: 1 38 | wrapV: 1 39 | wrapW: 1 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 1 44 | spriteExtrude: 1 45 | spriteMeshType: 0 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 9, y: 9, z: 9, w: 9} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 1 53 | spriteTessellationDetail: -1 54 | textureType: 8 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | platformSettings: 61 | - serializedVersion: 2 62 | buildTarget: DefaultTexturePlatform 63 | maxTextureSize: 2048 64 | resizeAlgorithm: 0 65 | textureFormat: -1 66 | textureCompression: 0 67 | compressionQuality: 50 68 | crunchedCompression: 0 69 | allowsAlphaSplitting: 0 70 | overridden: 0 71 | androidETC2FallbackOverride: 0 72 | - serializedVersion: 2 73 | buildTarget: Standalone 74 | maxTextureSize: 2048 75 | resizeAlgorithm: 0 76 | textureFormat: -1 77 | textureCompression: 0 78 | compressionQuality: 50 79 | crunchedCompression: 0 80 | allowsAlphaSplitting: 0 81 | overridden: 0 82 | androidETC2FallbackOverride: 0 83 | - serializedVersion: 2 84 | buildTarget: iPhone 85 | maxTextureSize: 2048 86 | resizeAlgorithm: 0 87 | textureFormat: -1 88 | textureCompression: 0 89 | compressionQuality: 50 90 | crunchedCompression: 0 91 | allowsAlphaSplitting: 0 92 | overridden: 0 93 | androidETC2FallbackOverride: 0 94 | - serializedVersion: 2 95 | buildTarget: Android 96 | maxTextureSize: 2048 97 | resizeAlgorithm: 0 98 | textureFormat: -1 99 | textureCompression: 0 100 | compressionQuality: 50 101 | crunchedCompression: 0 102 | allowsAlphaSplitting: 0 103 | overridden: 0 104 | androidETC2FallbackOverride: 0 105 | spriteSheet: 106 | serializedVersion: 2 107 | sprites: [] 108 | outline: [] 109 | physicsShape: [] 110 | bones: [] 111 | spriteID: 1627ea3b75cce4b52859e9f762c0729f 112 | vertices: [] 113 | indices: 114 | edges: [] 115 | weights: [] 116 | spritePackingTag: 117 | pSDRemoveMatte: 0 118 | pSDShowRemoveMatteOption: 0 119 | userData: 120 | assetBundleName: 121 | assetBundleVariant: 122 | -------------------------------------------------------------------------------- /SampleProject~/Assets/Samples/01 - Context Screen/Sprites/dialog illustration-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/com.unity.ads.ios-support/427fd3bf93924378646e3e81958ded2412cb7c04/SampleProject~/Assets/Samples/01 - Context Screen/Sprites/dialog illustration-1.png -------------------------------------------------------------------------------- /SampleProject~/Assets/Samples/01 - Context Screen/Sprites/dialog illustration-1.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ee2dff451a6a94136a1bc2034d68cb1b 3 | TextureImporter: 4 | fileIDToRecycleName: {} 5 | externalObjects: {} 6 | serializedVersion: 9 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: 1 38 | wrapV: 1 39 | wrapW: -1 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 1 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 1 53 | spriteTessellationDetail: -1 54 | textureType: 8 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | platformSettings: 61 | - serializedVersion: 2 62 | buildTarget: DefaultTexturePlatform 63 | maxTextureSize: 2048 64 | resizeAlgorithm: 0 65 | textureFormat: -1 66 | textureCompression: 1 67 | compressionQuality: 50 68 | crunchedCompression: 0 69 | allowsAlphaSplitting: 0 70 | overridden: 0 71 | androidETC2FallbackOverride: 0 72 | spriteSheet: 73 | serializedVersion: 2 74 | sprites: [] 75 | outline: [] 76 | physicsShape: [] 77 | bones: [] 78 | spriteID: 57f1d745d132f4e848cc9acdcf95e3bd 79 | vertices: [] 80 | indices: 81 | edges: [] 82 | weights: [] 83 | spritePackingTag: 84 | pSDRemoveMatte: 0 85 | pSDShowRemoveMatteOption: 0 86 | userData: 87 | assetBundleName: 88 | assetBundleVariant: 89 | -------------------------------------------------------------------------------- /SampleProject~/Packages/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "com.unity.ads": "2.0.8", 4 | "com.unity.analytics": "3.2.3", 5 | "com.unity.collab-proxy": "1.2.15", 6 | "com.unity.package-manager-ui": "2.0.13", 7 | "com.unity.purchasing": "2.2.1", 8 | "com.unity.textmeshpro": "1.4.1", 9 | "com.unity.modules.ai": "1.0.0", 10 | "com.unity.modules.animation": "1.0.0", 11 | "com.unity.modules.assetbundle": "1.0.0", 12 | "com.unity.modules.audio": "1.0.0", 13 | "com.unity.modules.cloth": "1.0.0", 14 | "com.unity.modules.director": "1.0.0", 15 | "com.unity.modules.imageconversion": "1.0.0", 16 | "com.unity.modules.imgui": "1.0.0", 17 | "com.unity.modules.jsonserialize": "1.0.0", 18 | "com.unity.modules.particlesystem": "1.0.0", 19 | "com.unity.modules.physics": "1.0.0", 20 | "com.unity.modules.physics2d": "1.0.0", 21 | "com.unity.modules.screencapture": "1.0.0", 22 | "com.unity.modules.terrain": "1.0.0", 23 | "com.unity.modules.terrainphysics": "1.0.0", 24 | "com.unity.modules.tilemap": "1.0.0", 25 | "com.unity.modules.ui": "1.0.0", 26 | "com.unity.modules.uielements": "1.0.0", 27 | "com.unity.modules.umbra": "1.0.0", 28 | "com.unity.modules.unityanalytics": "1.0.0", 29 | "com.unity.modules.unitywebrequest": "1.0.0", 30 | "com.unity.modules.unitywebrequestassetbundle": "1.0.0", 31 | "com.unity.modules.unitywebrequestaudio": "1.0.0", 32 | "com.unity.modules.unitywebrequesttexture": "1.0.0", 33 | "com.unity.modules.unitywebrequestwww": "1.0.0", 34 | "com.unity.modules.vehicles": "1.0.0", 35 | "com.unity.modules.video": "1.0.0", 36 | "com.unity.modules.vr": "1.0.0", 37 | "com.unity.modules.wind": "1.0.0", 38 | "com.unity.modules.xr": "1.0.0", 39 | "com.unity.ads.ios-support": "file:../../com.unity.ads.ios-support" 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /SampleProject~/ProjectSettings/AudioManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!11 &1 4 | AudioManager: 5 | m_ObjectHideFlags: 0 6 | m_Volume: 1 7 | Rolloff Scale: 1 8 | Doppler Factor: 1 9 | Default Speaker Mode: 2 10 | m_SampleRate: 0 11 | m_DSPBufferSize: 1024 12 | m_VirtualVoiceCount: 512 13 | m_RealVoiceCount: 32 14 | m_SpatializerPlugin: 15 | m_AmbisonicDecoderPlugin: 16 | m_DisableAudio: 0 17 | m_VirtualizeEffects: 1 18 | -------------------------------------------------------------------------------- /SampleProject~/ProjectSettings/ClusterInputManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!236 &1 4 | ClusterInputManager: 5 | m_ObjectHideFlags: 0 6 | m_Inputs: [] 7 | -------------------------------------------------------------------------------- /SampleProject~/ProjectSettings/DynamicsManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!55 &1 4 | PhysicsManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 8 7 | m_Gravity: {x: 0, y: -9.81, z: 0} 8 | m_DefaultMaterial: {fileID: 0} 9 | m_BounceThreshold: 2 10 | m_SleepThreshold: 0.005 11 | m_DefaultContactOffset: 0.01 12 | m_DefaultSolverIterations: 6 13 | m_DefaultSolverVelocityIterations: 1 14 | m_QueriesHitBackfaces: 0 15 | m_QueriesHitTriggers: 1 16 | m_EnableAdaptiveForce: 0 17 | m_ClothInterCollisionDistance: 0 18 | m_ClothInterCollisionStiffness: 0 19 | m_ContactsGeneration: 1 20 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 21 | m_AutoSimulation: 1 22 | m_AutoSyncTransforms: 0 23 | m_ReuseCollisionCallbacks: 1 24 | m_ClothInterCollisionSettingsToggle: 0 25 | m_ContactPairsMode: 0 26 | m_BroadphaseType: 0 27 | m_WorldBounds: 28 | m_Center: {x: 0, y: 0, z: 0} 29 | m_Extent: {x: 250, y: 250, z: 250} 30 | m_WorldSubdivisions: 8 31 | -------------------------------------------------------------------------------- /SampleProject~/ProjectSettings/EditorBuildSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1045 &1 4 | EditorBuildSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Scenes: [] 8 | m_configObjects: {} 9 | -------------------------------------------------------------------------------- /SampleProject~/ProjectSettings/EditorSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!159 &1 4 | EditorSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 7 7 | m_ExternalVersionControlSupport: Visible Meta Files 8 | m_SerializationMode: 2 9 | m_LineEndingsForNewScripts: 2 10 | m_DefaultBehaviorMode: 0 11 | m_PrefabRegularEnvironment: {fileID: 0} 12 | m_PrefabUIEnvironment: {fileID: 0} 13 | m_SpritePackerMode: 0 14 | m_SpritePackerPaddingPower: 1 15 | m_EtcTextureCompressorBehavior: 1 16 | m_EtcTextureFastCompressor: 1 17 | m_EtcTextureNormalCompressor: 2 18 | m_EtcTextureBestCompressor: 4 19 | m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmdef 20 | m_ProjectGenerationRootNamespace: 21 | m_CollabEditorSettings: 22 | inProgressEnabled: 1 23 | m_EnableTextureStreamingInPlayMode: 1 24 | -------------------------------------------------------------------------------- /SampleProject~/ProjectSettings/GraphicsSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!30 &1 4 | GraphicsSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 12 7 | m_Deferred: 8 | m_Mode: 1 9 | m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0} 10 | m_DeferredReflections: 11 | m_Mode: 1 12 | m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0} 13 | m_ScreenSpaceShadows: 14 | m_Mode: 1 15 | m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0} 16 | m_LegacyDeferred: 17 | m_Mode: 1 18 | m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0} 19 | m_DepthNormals: 20 | m_Mode: 1 21 | m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0} 22 | m_MotionVectors: 23 | m_Mode: 1 24 | m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0} 25 | m_LightHalo: 26 | m_Mode: 1 27 | m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0} 28 | m_LensFlare: 29 | m_Mode: 1 30 | m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0} 31 | m_AlwaysIncludedShaders: 32 | - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0} 33 | - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0} 34 | - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0} 35 | - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0} 36 | - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0} 37 | - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0} 38 | - {fileID: 10783, guid: 0000000000000000f000000000000000, type: 0} 39 | m_PreloadedShaders: [] 40 | m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, 41 | type: 0} 42 | m_CustomRenderPipeline: {fileID: 0} 43 | m_TransparencySortMode: 0 44 | m_TransparencySortAxis: {x: 0, y: 0, z: 1} 45 | m_DefaultRenderingPath: 1 46 | m_DefaultMobileRenderingPath: 1 47 | m_TierSettings: [] 48 | m_LightmapStripping: 0 49 | m_FogStripping: 0 50 | m_InstancingStripping: 0 51 | m_LightmapKeepPlain: 1 52 | m_LightmapKeepDirCombined: 1 53 | m_LightmapKeepDynamicPlain: 1 54 | m_LightmapKeepDynamicDirCombined: 1 55 | m_LightmapKeepShadowMask: 1 56 | m_LightmapKeepSubtractive: 1 57 | m_FogKeepLinear: 1 58 | m_FogKeepExp: 1 59 | m_FogKeepExp2: 1 60 | m_AlbedoSwatchInfos: [] 61 | m_LightsUseLinearIntensity: 0 62 | m_LightsUseColorTemperature: 0 63 | -------------------------------------------------------------------------------- /SampleProject~/ProjectSettings/NavMeshAreas.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!126 &1 4 | NavMeshProjectSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | areas: 8 | - name: Walkable 9 | cost: 1 10 | - name: Not Walkable 11 | cost: 1 12 | - name: Jump 13 | cost: 2 14 | - name: 15 | cost: 1 16 | - name: 17 | cost: 1 18 | - name: 19 | cost: 1 20 | - name: 21 | cost: 1 22 | - name: 23 | cost: 1 24 | - name: 25 | cost: 1 26 | - name: 27 | cost: 1 28 | - name: 29 | cost: 1 30 | - name: 31 | cost: 1 32 | - name: 33 | cost: 1 34 | - name: 35 | cost: 1 36 | - name: 37 | cost: 1 38 | - name: 39 | cost: 1 40 | - name: 41 | cost: 1 42 | - name: 43 | cost: 1 44 | - name: 45 | cost: 1 46 | - name: 47 | cost: 1 48 | - name: 49 | cost: 1 50 | - name: 51 | cost: 1 52 | - name: 53 | cost: 1 54 | - name: 55 | cost: 1 56 | - name: 57 | cost: 1 58 | - name: 59 | cost: 1 60 | - name: 61 | cost: 1 62 | - name: 63 | cost: 1 64 | - name: 65 | cost: 1 66 | - name: 67 | cost: 1 68 | - name: 69 | cost: 1 70 | - name: 71 | cost: 1 72 | m_LastAgentTypeID: -887442657 73 | m_Settings: 74 | - serializedVersion: 2 75 | agentTypeID: 0 76 | agentRadius: 0.5 77 | agentHeight: 2 78 | agentSlope: 45 79 | agentClimb: 0.75 80 | ledgeDropHeight: 0 81 | maxJumpAcrossDistance: 0 82 | minRegionArea: 2 83 | manualCellSize: 0 84 | cellSize: 0.16666667 85 | manualTileSize: 0 86 | tileSize: 256 87 | accuratePlacement: 0 88 | debug: 89 | m_Flags: 0 90 | m_SettingNames: 91 | - Humanoid 92 | -------------------------------------------------------------------------------- /SampleProject~/ProjectSettings/NetworkManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!149 &1 4 | NetworkManager: 5 | m_ObjectHideFlags: 0 6 | m_DebugLevel: 0 7 | m_Sendrate: 15 8 | m_AssetToPrefab: {} 9 | -------------------------------------------------------------------------------- /SampleProject~/ProjectSettings/Physics2DSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!19 &1 4 | Physics2DSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 4 7 | m_Gravity: {x: 0, y: -9.81} 8 | m_DefaultMaterial: {fileID: 0} 9 | m_VelocityIterations: 8 10 | m_PositionIterations: 3 11 | m_VelocityThreshold: 1 12 | m_MaxLinearCorrection: 0.2 13 | m_MaxAngularCorrection: 8 14 | m_MaxTranslationSpeed: 100 15 | m_MaxRotationSpeed: 360 16 | m_BaumgarteScale: 0.2 17 | m_BaumgarteTimeOfImpactScale: 0.75 18 | m_TimeToSleep: 0.5 19 | m_LinearSleepTolerance: 0.01 20 | m_AngularSleepTolerance: 2 21 | m_DefaultContactOffset: 0.01 22 | m_AutoSimulation: 1 23 | m_QueriesHitTriggers: 1 24 | m_QueriesStartInColliders: 1 25 | m_ChangeStopsCallbacks: 0 26 | m_CallbacksOnDisable: 1 27 | m_ReuseCollisionCallbacks: 1 28 | m_AutoSyncTransforms: 0 29 | m_AlwaysShowColliders: 0 30 | m_ShowColliderSleep: 1 31 | m_ShowColliderContacts: 0 32 | m_ShowColliderAABB: 0 33 | m_ContactArrowScale: 0.2 34 | m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412} 35 | m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432} 36 | m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745} 37 | m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804} 38 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 39 | -------------------------------------------------------------------------------- /SampleProject~/ProjectSettings/PresetManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1386491679 &1 4 | PresetManager: 5 | m_ObjectHideFlags: 0 6 | m_DefaultList: 7 | - type: 8 | m_NativeTypeID: 108 9 | m_ManagedTypePPtr: {fileID: 0} 10 | m_ManagedTypeFallback: 11 | defaultPresets: 12 | - m_Preset: {fileID: 2655988077585873504, guid: c1cf8506f04ef2c4a88b64b6c4202eea, 13 | type: 2} 14 | - type: 15 | m_NativeTypeID: 1020 16 | m_ManagedTypePPtr: {fileID: 0} 17 | m_ManagedTypeFallback: 18 | defaultPresets: 19 | - m_Preset: {fileID: 2655988077585873504, guid: 0cd792cc87e492d43b4e95b205fc5cc6, 20 | type: 2} 21 | - type: 22 | m_NativeTypeID: 1006 23 | m_ManagedTypePPtr: {fileID: 0} 24 | m_ManagedTypeFallback: 25 | defaultPresets: 26 | - m_Preset: {fileID: 2655988077585873504, guid: 7a99f8aa944efe94cb9bd74562b7d5f9, 27 | type: 2} 28 | -------------------------------------------------------------------------------- /SampleProject~/ProjectSettings/QualitySettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!47 &1 4 | QualitySettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 5 7 | m_CurrentQuality: 4 8 | m_QualitySettings: 9 | - serializedVersion: 2 10 | name: Very Low 11 | pixelLightCount: 0 12 | shadows: 0 13 | shadowResolution: 0 14 | shadowProjection: 1 15 | shadowCascades: 1 16 | shadowDistance: 15 17 | shadowNearPlaneOffset: 3 18 | shadowCascade2Split: 0.33333334 19 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 20 | shadowmaskMode: 0 21 | blendWeights: 1 22 | textureQuality: 1 23 | anisotropicTextures: 0 24 | antiAliasing: 0 25 | softParticles: 0 26 | softVegetation: 0 27 | realtimeReflectionProbes: 0 28 | billboardsFaceCameraPosition: 0 29 | vSyncCount: 0 30 | lodBias: 0.3 31 | maximumLODLevel: 0 32 | particleRaycastBudget: 4 33 | asyncUploadTimeSlice: 2 34 | asyncUploadBufferSize: 16 35 | resolutionScalingFixedDPIFactor: 1 36 | excludedTargetPlatforms: [] 37 | - serializedVersion: 2 38 | name: Low 39 | pixelLightCount: 0 40 | shadows: 0 41 | shadowResolution: 0 42 | shadowProjection: 1 43 | shadowCascades: 1 44 | shadowDistance: 20 45 | shadowNearPlaneOffset: 3 46 | shadowCascade2Split: 0.33333334 47 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 48 | shadowmaskMode: 0 49 | blendWeights: 2 50 | textureQuality: 0 51 | anisotropicTextures: 0 52 | antiAliasing: 0 53 | softParticles: 0 54 | softVegetation: 0 55 | realtimeReflectionProbes: 0 56 | billboardsFaceCameraPosition: 0 57 | vSyncCount: 0 58 | lodBias: 0.4 59 | maximumLODLevel: 0 60 | particleRaycastBudget: 16 61 | asyncUploadTimeSlice: 2 62 | asyncUploadBufferSize: 16 63 | resolutionScalingFixedDPIFactor: 1 64 | excludedTargetPlatforms: [] 65 | - serializedVersion: 2 66 | name: Medium 67 | pixelLightCount: 1 68 | shadows: 1 69 | shadowResolution: 0 70 | shadowProjection: 1 71 | shadowCascades: 1 72 | shadowDistance: 20 73 | shadowNearPlaneOffset: 3 74 | shadowCascade2Split: 0.33333334 75 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 76 | shadowmaskMode: 0 77 | blendWeights: 2 78 | textureQuality: 0 79 | anisotropicTextures: 1 80 | antiAliasing: 0 81 | softParticles: 0 82 | softVegetation: 0 83 | realtimeReflectionProbes: 0 84 | billboardsFaceCameraPosition: 0 85 | vSyncCount: 1 86 | lodBias: 0.7 87 | maximumLODLevel: 0 88 | particleRaycastBudget: 64 89 | asyncUploadTimeSlice: 2 90 | asyncUploadBufferSize: 16 91 | resolutionScalingFixedDPIFactor: 1 92 | excludedTargetPlatforms: [] 93 | - serializedVersion: 2 94 | name: High 95 | pixelLightCount: 2 96 | shadows: 2 97 | shadowResolution: 1 98 | shadowProjection: 1 99 | shadowCascades: 2 100 | shadowDistance: 40 101 | shadowNearPlaneOffset: 3 102 | shadowCascade2Split: 0.33333334 103 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 104 | shadowmaskMode: 1 105 | blendWeights: 2 106 | textureQuality: 0 107 | anisotropicTextures: 1 108 | antiAliasing: 2 109 | softParticles: 0 110 | softVegetation: 1 111 | realtimeReflectionProbes: 1 112 | billboardsFaceCameraPosition: 1 113 | vSyncCount: 1 114 | lodBias: 1 115 | maximumLODLevel: 0 116 | particleRaycastBudget: 256 117 | asyncUploadTimeSlice: 2 118 | asyncUploadBufferSize: 16 119 | resolutionScalingFixedDPIFactor: 1 120 | excludedTargetPlatforms: [] 121 | - serializedVersion: 2 122 | name: Very High 123 | pixelLightCount: 3 124 | shadows: 2 125 | shadowResolution: 2 126 | shadowProjection: 1 127 | shadowCascades: 2 128 | shadowDistance: 40 129 | shadowNearPlaneOffset: 3 130 | shadowCascade2Split: 0.33333334 131 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 132 | shadowmaskMode: 1 133 | blendWeights: 4 134 | textureQuality: 0 135 | anisotropicTextures: 1 136 | antiAliasing: 4 137 | softParticles: 1 138 | softVegetation: 1 139 | realtimeReflectionProbes: 1 140 | billboardsFaceCameraPosition: 1 141 | vSyncCount: 1 142 | lodBias: 1.5 143 | maximumLODLevel: 0 144 | particleRaycastBudget: 1024 145 | asyncUploadTimeSlice: 2 146 | asyncUploadBufferSize: 16 147 | resolutionScalingFixedDPIFactor: 1 148 | excludedTargetPlatforms: [] 149 | - serializedVersion: 2 150 | name: Ultra 151 | pixelLightCount: 4 152 | shadows: 2 153 | shadowResolution: 2 154 | shadowProjection: 1 155 | shadowCascades: 4 156 | shadowDistance: 150 157 | shadowNearPlaneOffset: 3 158 | shadowCascade2Split: 0.33333334 159 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 160 | shadowmaskMode: 1 161 | blendWeights: 4 162 | textureQuality: 0 163 | anisotropicTextures: 1 164 | antiAliasing: 4 165 | softParticles: 1 166 | softVegetation: 1 167 | realtimeReflectionProbes: 1 168 | billboardsFaceCameraPosition: 1 169 | vSyncCount: 1 170 | lodBias: 2 171 | maximumLODLevel: 0 172 | particleRaycastBudget: 4096 173 | asyncUploadTimeSlice: 2 174 | asyncUploadBufferSize: 16 175 | resolutionScalingFixedDPIFactor: 1 176 | excludedTargetPlatforms: [] 177 | m_PerPlatformDefaultQuality: 178 | Android: 2 179 | Nintendo 3DS: 5 180 | Nintendo Switch: 5 181 | PS4: 5 182 | PSP2: 2 183 | Standalone: 5 184 | Tizen: 2 185 | WebGL: 3 186 | WiiU: 5 187 | Windows Store Apps: 5 188 | XboxOne: 5 189 | iPhone: 2 190 | tvOS: 2 191 | -------------------------------------------------------------------------------- /SampleProject~/ProjectSettings/TagManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!78 &1 4 | TagManager: 5 | serializedVersion: 2 6 | tags: [] 7 | layers: 8 | - Default 9 | - TransparentFX 10 | - Ignore Raycast 11 | - 12 | - Water 13 | - UI 14 | - 15 | - 16 | - PostProcessing 17 | - 18 | - 19 | - 20 | - 21 | - 22 | - 23 | - 24 | - 25 | - 26 | - 27 | - 28 | - 29 | - 30 | - 31 | - 32 | - 33 | - 34 | - 35 | - 36 | - 37 | - 38 | - 39 | - 40 | m_SortingLayers: 41 | - name: Default 42 | uniqueID: 0 43 | locked: 0 44 | -------------------------------------------------------------------------------- /SampleProject~/ProjectSettings/TimeManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!5 &1 4 | TimeManager: 5 | m_ObjectHideFlags: 0 6 | Fixed Timestep: 0.02 7 | Maximum Allowed Timestep: 0.1 8 | m_TimeScale: 1 9 | Maximum Particle Timestep: 0.03 10 | -------------------------------------------------------------------------------- /SampleProject~/ProjectSettings/UnityConnectSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!310 &1 4 | UnityConnectSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 1 7 | m_Enabled: 0 8 | m_TestMode: 0 9 | m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events 10 | m_EventUrl: https://cdp.cloud.unity3d.com/v1/events 11 | m_ConfigUrl: https://config.uca.cloud.unity3d.com 12 | m_TestInitMode: 0 13 | CrashReportingSettings: 14 | m_EventUrl: https://perf-events.cloud.unity3d.com 15 | m_Enabled: 0 16 | m_LogBufferSize: 10 17 | m_CaptureEditorExceptions: 1 18 | UnityPurchasingSettings: 19 | m_Enabled: 0 20 | m_TestMode: 0 21 | UnityAnalyticsSettings: 22 | m_Enabled: 0 23 | m_TestMode: 0 24 | m_InitializeOnStartup: 1 25 | UnityAdsSettings: 26 | m_Enabled: 0 27 | m_InitializeOnStartup: 1 28 | m_TestMode: 0 29 | m_IosGameId: 30 | m_AndroidGameId: 31 | m_GameIds: {} 32 | m_GameId: 33 | PerformanceReportingSettings: 34 | m_Enabled: 0 35 | -------------------------------------------------------------------------------- /SampleProject~/ProjectSettings/VFXManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!937362698 &1 4 | VFXManager: 5 | m_ObjectHideFlags: 0 6 | m_IndirectShader: {fileID: 0} 7 | m_CopyBufferShader: {fileID: 0} 8 | m_SortShader: {fileID: 0} 9 | m_RenderPipeSettingsPath: 10 | m_FixedTimeStep: 0.016666668 11 | m_MaxDeltaTime: 0.05 12 | -------------------------------------------------------------------------------- /TestProject~/2018.4/Assets/AdditionalTestData.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3e3c73b95d6934f9cbd53a356704b00a 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /TestProject~/2018.4/Assets/AdditionalTestData/SKAdNetworks: -------------------------------------------------------------------------------- 1 | https://skan.mz.unity3d.com/v2/partner/skadnetworks.plist.xml -------------------------------------------------------------------------------- /TestProject~/2018.4/Assets/AdditionalTestData/SKAdNetworks.json: -------------------------------------------------------------------------------- 1 | { 2 | "company_name": "SSP", 3 | "company_address": "SSP, address, country", 4 | "company_domain": "company.com", 5 | "skadnetwork_ids": [ 6 | { 7 | "entity_name": "DSP1", 8 | "entity_domain": "DSP1.com", 9 | "skadnetwork_id": "4FZDC2EVR5.skadnetwork", 10 | "creation_date": "2020-08-21T00:00:00Z" 11 | }, 12 | { 13 | "entity_name": "MMP1", 14 | "entity_domain": "MMP1.com", 15 | "skadnetwork_id": "V72QYCH5UU.skadnetwork", 16 | "creation_date": "2020-08-25T00:00:00Z" 17 | } 18 | ] 19 | } -------------------------------------------------------------------------------- /TestProject~/2018.4/Assets/AdditionalTestData/SKAdNetworks.json.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 914128a40063e4f2181beb781b47ff0e 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /TestProject~/2018.4/Assets/AdditionalTestData/SKAdNetworks.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2041ea72b9c7c4c649cec7bff2357780 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /TestProject~/2018.4/Assets/Info_Test.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleDocumentTypes 8 | 9 | SKAdNetworkItems 10 | 11 | 12 | CFBundleExecutable 13 | $(EXECUTABLE_NAME) 14 | CFBundleIdentifier 15 | $(PRODUCT_BUNDLE_IDENTIFIER) 16 | CFBundleInfoDictionaryVersion 17 | 6.0 18 | CFBundleName 19 | $(PRODUCT_NAME) 20 | CFBundlePackageType 21 | BNDL 22 | CFBundleShortVersionString 23 | 1.0 24 | CFBundleSignature 25 | ???? 26 | CFBundleVersion 27 | 1 28 | NSAppTransportSecurity 29 | 30 | NSAllowsArbitraryLoads 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /TestProject~/2018.4/Assets/Info_Test.plist.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b0c71de36819f42a3a3aae7be340de47 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /TestProject~/2018.4/Assets/Plugins.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fe5a1b1114c9944ab9da5bbee3de923c 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /TestProject~/2018.4/Assets/Plugins/Editor.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 497c561d11d7845008abf80881d5118e 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /TestProject~/2018.4/Assets/SKAdNetworks: -------------------------------------------------------------------------------- 1 | https://skan.mz.unity3d.com/v2/partner/skadnetworks.plist.xml -------------------------------------------------------------------------------- /TestProject~/2018.4/Assets/SKAdNetworks.json: -------------------------------------------------------------------------------- 1 | [{"skadnetwork_id":"4DZT52R2T5.skadnetwork","entityName":"Unity Technologies","createdAt":"2020-08-21T00:00:00Z"},{"skadnetwork_id":"bvpn9ufa9b.skadnetwork","entityName":"Unity Technologies","createdAt":"2020-08-21T00:00:00Z"}] -------------------------------------------------------------------------------- /TestProject~/2018.4/Assets/SKAdNetworks.json.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3bc7e72210d7041b995a98dc2a6042e6 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /TestProject~/2018.4/Assets/SKAdNetworks.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3597e1d22f7e7412fbc28d8eacc447b7 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /TestProject~/2018.4/Assets/SKAdNetworks.xml: -------------------------------------------------------------------------------- 1 | SKAdNetworkIdentifier4DZT52R2T5.skadnetworkSKAdNetworkIdentifier123456.skadnetwork -------------------------------------------------------------------------------- /TestProject~/2018.4/Assets/SKAdNetworks.xml.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d5e81663dfd89406da80812861f2cfcf 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /TestProject~/2018.4/Assets/SKAdNetworks_Bad1: -------------------------------------------------------------------------------- 1 | tps://skan.mz.unity3d.com/v2/partner/skadnetworks.plist.xml -------------------------------------------------------------------------------- /TestProject~/2018.4/Assets/SKAdNetworks_Bad1.json: -------------------------------------------------------------------------------- 1 | [{"skadnetworkid":"4DZT52R2T5.skadnetwork","entityName":"Unity Technologies","createdAt":"2020-08-21T00:00:00Z"},{"skadnetwork_id":"bvpn9ufa9b.skadnetwork","entityName":"Unity Technologies","createdAt":"2020-08-21T00:00:00Z"}] -------------------------------------------------------------------------------- /TestProject~/2018.4/Assets/SKAdNetworks_Bad1.json.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6cd11bd77e0514fbfa600b3bd3fb22e3 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /TestProject~/2018.4/Assets/SKAdNetworks_Bad1.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 44fca188666a742999c3a591c839dc49 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /TestProject~/2018.4/Assets/SKAdNetworks_Bad1.xml: -------------------------------------------------------------------------------- 1 | WrongIdentifier4DZT52R2T5.skadnetworkSKAdNetworkIdentifier123456.skadnetwork -------------------------------------------------------------------------------- /TestProject~/2018.4/Assets/SKAdNetworks_Bad1.xml.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 23c25d42c44fe44758d53a85ea2115a8 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /TestProject~/2018.4/Assets/SKAdNetworks_Bad2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/com.unity.ads.ios-support/427fd3bf93924378646e3e81958ded2412cb7c04/TestProject~/2018.4/Assets/SKAdNetworks_Bad2 -------------------------------------------------------------------------------- /TestProject~/2018.4/Assets/SKAdNetworks_Bad2.json: -------------------------------------------------------------------------------- 1 | [{"skadnetworkid":"4DZT52R2T5.skadnetwork"tyName":"Unity Technologies","createdAt":"2020-08-21T00:00:00Z"},{"skadnetwork_id":"bvpn9ufa9b.skadnetwork","entityName":"Unity Technologies","createdAt":"2020-08-21T00:00:00Z"}] -------------------------------------------------------------------------------- /TestProject~/2018.4/Assets/SKAdNetworks_Bad2.json.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2b8af2981e78e4699ae4a2641de2a0a6 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /TestProject~/2018.4/Assets/SKAdNetworks_Bad2.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 83259ecdd87204857b1d760cd73acf8c 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /TestProject~/2018.4/Assets/SKAdNetworks_Bad2.xml: -------------------------------------------------------------------------------- 1 | kIdentifier4DZT52R2T5.skadnetworkSKAdNetworkIdentifier123456.skadnetwork -------------------------------------------------------------------------------- /TestProject~/2018.4/Assets/SKAdNetworks_Bad2.xml.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3e8dc6ae4a0c7495fa7a18d37ee85a22 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /TestProject~/2018.4/Assets/SKAdNetworks_Bad3: -------------------------------------------------------------------------------- 1 | https://skan.mz.unity3d.com/v2/partner/skadnetworks.plist.json -------------------------------------------------------------------------------- /TestProject~/2018.4/Assets/SKAdNetworks_Bad3.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e7d77a902b8cd48b8a48a37d6be2debb 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /TestProject~/2018.4/Assets/Scenes.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4f172a2f0405d8c43aba600e95a01d13 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /TestProject~/2018.4/Assets/Scenes/SampleScene.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9fc0d4010bbf28b4594072e72b8655ab 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /TestProject~/2018.4/Assets/Script.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 96d9b9c97ad7b83409de8014819a792b 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /TestProject~/2018.4/Assets/Script/Main.cs: -------------------------------------------------------------------------------- 1 | using Unity.Advertisement.IosSupport; 2 | using UnityEngine; 3 | public class Main : MonoBehaviour 4 | { 5 | private ATTrackingStatusBinding.AuthorizationTrackingStatus m_PreviousStatus; 6 | private bool m_Once; 7 | 8 | // Start is called before the first frame update 9 | private void Start() 10 | { 11 | var status = ATTrackingStatusBinding.GetAuthorizationTrackingStatus(); 12 | Debug.LogFormat("Tracking status at start: {0}", status); 13 | m_PreviousStatus = status; 14 | 15 | SkAdNetworkBinding.SkAdNetworkUpdateConversionValue(0); 16 | SkAdNetworkBinding.SkAdNetworkRegisterAppForNetworkAttribution(); 17 | } 18 | 19 | // Update is called once per frame 20 | private void Update() 21 | { 22 | if(!m_Once) 23 | { 24 | m_Once = true; 25 | ATTrackingStatusBinding.RequestAuthorizationTracking(AuthorizationTrackingReceived); 26 | } 27 | 28 | var status = ATTrackingStatusBinding.GetAuthorizationTrackingStatus(); 29 | if(m_PreviousStatus != status) 30 | { 31 | m_PreviousStatus = status; 32 | Debug.LogFormat("Tracking status updated: {0}", status); 33 | } 34 | } 35 | 36 | private void AuthorizationTrackingReceived(int status) { 37 | Debug.LogFormat("Tracking status received: {0}", status); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /TestProject~/2018.4/Assets/Script/Main.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1ef5312610a7dba4eb1d923f0aaf9473 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /TestProject~/2018.4/Packages/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "com.unity.ads.ios-support": "file:../../../com.unity.ads.ios-support", 4 | "com.unity.ads": "3.4.7", 5 | "com.unity.analytics": "3.2.3", 6 | "com.unity.collab-proxy": "1.2.15", 7 | "com.unity.package-manager-ui": "2.0.8", 8 | "com.unity.purchasing": "2.0.3", 9 | "com.unity.textmeshpro": "1.4.1", 10 | "com.unity.modules.ai": "1.0.0", 11 | "com.unity.modules.animation": "1.0.0", 12 | "com.unity.modules.assetbundle": "1.0.0", 13 | "com.unity.modules.audio": "1.0.0", 14 | "com.unity.modules.cloth": "1.0.0", 15 | "com.unity.modules.director": "1.0.0", 16 | "com.unity.modules.imageconversion": "1.0.0", 17 | "com.unity.modules.imgui": "1.0.0", 18 | "com.unity.modules.jsonserialize": "1.0.0", 19 | "com.unity.modules.particlesystem": "1.0.0", 20 | "com.unity.modules.physics": "1.0.0", 21 | "com.unity.modules.physics2d": "1.0.0", 22 | "com.unity.modules.screencapture": "1.0.0", 23 | "com.unity.modules.terrain": "1.0.0", 24 | "com.unity.modules.terrainphysics": "1.0.0", 25 | "com.unity.modules.tilemap": "1.0.0", 26 | "com.unity.modules.ui": "1.0.0", 27 | "com.unity.modules.uielements": "1.0.0", 28 | "com.unity.modules.umbra": "1.0.0", 29 | "com.unity.modules.unityanalytics": "1.0.0", 30 | "com.unity.modules.unitywebrequest": "1.0.0", 31 | "com.unity.modules.unitywebrequestassetbundle": "1.0.0", 32 | "com.unity.modules.unitywebrequestaudio": "1.0.0", 33 | "com.unity.modules.unitywebrequesttexture": "1.0.0", 34 | "com.unity.modules.unitywebrequestwww": "1.0.0", 35 | "com.unity.modules.vehicles": "1.0.0", 36 | "com.unity.modules.video": "1.0.0", 37 | "com.unity.modules.vr": "1.0.0", 38 | "com.unity.modules.wind": "1.0.0", 39 | "com.unity.modules.xr": "1.0.0" 40 | }, 41 | "testables": [ 42 | "com.unity.ads.ios-support" 43 | ] 44 | } 45 | -------------------------------------------------------------------------------- /TestProject~/2018.4/ProjectSettings/AudioManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!11 &1 4 | AudioManager: 5 | m_ObjectHideFlags: 0 6 | m_Volume: 1 7 | Rolloff Scale: 1 8 | Doppler Factor: 1 9 | Default Speaker Mode: 2 10 | m_SampleRate: 0 11 | m_DSPBufferSize: 1024 12 | m_VirtualVoiceCount: 512 13 | m_RealVoiceCount: 32 14 | m_SpatializerPlugin: 15 | m_AmbisonicDecoderPlugin: 16 | m_DisableAudio: 0 17 | m_VirtualizeEffects: 1 18 | -------------------------------------------------------------------------------- /TestProject~/2018.4/ProjectSettings/ClusterInputManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!236 &1 4 | ClusterInputManager: 5 | m_ObjectHideFlags: 0 6 | m_Inputs: [] 7 | -------------------------------------------------------------------------------- /TestProject~/2018.4/ProjectSettings/DynamicsManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!55 &1 4 | PhysicsManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 8 7 | m_Gravity: {x: 0, y: -9.81, z: 0} 8 | m_DefaultMaterial: {fileID: 0} 9 | m_BounceThreshold: 2 10 | m_SleepThreshold: 0.005 11 | m_DefaultContactOffset: 0.01 12 | m_DefaultSolverIterations: 6 13 | m_DefaultSolverVelocityIterations: 1 14 | m_QueriesHitBackfaces: 0 15 | m_QueriesHitTriggers: 1 16 | m_EnableAdaptiveForce: 0 17 | m_ClothInterCollisionDistance: 0 18 | m_ClothInterCollisionStiffness: 0 19 | m_ContactsGeneration: 1 20 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 21 | m_AutoSimulation: 1 22 | m_AutoSyncTransforms: 0 23 | m_ReuseCollisionCallbacks: 1 24 | m_ClothInterCollisionSettingsToggle: 0 25 | m_ContactPairsMode: 0 26 | m_BroadphaseType: 0 27 | m_WorldBounds: 28 | m_Center: {x: 0, y: 0, z: 0} 29 | m_Extent: {x: 250, y: 250, z: 250} 30 | m_WorldSubdivisions: 8 31 | -------------------------------------------------------------------------------- /TestProject~/2018.4/ProjectSettings/EditorBuildSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1045 &1 4 | EditorBuildSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Scenes: 8 | - enabled: 1 9 | path: Assets/Scenes/TestScene.unity 10 | guid: 2e1b6d59205ae4559892c07138616bc0 11 | m_configObjects: {} 12 | -------------------------------------------------------------------------------- /TestProject~/2018.4/ProjectSettings/EditorSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!159 &1 4 | EditorSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 7 7 | m_ExternalVersionControlSupport: Visible Meta Files 8 | m_SerializationMode: 2 9 | m_LineEndingsForNewScripts: 2 10 | m_DefaultBehaviorMode: 0 11 | m_PrefabRegularEnvironment: {fileID: 0} 12 | m_PrefabUIEnvironment: {fileID: 0} 13 | m_SpritePackerMode: 0 14 | m_SpritePackerPaddingPower: 1 15 | m_EtcTextureCompressorBehavior: 1 16 | m_EtcTextureFastCompressor: 1 17 | m_EtcTextureNormalCompressor: 2 18 | m_EtcTextureBestCompressor: 4 19 | m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmdef 20 | m_ProjectGenerationRootNamespace: 21 | m_CollabEditorSettings: 22 | inProgressEnabled: 1 23 | m_EnableTextureStreamingInPlayMode: 1 24 | -------------------------------------------------------------------------------- /TestProject~/2018.4/ProjectSettings/GraphicsSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!30 &1 4 | GraphicsSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 12 7 | m_Deferred: 8 | m_Mode: 1 9 | m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0} 10 | m_DeferredReflections: 11 | m_Mode: 1 12 | m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0} 13 | m_ScreenSpaceShadows: 14 | m_Mode: 1 15 | m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0} 16 | m_LegacyDeferred: 17 | m_Mode: 1 18 | m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0} 19 | m_DepthNormals: 20 | m_Mode: 1 21 | m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0} 22 | m_MotionVectors: 23 | m_Mode: 1 24 | m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0} 25 | m_LightHalo: 26 | m_Mode: 1 27 | m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0} 28 | m_LensFlare: 29 | m_Mode: 1 30 | m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0} 31 | m_AlwaysIncludedShaders: 32 | - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0} 33 | - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0} 34 | - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0} 35 | - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0} 36 | - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0} 37 | - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0} 38 | - {fileID: 10783, guid: 0000000000000000f000000000000000, type: 0} 39 | m_PreloadedShaders: [] 40 | m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, 41 | type: 0} 42 | m_CustomRenderPipeline: {fileID: 0} 43 | m_TransparencySortMode: 0 44 | m_TransparencySortAxis: {x: 0, y: 0, z: 1} 45 | m_DefaultRenderingPath: 1 46 | m_DefaultMobileRenderingPath: 1 47 | m_TierSettings: [] 48 | m_LightmapStripping: 0 49 | m_FogStripping: 0 50 | m_InstancingStripping: 0 51 | m_LightmapKeepPlain: 1 52 | m_LightmapKeepDirCombined: 1 53 | m_LightmapKeepDynamicPlain: 1 54 | m_LightmapKeepDynamicDirCombined: 1 55 | m_LightmapKeepShadowMask: 1 56 | m_LightmapKeepSubtractive: 1 57 | m_FogKeepLinear: 1 58 | m_FogKeepExp: 1 59 | m_FogKeepExp2: 1 60 | m_AlbedoSwatchInfos: [] 61 | m_LightsUseLinearIntensity: 0 62 | m_LightsUseColorTemperature: 0 63 | -------------------------------------------------------------------------------- /TestProject~/2018.4/ProjectSettings/NavMeshAreas.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!126 &1 4 | NavMeshProjectSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | areas: 8 | - name: Walkable 9 | cost: 1 10 | - name: Not Walkable 11 | cost: 1 12 | - name: Jump 13 | cost: 2 14 | - name: 15 | cost: 1 16 | - name: 17 | cost: 1 18 | - name: 19 | cost: 1 20 | - name: 21 | cost: 1 22 | - name: 23 | cost: 1 24 | - name: 25 | cost: 1 26 | - name: 27 | cost: 1 28 | - name: 29 | cost: 1 30 | - name: 31 | cost: 1 32 | - name: 33 | cost: 1 34 | - name: 35 | cost: 1 36 | - name: 37 | cost: 1 38 | - name: 39 | cost: 1 40 | - name: 41 | cost: 1 42 | - name: 43 | cost: 1 44 | - name: 45 | cost: 1 46 | - name: 47 | cost: 1 48 | - name: 49 | cost: 1 50 | - name: 51 | cost: 1 52 | - name: 53 | cost: 1 54 | - name: 55 | cost: 1 56 | - name: 57 | cost: 1 58 | - name: 59 | cost: 1 60 | - name: 61 | cost: 1 62 | - name: 63 | cost: 1 64 | - name: 65 | cost: 1 66 | - name: 67 | cost: 1 68 | - name: 69 | cost: 1 70 | - name: 71 | cost: 1 72 | m_LastAgentTypeID: -887442657 73 | m_Settings: 74 | - serializedVersion: 2 75 | agentTypeID: 0 76 | agentRadius: 0.5 77 | agentHeight: 2 78 | agentSlope: 45 79 | agentClimb: 0.75 80 | ledgeDropHeight: 0 81 | maxJumpAcrossDistance: 0 82 | minRegionArea: 2 83 | manualCellSize: 0 84 | cellSize: 0.16666667 85 | manualTileSize: 0 86 | tileSize: 256 87 | accuratePlacement: 0 88 | debug: 89 | m_Flags: 0 90 | m_SettingNames: 91 | - Humanoid 92 | -------------------------------------------------------------------------------- /TestProject~/2018.4/ProjectSettings/NetworkManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!149 &1 4 | NetworkManager: 5 | m_ObjectHideFlags: 0 6 | m_DebugLevel: 0 7 | m_Sendrate: 15 8 | m_AssetToPrefab: {} 9 | -------------------------------------------------------------------------------- /TestProject~/2018.4/ProjectSettings/Physics2DSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!19 &1 4 | Physics2DSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 4 7 | m_Gravity: {x: 0, y: -9.81} 8 | m_DefaultMaterial: {fileID: 0} 9 | m_VelocityIterations: 8 10 | m_PositionIterations: 3 11 | m_VelocityThreshold: 1 12 | m_MaxLinearCorrection: 0.2 13 | m_MaxAngularCorrection: 8 14 | m_MaxTranslationSpeed: 100 15 | m_MaxRotationSpeed: 360 16 | m_BaumgarteScale: 0.2 17 | m_BaumgarteTimeOfImpactScale: 0.75 18 | m_TimeToSleep: 0.5 19 | m_LinearSleepTolerance: 0.01 20 | m_AngularSleepTolerance: 2 21 | m_DefaultContactOffset: 0.01 22 | m_AutoSimulation: 1 23 | m_QueriesHitTriggers: 1 24 | m_QueriesStartInColliders: 1 25 | m_ChangeStopsCallbacks: 0 26 | m_CallbacksOnDisable: 1 27 | m_ReuseCollisionCallbacks: 1 28 | m_AutoSyncTransforms: 0 29 | m_AlwaysShowColliders: 0 30 | m_ShowColliderSleep: 1 31 | m_ShowColliderContacts: 0 32 | m_ShowColliderAABB: 0 33 | m_ContactArrowScale: 0.2 34 | m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412} 35 | m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432} 36 | m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745} 37 | m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804} 38 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 39 | -------------------------------------------------------------------------------- /TestProject~/2018.4/ProjectSettings/PresetManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1386491679 &1 4 | PresetManager: 5 | m_ObjectHideFlags: 0 6 | m_DefaultList: 7 | - type: 8 | m_NativeTypeID: 108 9 | m_ManagedTypePPtr: {fileID: 0} 10 | m_ManagedTypeFallback: 11 | defaultPresets: 12 | - m_Preset: {fileID: 2655988077585873504, guid: c1cf8506f04ef2c4a88b64b6c4202eea, 13 | type: 2} 14 | - type: 15 | m_NativeTypeID: 1020 16 | m_ManagedTypePPtr: {fileID: 0} 17 | m_ManagedTypeFallback: 18 | defaultPresets: 19 | - m_Preset: {fileID: 2655988077585873504, guid: 0cd792cc87e492d43b4e95b205fc5cc6, 20 | type: 2} 21 | - type: 22 | m_NativeTypeID: 1006 23 | m_ManagedTypePPtr: {fileID: 0} 24 | m_ManagedTypeFallback: 25 | defaultPresets: 26 | - m_Preset: {fileID: 2655988077585873504, guid: 7a99f8aa944efe94cb9bd74562b7d5f9, 27 | type: 2} 28 | -------------------------------------------------------------------------------- /TestProject~/2018.4/ProjectSettings/QualitySettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!47 &1 4 | QualitySettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 5 7 | m_CurrentQuality: 4 8 | m_QualitySettings: 9 | - serializedVersion: 2 10 | name: Very Low 11 | pixelLightCount: 0 12 | shadows: 0 13 | shadowResolution: 0 14 | shadowProjection: 1 15 | shadowCascades: 1 16 | shadowDistance: 15 17 | shadowNearPlaneOffset: 3 18 | shadowCascade2Split: 0.33333334 19 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 20 | shadowmaskMode: 0 21 | blendWeights: 1 22 | textureQuality: 1 23 | anisotropicTextures: 0 24 | antiAliasing: 0 25 | softParticles: 0 26 | softVegetation: 0 27 | realtimeReflectionProbes: 0 28 | billboardsFaceCameraPosition: 0 29 | vSyncCount: 0 30 | lodBias: 0.3 31 | maximumLODLevel: 0 32 | particleRaycastBudget: 4 33 | asyncUploadTimeSlice: 2 34 | asyncUploadBufferSize: 16 35 | resolutionScalingFixedDPIFactor: 1 36 | excludedTargetPlatforms: [] 37 | - serializedVersion: 2 38 | name: Low 39 | pixelLightCount: 0 40 | shadows: 0 41 | shadowResolution: 0 42 | shadowProjection: 1 43 | shadowCascades: 1 44 | shadowDistance: 20 45 | shadowNearPlaneOffset: 3 46 | shadowCascade2Split: 0.33333334 47 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 48 | shadowmaskMode: 0 49 | blendWeights: 2 50 | textureQuality: 0 51 | anisotropicTextures: 0 52 | antiAliasing: 0 53 | softParticles: 0 54 | softVegetation: 0 55 | realtimeReflectionProbes: 0 56 | billboardsFaceCameraPosition: 0 57 | vSyncCount: 0 58 | lodBias: 0.4 59 | maximumLODLevel: 0 60 | particleRaycastBudget: 16 61 | asyncUploadTimeSlice: 2 62 | asyncUploadBufferSize: 16 63 | resolutionScalingFixedDPIFactor: 1 64 | excludedTargetPlatforms: [] 65 | - serializedVersion: 2 66 | name: Medium 67 | pixelLightCount: 1 68 | shadows: 1 69 | shadowResolution: 0 70 | shadowProjection: 1 71 | shadowCascades: 1 72 | shadowDistance: 20 73 | shadowNearPlaneOffset: 3 74 | shadowCascade2Split: 0.33333334 75 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 76 | shadowmaskMode: 0 77 | blendWeights: 2 78 | textureQuality: 0 79 | anisotropicTextures: 1 80 | antiAliasing: 0 81 | softParticles: 0 82 | softVegetation: 0 83 | realtimeReflectionProbes: 0 84 | billboardsFaceCameraPosition: 0 85 | vSyncCount: 1 86 | lodBias: 0.7 87 | maximumLODLevel: 0 88 | particleRaycastBudget: 64 89 | asyncUploadTimeSlice: 2 90 | asyncUploadBufferSize: 16 91 | resolutionScalingFixedDPIFactor: 1 92 | excludedTargetPlatforms: [] 93 | - serializedVersion: 2 94 | name: High 95 | pixelLightCount: 2 96 | shadows: 2 97 | shadowResolution: 1 98 | shadowProjection: 1 99 | shadowCascades: 2 100 | shadowDistance: 40 101 | shadowNearPlaneOffset: 3 102 | shadowCascade2Split: 0.33333334 103 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 104 | shadowmaskMode: 1 105 | blendWeights: 2 106 | textureQuality: 0 107 | anisotropicTextures: 1 108 | antiAliasing: 2 109 | softParticles: 0 110 | softVegetation: 1 111 | realtimeReflectionProbes: 1 112 | billboardsFaceCameraPosition: 1 113 | vSyncCount: 1 114 | lodBias: 1 115 | maximumLODLevel: 0 116 | particleRaycastBudget: 256 117 | asyncUploadTimeSlice: 2 118 | asyncUploadBufferSize: 16 119 | resolutionScalingFixedDPIFactor: 1 120 | excludedTargetPlatforms: [] 121 | - serializedVersion: 2 122 | name: Very High 123 | pixelLightCount: 3 124 | shadows: 2 125 | shadowResolution: 2 126 | shadowProjection: 1 127 | shadowCascades: 2 128 | shadowDistance: 40 129 | shadowNearPlaneOffset: 3 130 | shadowCascade2Split: 0.33333334 131 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 132 | shadowmaskMode: 1 133 | blendWeights: 4 134 | textureQuality: 0 135 | anisotropicTextures: 1 136 | antiAliasing: 4 137 | softParticles: 1 138 | softVegetation: 1 139 | realtimeReflectionProbes: 1 140 | billboardsFaceCameraPosition: 1 141 | vSyncCount: 1 142 | lodBias: 1.5 143 | maximumLODLevel: 0 144 | particleRaycastBudget: 1024 145 | asyncUploadTimeSlice: 2 146 | asyncUploadBufferSize: 16 147 | resolutionScalingFixedDPIFactor: 1 148 | excludedTargetPlatforms: [] 149 | - serializedVersion: 2 150 | name: Ultra 151 | pixelLightCount: 4 152 | shadows: 2 153 | shadowResolution: 2 154 | shadowProjection: 1 155 | shadowCascades: 4 156 | shadowDistance: 150 157 | shadowNearPlaneOffset: 3 158 | shadowCascade2Split: 0.33333334 159 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 160 | shadowmaskMode: 1 161 | blendWeights: 4 162 | textureQuality: 0 163 | anisotropicTextures: 1 164 | antiAliasing: 4 165 | softParticles: 1 166 | softVegetation: 1 167 | realtimeReflectionProbes: 1 168 | billboardsFaceCameraPosition: 1 169 | vSyncCount: 1 170 | lodBias: 2 171 | maximumLODLevel: 0 172 | particleRaycastBudget: 4096 173 | asyncUploadTimeSlice: 2 174 | asyncUploadBufferSize: 16 175 | resolutionScalingFixedDPIFactor: 1 176 | excludedTargetPlatforms: [] 177 | m_PerPlatformDefaultQuality: 178 | Android: 2 179 | Nintendo 3DS: 5 180 | Nintendo Switch: 5 181 | PS4: 5 182 | PSP2: 2 183 | Standalone: 5 184 | Tizen: 2 185 | WebGL: 3 186 | WiiU: 5 187 | Windows Store Apps: 5 188 | XboxOne: 5 189 | iPhone: 2 190 | tvOS: 2 191 | -------------------------------------------------------------------------------- /TestProject~/2018.4/ProjectSettings/TagManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!78 &1 4 | TagManager: 5 | serializedVersion: 2 6 | tags: [] 7 | layers: 8 | - Default 9 | - TransparentFX 10 | - Ignore Raycast 11 | - 12 | - Water 13 | - UI 14 | - 15 | - 16 | - PostProcessing 17 | - 18 | - 19 | - 20 | - 21 | - 22 | - 23 | - 24 | - 25 | - 26 | - 27 | - 28 | - 29 | - 30 | - 31 | - 32 | - 33 | - 34 | - 35 | - 36 | - 37 | - 38 | - 39 | - 40 | m_SortingLayers: 41 | - name: Default 42 | uniqueID: 0 43 | locked: 0 44 | -------------------------------------------------------------------------------- /TestProject~/2018.4/ProjectSettings/TimeManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!5 &1 4 | TimeManager: 5 | m_ObjectHideFlags: 0 6 | Fixed Timestep: 0.02 7 | Maximum Allowed Timestep: 0.1 8 | m_TimeScale: 1 9 | Maximum Particle Timestep: 0.03 10 | -------------------------------------------------------------------------------- /TestProject~/2018.4/ProjectSettings/UnityConnectSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!310 &1 4 | UnityConnectSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 1 7 | m_Enabled: 0 8 | m_TestMode: 0 9 | m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events 10 | m_EventUrl: https://cdp.cloud.unity3d.com/v1/events 11 | m_ConfigUrl: https://config.uca.cloud.unity3d.com 12 | m_TestInitMode: 0 13 | CrashReportingSettings: 14 | m_EventUrl: https://perf-events.cloud.unity3d.com 15 | m_Enabled: 0 16 | m_LogBufferSize: 10 17 | m_CaptureEditorExceptions: 1 18 | UnityPurchasingSettings: 19 | m_Enabled: 0 20 | m_TestMode: 0 21 | UnityAnalyticsSettings: 22 | m_Enabled: 0 23 | m_TestMode: 0 24 | m_InitializeOnStartup: 1 25 | UnityAdsSettings: 26 | m_Enabled: 0 27 | m_InitializeOnStartup: 1 28 | m_TestMode: 0 29 | m_IosGameId: 30 | m_AndroidGameId: 31 | m_GameIds: {} 32 | m_GameId: 33 | PerformanceReportingSettings: 34 | m_Enabled: 0 35 | -------------------------------------------------------------------------------- /TestProject~/2018.4/ProjectSettings/VFXManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!937362698 &1 4 | VFXManager: 5 | m_ObjectHideFlags: 0 6 | m_IndirectShader: {fileID: 0} 7 | m_CopyBufferShader: {fileID: 0} 8 | m_SortShader: {fileID: 0} 9 | m_RenderPipeSettingsPath: 10 | m_FixedTimeStep: 0.016666668 11 | m_MaxDeltaTime: 0.05 12 | -------------------------------------------------------------------------------- /TestProject~/2019.4/Assets/AdditionalTestData.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3e3c73b95d6934f9cbd53a356704b00a 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /TestProject~/2019.4/Assets/AdditionalTestData/SKAdNetworks: -------------------------------------------------------------------------------- 1 | https://skan.mz.unity3d.com/v2/partner/skadnetworks.plist.xml -------------------------------------------------------------------------------- /TestProject~/2019.4/Assets/AdditionalTestData/SKAdNetworks.json: -------------------------------------------------------------------------------- 1 | { 2 | "company_name": "SSP", 3 | "company_address": "SSP, address, country", 4 | "company_domain": "company.com", 5 | "skadnetwork_ids": [ 6 | { 7 | "entity_name": "DSP1", 8 | "entity_domain": "DSP1.com", 9 | "skadnetwork_id": "4FZDC2EVR5.skadnetwork", 10 | "creation_date": "2020-08-21T00:00:00Z" 11 | }, 12 | { 13 | "entity_name": "MMP1", 14 | "entity_domain": "MMP1.com", 15 | "skadnetwork_id": "V72QYCH5UU.skadnetwork", 16 | "creation_date": "2020-08-25T00:00:00Z" 17 | } 18 | ] 19 | } -------------------------------------------------------------------------------- /TestProject~/2019.4/Assets/AdditionalTestData/SKAdNetworks.json.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 914128a40063e4f2181beb781b47ff0e 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /TestProject~/2019.4/Assets/AdditionalTestData/SKAdNetworks.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2041ea72b9c7c4c649cec7bff2357780 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /TestProject~/2019.4/Assets/Info_Test.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleDocumentTypes 8 | 9 | SKAdNetworkItems 10 | 11 | 12 | CFBundleExecutable 13 | $(EXECUTABLE_NAME) 14 | CFBundleIdentifier 15 | $(PRODUCT_BUNDLE_IDENTIFIER) 16 | CFBundleInfoDictionaryVersion 17 | 6.0 18 | CFBundleName 19 | $(PRODUCT_NAME) 20 | CFBundlePackageType 21 | BNDL 22 | CFBundleShortVersionString 23 | 1.0 24 | CFBundleSignature 25 | ???? 26 | CFBundleVersion 27 | 1 28 | NSAppTransportSecurity 29 | 30 | NSAllowsArbitraryLoads 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /TestProject~/2019.4/Assets/Info_Test.plist.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b0c71de36819f42a3a3aae7be340de47 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /TestProject~/2019.4/Assets/SKAdNetworks: -------------------------------------------------------------------------------- 1 | https://skan.mz.unity3d.com/v2/partner/skadnetworks.plist.xml -------------------------------------------------------------------------------- /TestProject~/2019.4/Assets/SKAdNetworks.json: -------------------------------------------------------------------------------- 1 | [{"skadnetwork_id":"4DZT52R2T5.skadnetwork","entityName":"Unity Technologies","createdAt":"2020-08-21T00:00:00Z"},{"skadnetwork_id":"bvpn9ufa9b.skadnetwork","entityName":"Unity Technologies","createdAt":"2020-08-21T00:00:00Z"}] -------------------------------------------------------------------------------- /TestProject~/2019.4/Assets/SKAdNetworks.json.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3bc7e72210d7041b995a98dc2a6042e6 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /TestProject~/2019.4/Assets/SKAdNetworks.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3597e1d22f7e7412fbc28d8eacc447b7 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /TestProject~/2019.4/Assets/SKAdNetworks.xml: -------------------------------------------------------------------------------- 1 | SKAdNetworkIdentifier4DZT52R2T5.skadnetworkSKAdNetworkIdentifier123456.skadnetwork -------------------------------------------------------------------------------- /TestProject~/2019.4/Assets/SKAdNetworks.xml.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d5e81663dfd89406da80812861f2cfcf 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /TestProject~/2019.4/Assets/SKAdNetworks_Bad1: -------------------------------------------------------------------------------- 1 | tps://skan.mz.unity3d.com/v2/partner/skadnetworks.plist.xml -------------------------------------------------------------------------------- /TestProject~/2019.4/Assets/SKAdNetworks_Bad1.json: -------------------------------------------------------------------------------- 1 | [{"skadnetworkid":"4DZT52R2T5.skadnetwork","entityName":"Unity Technologies","createdAt":"2020-08-21T00:00:00Z"},{"skadnetwork_id":"bvpn9ufa9b.skadnetwork","entityName":"Unity Technologies","createdAt":"2020-08-21T00:00:00Z"}] -------------------------------------------------------------------------------- /TestProject~/2019.4/Assets/SKAdNetworks_Bad1.json.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6cd11bd77e0514fbfa600b3bd3fb22e3 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /TestProject~/2019.4/Assets/SKAdNetworks_Bad1.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 44fca188666a742999c3a591c839dc49 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /TestProject~/2019.4/Assets/SKAdNetworks_Bad1.xml: -------------------------------------------------------------------------------- 1 | WrongIdentifier4DZT52R2T5.skadnetworkSKAdNetworkIdentifier123456.skadnetwork -------------------------------------------------------------------------------- /TestProject~/2019.4/Assets/SKAdNetworks_Bad1.xml.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 23c25d42c44fe44758d53a85ea2115a8 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /TestProject~/2019.4/Assets/SKAdNetworks_Bad2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Unity-Technologies/com.unity.ads.ios-support/427fd3bf93924378646e3e81958ded2412cb7c04/TestProject~/2019.4/Assets/SKAdNetworks_Bad2 -------------------------------------------------------------------------------- /TestProject~/2019.4/Assets/SKAdNetworks_Bad2.json: -------------------------------------------------------------------------------- 1 | [{"skadnetworkid":"4DZT52R2T5.skadnetwork"tyName":"Unity Technologies","createdAt":"2020-08-21T00:00:00Z"},{"skadnetwork_id":"bvpn9ufa9b.skadnetwork","entityName":"Unity Technologies","createdAt":"2020-08-21T00:00:00Z"}] -------------------------------------------------------------------------------- /TestProject~/2019.4/Assets/SKAdNetworks_Bad2.json.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2b8af2981e78e4699ae4a2641de2a0a6 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /TestProject~/2019.4/Assets/SKAdNetworks_Bad2.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 83259ecdd87204857b1d760cd73acf8c 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /TestProject~/2019.4/Assets/SKAdNetworks_Bad2.xml: -------------------------------------------------------------------------------- 1 | kIdentifier4DZT52R2T5.skadnetworkSKAdNetworkIdentifier123456.skadnetwork -------------------------------------------------------------------------------- /TestProject~/2019.4/Assets/SKAdNetworks_Bad2.xml.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3e8dc6ae4a0c7495fa7a18d37ee85a22 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /TestProject~/2019.4/Assets/SKAdNetworks_Bad3: -------------------------------------------------------------------------------- 1 | https://skan.mz.unity3d.com/v2/partner/skadnetworks.plist.json -------------------------------------------------------------------------------- /TestProject~/2019.4/Assets/SKAdNetworks_Bad3.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e7d77a902b8cd48b8a48a37d6be2debb 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /TestProject~/2019.4/Assets/Scenes.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4f172a2f0405d8c43aba600e95a01d13 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /TestProject~/2019.4/Assets/Scenes/SampleScene.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9fc0d4010bbf28b4594072e72b8655ab 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /TestProject~/2019.4/Assets/Script.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 96d9b9c97ad7b83409de8014819a792b 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /TestProject~/2019.4/Assets/Script/Main.cs: -------------------------------------------------------------------------------- 1 | using Unity.Advertisement.IosSupport; 2 | using UnityEngine; 3 | public class Main : MonoBehaviour 4 | { 5 | private ATTrackingStatusBinding.AuthorizationTrackingStatus m_PreviousStatus; 6 | private bool m_Once; 7 | 8 | // Start is called before the first frame update 9 | private void Start() 10 | { 11 | var status = ATTrackingStatusBinding.GetAuthorizationTrackingStatus(); 12 | Debug.LogFormat("Tracking status at start: {0}", status); 13 | m_PreviousStatus = status; 14 | 15 | SkAdNetworkBinding.SkAdNetworkUpdateConversionValue(0); 16 | SkAdNetworkBinding.SkAdNetworkRegisterAppForNetworkAttribution(); 17 | } 18 | 19 | // Update is called once per frame 20 | private void Update() 21 | { 22 | if(!m_Once) 23 | { 24 | m_Once = true; 25 | ATTrackingStatusBinding.RequestAuthorizationTracking(AuthorizationTrackingReceived); 26 | } 27 | 28 | var status = ATTrackingStatusBinding.GetAuthorizationTrackingStatus(); 29 | if(m_PreviousStatus != status) 30 | { 31 | m_PreviousStatus = status; 32 | Debug.LogFormat("Tracking status updated: {0}", status); 33 | } 34 | } 35 | 36 | private void AuthorizationTrackingReceived(int status) { 37 | Debug.LogFormat("Tracking status received: {0}", status); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /TestProject~/2019.4/Assets/Script/Main.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1ef5312610a7dba4eb1d923f0aaf9473 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /TestProject~/2019.4/Packages/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "registry": "https://artifactory.prd.cds.internal.unity3d.com/artifactory/api/npm/upm-candidates", 3 | "dependencies": { 4 | "com.unity.ads.ios-support": "file:../../../com.unity.ads.ios-support", 5 | "com.unity.2d.sprite": "1.0.0", 6 | "com.unity.2d.tilemap": "1.0.0", 7 | "com.unity.ads": "3.4.7", 8 | "com.unity.analytics": "3.3.5", 9 | "com.unity.coding" : "0.1.0-preview.13", 10 | "com.unity.collab-proxy": "1.2.16", 11 | "com.unity.ide.rider": "1.1.4", 12 | "com.unity.ide.vscode": "1.2.1", 13 | "com.unity.multiplayer-hlapi": "1.0.6", 14 | "com.unity.purchasing": "2.0.6", 15 | "com.unity.test-framework": "1.1.16", 16 | "com.unity.textmeshpro": "2.0.1", 17 | "com.unity.timeline": "1.2.15", 18 | "com.unity.ugui": "1.0.0", 19 | "com.unity.xr.legacyinputhelpers": "2.1.4", 20 | "com.unity.modules.ai": "1.0.0", 21 | "com.unity.modules.androidjni": "1.0.0", 22 | "com.unity.modules.animation": "1.0.0", 23 | "com.unity.modules.assetbundle": "1.0.0", 24 | "com.unity.modules.audio": "1.0.0", 25 | "com.unity.modules.cloth": "1.0.0", 26 | "com.unity.modules.director": "1.0.0", 27 | "com.unity.modules.imageconversion": "1.0.0", 28 | "com.unity.modules.imgui": "1.0.0", 29 | "com.unity.modules.jsonserialize": "1.0.0", 30 | "com.unity.modules.particlesystem": "1.0.0", 31 | "com.unity.modules.physics": "1.0.0", 32 | "com.unity.modules.physics2d": "1.0.0", 33 | "com.unity.modules.screencapture": "1.0.0", 34 | "com.unity.modules.terrain": "1.0.0", 35 | "com.unity.modules.terrainphysics": "1.0.0", 36 | "com.unity.modules.tilemap": "1.0.0", 37 | "com.unity.modules.ui": "1.0.0", 38 | "com.unity.modules.uielements": "1.0.0", 39 | "com.unity.modules.umbra": "1.0.0", 40 | "com.unity.modules.unityanalytics": "1.0.0", 41 | "com.unity.modules.unitywebrequest": "1.0.0", 42 | "com.unity.modules.unitywebrequestassetbundle": "1.0.0", 43 | "com.unity.modules.unitywebrequestaudio": "1.0.0", 44 | "com.unity.modules.unitywebrequesttexture": "1.0.0", 45 | "com.unity.modules.unitywebrequestwww": "1.0.0", 46 | "com.unity.modules.vehicles": "1.0.0", 47 | "com.unity.modules.video": "1.0.0", 48 | "com.unity.modules.vr": "1.0.0", 49 | "com.unity.modules.wind": "1.0.0", 50 | "com.unity.modules.xr": "1.0.0" 51 | }, 52 | "testables": [ 53 | "com.unity.ads.ios-support" 54 | ] 55 | } 56 | -------------------------------------------------------------------------------- /TestProject~/2019.4/ProjectSettings/AudioManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!11 &1 4 | AudioManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Volume: 1 8 | Rolloff Scale: 1 9 | Doppler Factor: 1 10 | Default Speaker Mode: 2 11 | m_SampleRate: 0 12 | m_DSPBufferSize: 1024 13 | m_VirtualVoiceCount: 512 14 | m_RealVoiceCount: 32 15 | m_SpatializerPlugin: 16 | m_AmbisonicDecoderPlugin: 17 | m_DisableAudio: 0 18 | m_VirtualizeEffects: 1 19 | m_RequestedDSPBufferSize: 1024 20 | -------------------------------------------------------------------------------- /TestProject~/2019.4/ProjectSettings/ClusterInputManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!236 &1 4 | ClusterInputManager: 5 | m_ObjectHideFlags: 0 6 | m_Inputs: [] 7 | -------------------------------------------------------------------------------- /TestProject~/2019.4/ProjectSettings/DynamicsManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!55 &1 4 | PhysicsManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 11 7 | m_Gravity: {x: 0, y: -9.81, z: 0} 8 | m_DefaultMaterial: {fileID: 0} 9 | m_BounceThreshold: 2 10 | m_SleepThreshold: 0.005 11 | m_DefaultContactOffset: 0.01 12 | m_DefaultSolverIterations: 6 13 | m_DefaultSolverVelocityIterations: 1 14 | m_QueriesHitBackfaces: 0 15 | m_QueriesHitTriggers: 1 16 | m_EnableAdaptiveForce: 0 17 | m_ClothInterCollisionDistance: 0 18 | m_ClothInterCollisionStiffness: 0 19 | m_ContactsGeneration: 1 20 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 21 | m_AutoSimulation: 1 22 | m_AutoSyncTransforms: 0 23 | m_ReuseCollisionCallbacks: 1 24 | m_ClothInterCollisionSettingsToggle: 0 25 | m_ContactPairsMode: 0 26 | m_BroadphaseType: 0 27 | m_WorldBounds: 28 | m_Center: {x: 0, y: 0, z: 0} 29 | m_Extent: {x: 250, y: 250, z: 250} 30 | m_WorldSubdivisions: 8 31 | m_FrictionType: 0 32 | m_EnableEnhancedDeterminism: 0 33 | m_EnableUnifiedHeightmaps: 1 34 | m_DefaultMaxAngluarSpeed: 7 35 | -------------------------------------------------------------------------------- /TestProject~/2019.4/ProjectSettings/EditorBuildSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1045 &1 4 | EditorBuildSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Scenes: 8 | - enabled: 1 9 | path: Assets/Scenes/SampleScene.unity 10 | guid: 9fc0d4010bbf28b4594072e72b8655ab 11 | m_configObjects: {} 12 | -------------------------------------------------------------------------------- /TestProject~/2019.4/ProjectSettings/EditorSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!159 &1 4 | EditorSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 9 7 | m_ExternalVersionControlSupport: Visible Meta Files 8 | m_SerializationMode: 2 9 | m_LineEndingsForNewScripts: 0 10 | m_DefaultBehaviorMode: 0 11 | m_PrefabRegularEnvironment: {fileID: 0} 12 | m_PrefabUIEnvironment: {fileID: 0} 13 | m_SpritePackerMode: 0 14 | m_SpritePackerPaddingPower: 1 15 | m_EtcTextureCompressorBehavior: 1 16 | m_EtcTextureFastCompressor: 1 17 | m_EtcTextureNormalCompressor: 2 18 | m_EtcTextureBestCompressor: 4 19 | m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmdef;rsp;asmref 20 | m_ProjectGenerationRootNamespace: 21 | m_CollabEditorSettings: 22 | inProgressEnabled: 1 23 | m_EnableTextureStreamingInEditMode: 1 24 | m_EnableTextureStreamingInPlayMode: 1 25 | m_AsyncShaderCompilation: 1 26 | m_EnterPlayModeOptionsEnabled: 0 27 | m_EnterPlayModeOptions: 3 28 | m_ShowLightmapResolutionOverlay: 1 29 | m_UseLegacyProbeSampleCount: 0 30 | m_AssetPipelineMode: 1 31 | m_CacheServerMode: 0 32 | m_CacheServerEndpoint: 33 | m_CacheServerNamespacePrefix: default 34 | m_CacheServerEnableDownload: 1 35 | m_CacheServerEnableUpload: 1 36 | -------------------------------------------------------------------------------- /TestProject~/2019.4/ProjectSettings/GraphicsSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!30 &1 4 | GraphicsSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 13 7 | m_Deferred: 8 | m_Mode: 1 9 | m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0} 10 | m_DeferredReflections: 11 | m_Mode: 1 12 | m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0} 13 | m_ScreenSpaceShadows: 14 | m_Mode: 1 15 | m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0} 16 | m_LegacyDeferred: 17 | m_Mode: 1 18 | m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0} 19 | m_DepthNormals: 20 | m_Mode: 1 21 | m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0} 22 | m_MotionVectors: 23 | m_Mode: 1 24 | m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0} 25 | m_LightHalo: 26 | m_Mode: 1 27 | m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0} 28 | m_LensFlare: 29 | m_Mode: 1 30 | m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0} 31 | m_AlwaysIncludedShaders: 32 | - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0} 33 | - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0} 34 | - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0} 35 | - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0} 36 | - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0} 37 | - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0} 38 | - {fileID: 16000, guid: 0000000000000000f000000000000000, type: 0} 39 | - {fileID: 16001, guid: 0000000000000000f000000000000000, type: 0} 40 | - {fileID: 17000, guid: 0000000000000000f000000000000000, type: 0} 41 | m_PreloadedShaders: [] 42 | m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, 43 | type: 0} 44 | m_CustomRenderPipeline: {fileID: 0} 45 | m_TransparencySortMode: 0 46 | m_TransparencySortAxis: {x: 0, y: 0, z: 1} 47 | m_DefaultRenderingPath: 1 48 | m_DefaultMobileRenderingPath: 1 49 | m_TierSettings: [] 50 | m_LightmapStripping: 0 51 | m_FogStripping: 0 52 | m_InstancingStripping: 0 53 | m_LightmapKeepPlain: 1 54 | m_LightmapKeepDirCombined: 1 55 | m_LightmapKeepDynamicPlain: 1 56 | m_LightmapKeepDynamicDirCombined: 1 57 | m_LightmapKeepShadowMask: 1 58 | m_LightmapKeepSubtractive: 1 59 | m_FogKeepLinear: 1 60 | m_FogKeepExp: 1 61 | m_FogKeepExp2: 1 62 | m_AlbedoSwatchInfos: [] 63 | m_LightsUseLinearIntensity: 0 64 | m_LightsUseColorTemperature: 0 65 | m_LogWhenShaderIsCompiled: 0 66 | m_AllowEnlightenSupportForUpgradedProject: 0 67 | -------------------------------------------------------------------------------- /TestProject~/2019.4/ProjectSettings/GvhProjectSettings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /TestProject~/2019.4/ProjectSettings/InputManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!13 &1 4 | InputManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Axes: 8 | - serializedVersion: 3 9 | m_Name: Horizontal 10 | descriptiveName: 11 | descriptiveNegativeName: 12 | negativeButton: left 13 | positiveButton: right 14 | altNegativeButton: a 15 | altPositiveButton: d 16 | gravity: 3 17 | dead: 0.001 18 | sensitivity: 3 19 | snap: 1 20 | invert: 0 21 | type: 0 22 | axis: 0 23 | joyNum: 0 24 | - serializedVersion: 3 25 | m_Name: Vertical 26 | descriptiveName: 27 | descriptiveNegativeName: 28 | negativeButton: down 29 | positiveButton: up 30 | altNegativeButton: s 31 | altPositiveButton: w 32 | gravity: 3 33 | dead: 0.001 34 | sensitivity: 3 35 | snap: 1 36 | invert: 0 37 | type: 0 38 | axis: 0 39 | joyNum: 0 40 | - serializedVersion: 3 41 | m_Name: Fire1 42 | descriptiveName: 43 | descriptiveNegativeName: 44 | negativeButton: 45 | positiveButton: left ctrl 46 | altNegativeButton: 47 | altPositiveButton: mouse 0 48 | gravity: 1000 49 | dead: 0.001 50 | sensitivity: 1000 51 | snap: 0 52 | invert: 0 53 | type: 0 54 | axis: 0 55 | joyNum: 0 56 | - serializedVersion: 3 57 | m_Name: Fire2 58 | descriptiveName: 59 | descriptiveNegativeName: 60 | negativeButton: 61 | positiveButton: left alt 62 | altNegativeButton: 63 | altPositiveButton: mouse 1 64 | gravity: 1000 65 | dead: 0.001 66 | sensitivity: 1000 67 | snap: 0 68 | invert: 0 69 | type: 0 70 | axis: 0 71 | joyNum: 0 72 | - serializedVersion: 3 73 | m_Name: Fire3 74 | descriptiveName: 75 | descriptiveNegativeName: 76 | negativeButton: 77 | positiveButton: left shift 78 | altNegativeButton: 79 | altPositiveButton: mouse 2 80 | gravity: 1000 81 | dead: 0.001 82 | sensitivity: 1000 83 | snap: 0 84 | invert: 0 85 | type: 0 86 | axis: 0 87 | joyNum: 0 88 | - serializedVersion: 3 89 | m_Name: Jump 90 | descriptiveName: 91 | descriptiveNegativeName: 92 | negativeButton: 93 | positiveButton: space 94 | altNegativeButton: 95 | altPositiveButton: 96 | gravity: 1000 97 | dead: 0.001 98 | sensitivity: 1000 99 | snap: 0 100 | invert: 0 101 | type: 0 102 | axis: 0 103 | joyNum: 0 104 | - serializedVersion: 3 105 | m_Name: Mouse X 106 | descriptiveName: 107 | descriptiveNegativeName: 108 | negativeButton: 109 | positiveButton: 110 | altNegativeButton: 111 | altPositiveButton: 112 | gravity: 0 113 | dead: 0 114 | sensitivity: 0.1 115 | snap: 0 116 | invert: 0 117 | type: 1 118 | axis: 0 119 | joyNum: 0 120 | - serializedVersion: 3 121 | m_Name: Mouse Y 122 | descriptiveName: 123 | descriptiveNegativeName: 124 | negativeButton: 125 | positiveButton: 126 | altNegativeButton: 127 | altPositiveButton: 128 | gravity: 0 129 | dead: 0 130 | sensitivity: 0.1 131 | snap: 0 132 | invert: 0 133 | type: 1 134 | axis: 1 135 | joyNum: 0 136 | - serializedVersion: 3 137 | m_Name: Mouse ScrollWheel 138 | descriptiveName: 139 | descriptiveNegativeName: 140 | negativeButton: 141 | positiveButton: 142 | altNegativeButton: 143 | altPositiveButton: 144 | gravity: 0 145 | dead: 0 146 | sensitivity: 0.1 147 | snap: 0 148 | invert: 0 149 | type: 1 150 | axis: 2 151 | joyNum: 0 152 | - serializedVersion: 3 153 | m_Name: Horizontal 154 | descriptiveName: 155 | descriptiveNegativeName: 156 | negativeButton: 157 | positiveButton: 158 | altNegativeButton: 159 | altPositiveButton: 160 | gravity: 0 161 | dead: 0.19 162 | sensitivity: 1 163 | snap: 0 164 | invert: 0 165 | type: 2 166 | axis: 0 167 | joyNum: 0 168 | - serializedVersion: 3 169 | m_Name: Vertical 170 | descriptiveName: 171 | descriptiveNegativeName: 172 | negativeButton: 173 | positiveButton: 174 | altNegativeButton: 175 | altPositiveButton: 176 | gravity: 0 177 | dead: 0.19 178 | sensitivity: 1 179 | snap: 0 180 | invert: 1 181 | type: 2 182 | axis: 1 183 | joyNum: 0 184 | - serializedVersion: 3 185 | m_Name: Fire1 186 | descriptiveName: 187 | descriptiveNegativeName: 188 | negativeButton: 189 | positiveButton: joystick button 0 190 | altNegativeButton: 191 | altPositiveButton: 192 | gravity: 1000 193 | dead: 0.001 194 | sensitivity: 1000 195 | snap: 0 196 | invert: 0 197 | type: 0 198 | axis: 0 199 | joyNum: 0 200 | - serializedVersion: 3 201 | m_Name: Fire2 202 | descriptiveName: 203 | descriptiveNegativeName: 204 | negativeButton: 205 | positiveButton: joystick button 1 206 | altNegativeButton: 207 | altPositiveButton: 208 | gravity: 1000 209 | dead: 0.001 210 | sensitivity: 1000 211 | snap: 0 212 | invert: 0 213 | type: 0 214 | axis: 0 215 | joyNum: 0 216 | - serializedVersion: 3 217 | m_Name: Fire3 218 | descriptiveName: 219 | descriptiveNegativeName: 220 | negativeButton: 221 | positiveButton: joystick button 2 222 | altNegativeButton: 223 | altPositiveButton: 224 | gravity: 1000 225 | dead: 0.001 226 | sensitivity: 1000 227 | snap: 0 228 | invert: 0 229 | type: 0 230 | axis: 0 231 | joyNum: 0 232 | - serializedVersion: 3 233 | m_Name: Jump 234 | descriptiveName: 235 | descriptiveNegativeName: 236 | negativeButton: 237 | positiveButton: joystick button 3 238 | altNegativeButton: 239 | altPositiveButton: 240 | gravity: 1000 241 | dead: 0.001 242 | sensitivity: 1000 243 | snap: 0 244 | invert: 0 245 | type: 0 246 | axis: 0 247 | joyNum: 0 248 | - serializedVersion: 3 249 | m_Name: Submit 250 | descriptiveName: 251 | descriptiveNegativeName: 252 | negativeButton: 253 | positiveButton: return 254 | altNegativeButton: 255 | altPositiveButton: joystick button 0 256 | gravity: 1000 257 | dead: 0.001 258 | sensitivity: 1000 259 | snap: 0 260 | invert: 0 261 | type: 0 262 | axis: 0 263 | joyNum: 0 264 | - serializedVersion: 3 265 | m_Name: Submit 266 | descriptiveName: 267 | descriptiveNegativeName: 268 | negativeButton: 269 | positiveButton: enter 270 | altNegativeButton: 271 | altPositiveButton: space 272 | gravity: 1000 273 | dead: 0.001 274 | sensitivity: 1000 275 | snap: 0 276 | invert: 0 277 | type: 0 278 | axis: 0 279 | joyNum: 0 280 | - serializedVersion: 3 281 | m_Name: Cancel 282 | descriptiveName: 283 | descriptiveNegativeName: 284 | negativeButton: 285 | positiveButton: escape 286 | altNegativeButton: 287 | altPositiveButton: joystick button 1 288 | gravity: 1000 289 | dead: 0.001 290 | sensitivity: 1000 291 | snap: 0 292 | invert: 0 293 | type: 0 294 | axis: 0 295 | joyNum: 0 296 | -------------------------------------------------------------------------------- /TestProject~/2019.4/ProjectSettings/NavMeshAreas.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!126 &1 4 | NavMeshProjectSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | areas: 8 | - name: Walkable 9 | cost: 1 10 | - name: Not Walkable 11 | cost: 1 12 | - name: Jump 13 | cost: 2 14 | - name: 15 | cost: 1 16 | - name: 17 | cost: 1 18 | - name: 19 | cost: 1 20 | - name: 21 | cost: 1 22 | - name: 23 | cost: 1 24 | - name: 25 | cost: 1 26 | - name: 27 | cost: 1 28 | - name: 29 | cost: 1 30 | - name: 31 | cost: 1 32 | - name: 33 | cost: 1 34 | - name: 35 | cost: 1 36 | - name: 37 | cost: 1 38 | - name: 39 | cost: 1 40 | - name: 41 | cost: 1 42 | - name: 43 | cost: 1 44 | - name: 45 | cost: 1 46 | - name: 47 | cost: 1 48 | - name: 49 | cost: 1 50 | - name: 51 | cost: 1 52 | - name: 53 | cost: 1 54 | - name: 55 | cost: 1 56 | - name: 57 | cost: 1 58 | - name: 59 | cost: 1 60 | - name: 61 | cost: 1 62 | - name: 63 | cost: 1 64 | - name: 65 | cost: 1 66 | - name: 67 | cost: 1 68 | - name: 69 | cost: 1 70 | - name: 71 | cost: 1 72 | m_LastAgentTypeID: -887442657 73 | m_Settings: 74 | - serializedVersion: 2 75 | agentTypeID: 0 76 | agentRadius: 0.5 77 | agentHeight: 2 78 | agentSlope: 45 79 | agentClimb: 0.75 80 | ledgeDropHeight: 0 81 | maxJumpAcrossDistance: 0 82 | minRegionArea: 2 83 | manualCellSize: 0 84 | cellSize: 0.16666667 85 | manualTileSize: 0 86 | tileSize: 256 87 | accuratePlacement: 0 88 | debug: 89 | m_Flags: 0 90 | m_SettingNames: 91 | - Humanoid 92 | -------------------------------------------------------------------------------- /TestProject~/2019.4/ProjectSettings/Physics2DSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!19 &1 4 | Physics2DSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 4 7 | m_Gravity: {x: 0, y: -9.81} 8 | m_DefaultMaterial: {fileID: 0} 9 | m_VelocityIterations: 8 10 | m_PositionIterations: 3 11 | m_VelocityThreshold: 1 12 | m_MaxLinearCorrection: 0.2 13 | m_MaxAngularCorrection: 8 14 | m_MaxTranslationSpeed: 100 15 | m_MaxRotationSpeed: 360 16 | m_BaumgarteScale: 0.2 17 | m_BaumgarteTimeOfImpactScale: 0.75 18 | m_TimeToSleep: 0.5 19 | m_LinearSleepTolerance: 0.01 20 | m_AngularSleepTolerance: 2 21 | m_DefaultContactOffset: 0.01 22 | m_JobOptions: 23 | serializedVersion: 2 24 | useMultithreading: 0 25 | useConsistencySorting: 0 26 | m_InterpolationPosesPerJob: 100 27 | m_NewContactsPerJob: 30 28 | m_CollideContactsPerJob: 100 29 | m_ClearFlagsPerJob: 200 30 | m_ClearBodyForcesPerJob: 200 31 | m_SyncDiscreteFixturesPerJob: 50 32 | m_SyncContinuousFixturesPerJob: 50 33 | m_FindNearestContactsPerJob: 100 34 | m_UpdateTriggerContactsPerJob: 100 35 | m_IslandSolverCostThreshold: 100 36 | m_IslandSolverBodyCostScale: 1 37 | m_IslandSolverContactCostScale: 10 38 | m_IslandSolverJointCostScale: 10 39 | m_IslandSolverBodiesPerJob: 50 40 | m_IslandSolverContactsPerJob: 50 41 | m_AutoSimulation: 1 42 | m_QueriesHitTriggers: 1 43 | m_QueriesStartInColliders: 1 44 | m_CallbacksOnDisable: 1 45 | m_ReuseCollisionCallbacks: 1 46 | m_AutoSyncTransforms: 0 47 | m_AlwaysShowColliders: 0 48 | m_ShowColliderSleep: 1 49 | m_ShowColliderContacts: 0 50 | m_ShowColliderAABB: 0 51 | m_ContactArrowScale: 0.2 52 | m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412} 53 | m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432} 54 | m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745} 55 | m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804} 56 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 57 | -------------------------------------------------------------------------------- /TestProject~/2019.4/ProjectSettings/PresetManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1386491679 &1 4 | PresetManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_DefaultPresets: {} 8 | -------------------------------------------------------------------------------- /TestProject~/2019.4/ProjectSettings/QualitySettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!47 &1 4 | QualitySettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 5 7 | m_CurrentQuality: 5 8 | m_QualitySettings: 9 | - serializedVersion: 2 10 | name: Very Low 11 | pixelLightCount: 0 12 | shadows: 0 13 | shadowResolution: 0 14 | shadowProjection: 1 15 | shadowCascades: 1 16 | shadowDistance: 15 17 | shadowNearPlaneOffset: 3 18 | shadowCascade2Split: 0.33333334 19 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 20 | shadowmaskMode: 0 21 | blendWeights: 1 22 | textureQuality: 1 23 | anisotropicTextures: 0 24 | antiAliasing: 0 25 | softParticles: 0 26 | softVegetation: 0 27 | realtimeReflectionProbes: 0 28 | billboardsFaceCameraPosition: 0 29 | vSyncCount: 0 30 | lodBias: 0.3 31 | maximumLODLevel: 0 32 | streamingMipmapsActive: 0 33 | streamingMipmapsAddAllCameras: 1 34 | streamingMipmapsMemoryBudget: 512 35 | streamingMipmapsRenderersPerFrame: 512 36 | streamingMipmapsMaxLevelReduction: 2 37 | streamingMipmapsMaxFileIORequests: 1024 38 | particleRaycastBudget: 4 39 | asyncUploadTimeSlice: 2 40 | asyncUploadBufferSize: 16 41 | asyncUploadPersistentBuffer: 1 42 | resolutionScalingFixedDPIFactor: 1 43 | excludedTargetPlatforms: [] 44 | - serializedVersion: 2 45 | name: Low 46 | pixelLightCount: 0 47 | shadows: 0 48 | shadowResolution: 0 49 | shadowProjection: 1 50 | shadowCascades: 1 51 | shadowDistance: 20 52 | shadowNearPlaneOffset: 3 53 | shadowCascade2Split: 0.33333334 54 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 55 | shadowmaskMode: 0 56 | blendWeights: 2 57 | textureQuality: 0 58 | anisotropicTextures: 0 59 | antiAliasing: 0 60 | softParticles: 0 61 | softVegetation: 0 62 | realtimeReflectionProbes: 0 63 | billboardsFaceCameraPosition: 0 64 | vSyncCount: 0 65 | lodBias: 0.4 66 | maximumLODLevel: 0 67 | streamingMipmapsActive: 0 68 | streamingMipmapsAddAllCameras: 1 69 | streamingMipmapsMemoryBudget: 512 70 | streamingMipmapsRenderersPerFrame: 512 71 | streamingMipmapsMaxLevelReduction: 2 72 | streamingMipmapsMaxFileIORequests: 1024 73 | particleRaycastBudget: 16 74 | asyncUploadTimeSlice: 2 75 | asyncUploadBufferSize: 16 76 | asyncUploadPersistentBuffer: 1 77 | resolutionScalingFixedDPIFactor: 1 78 | excludedTargetPlatforms: [] 79 | - serializedVersion: 2 80 | name: Medium 81 | pixelLightCount: 1 82 | shadows: 1 83 | shadowResolution: 0 84 | shadowProjection: 1 85 | shadowCascades: 1 86 | shadowDistance: 20 87 | shadowNearPlaneOffset: 3 88 | shadowCascade2Split: 0.33333334 89 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 90 | shadowmaskMode: 0 91 | blendWeights: 2 92 | textureQuality: 0 93 | anisotropicTextures: 1 94 | antiAliasing: 0 95 | softParticles: 0 96 | softVegetation: 0 97 | realtimeReflectionProbes: 0 98 | billboardsFaceCameraPosition: 0 99 | vSyncCount: 1 100 | lodBias: 0.7 101 | maximumLODLevel: 0 102 | streamingMipmapsActive: 0 103 | streamingMipmapsAddAllCameras: 1 104 | streamingMipmapsMemoryBudget: 512 105 | streamingMipmapsRenderersPerFrame: 512 106 | streamingMipmapsMaxLevelReduction: 2 107 | streamingMipmapsMaxFileIORequests: 1024 108 | particleRaycastBudget: 64 109 | asyncUploadTimeSlice: 2 110 | asyncUploadBufferSize: 16 111 | asyncUploadPersistentBuffer: 1 112 | resolutionScalingFixedDPIFactor: 1 113 | excludedTargetPlatforms: [] 114 | - serializedVersion: 2 115 | name: High 116 | pixelLightCount: 2 117 | shadows: 2 118 | shadowResolution: 1 119 | shadowProjection: 1 120 | shadowCascades: 2 121 | shadowDistance: 40 122 | shadowNearPlaneOffset: 3 123 | shadowCascade2Split: 0.33333334 124 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 125 | shadowmaskMode: 1 126 | blendWeights: 2 127 | textureQuality: 0 128 | anisotropicTextures: 1 129 | antiAliasing: 0 130 | softParticles: 0 131 | softVegetation: 1 132 | realtimeReflectionProbes: 1 133 | billboardsFaceCameraPosition: 1 134 | vSyncCount: 1 135 | lodBias: 1 136 | maximumLODLevel: 0 137 | streamingMipmapsActive: 0 138 | streamingMipmapsAddAllCameras: 1 139 | streamingMipmapsMemoryBudget: 512 140 | streamingMipmapsRenderersPerFrame: 512 141 | streamingMipmapsMaxLevelReduction: 2 142 | streamingMipmapsMaxFileIORequests: 1024 143 | particleRaycastBudget: 256 144 | asyncUploadTimeSlice: 2 145 | asyncUploadBufferSize: 16 146 | asyncUploadPersistentBuffer: 1 147 | resolutionScalingFixedDPIFactor: 1 148 | excludedTargetPlatforms: [] 149 | - serializedVersion: 2 150 | name: Very High 151 | pixelLightCount: 3 152 | shadows: 2 153 | shadowResolution: 2 154 | shadowProjection: 1 155 | shadowCascades: 2 156 | shadowDistance: 70 157 | shadowNearPlaneOffset: 3 158 | shadowCascade2Split: 0.33333334 159 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 160 | shadowmaskMode: 1 161 | blendWeights: 4 162 | textureQuality: 0 163 | anisotropicTextures: 2 164 | antiAliasing: 2 165 | softParticles: 1 166 | softVegetation: 1 167 | realtimeReflectionProbes: 1 168 | billboardsFaceCameraPosition: 1 169 | vSyncCount: 1 170 | lodBias: 1.5 171 | maximumLODLevel: 0 172 | streamingMipmapsActive: 0 173 | streamingMipmapsAddAllCameras: 1 174 | streamingMipmapsMemoryBudget: 512 175 | streamingMipmapsRenderersPerFrame: 512 176 | streamingMipmapsMaxLevelReduction: 2 177 | streamingMipmapsMaxFileIORequests: 1024 178 | particleRaycastBudget: 1024 179 | asyncUploadTimeSlice: 2 180 | asyncUploadBufferSize: 16 181 | asyncUploadPersistentBuffer: 1 182 | resolutionScalingFixedDPIFactor: 1 183 | excludedTargetPlatforms: [] 184 | - serializedVersion: 2 185 | name: Ultra 186 | pixelLightCount: 4 187 | shadows: 2 188 | shadowResolution: 2 189 | shadowProjection: 1 190 | shadowCascades: 4 191 | shadowDistance: 150 192 | shadowNearPlaneOffset: 3 193 | shadowCascade2Split: 0.33333334 194 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 195 | shadowmaskMode: 1 196 | blendWeights: 4 197 | textureQuality: 0 198 | anisotropicTextures: 2 199 | antiAliasing: 2 200 | softParticles: 1 201 | softVegetation: 1 202 | realtimeReflectionProbes: 1 203 | billboardsFaceCameraPosition: 1 204 | vSyncCount: 1 205 | lodBias: 2 206 | maximumLODLevel: 0 207 | streamingMipmapsActive: 0 208 | streamingMipmapsAddAllCameras: 1 209 | streamingMipmapsMemoryBudget: 512 210 | streamingMipmapsRenderersPerFrame: 512 211 | streamingMipmapsMaxLevelReduction: 2 212 | streamingMipmapsMaxFileIORequests: 1024 213 | particleRaycastBudget: 4096 214 | asyncUploadTimeSlice: 2 215 | asyncUploadBufferSize: 16 216 | asyncUploadPersistentBuffer: 1 217 | resolutionScalingFixedDPIFactor: 1 218 | excludedTargetPlatforms: [] 219 | m_PerPlatformDefaultQuality: 220 | Android: 2 221 | Lumin: 5 222 | Nintendo 3DS: 5 223 | Nintendo Switch: 5 224 | PS4: 5 225 | PSP2: 2 226 | Stadia: 5 227 | Standalone: 5 228 | WebGL: 3 229 | Windows Store Apps: 5 230 | XboxOne: 5 231 | iPhone: 2 232 | tvOS: 2 233 | -------------------------------------------------------------------------------- /TestProject~/2019.4/ProjectSettings/TagManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!78 &1 4 | TagManager: 5 | serializedVersion: 2 6 | tags: [] 7 | layers: 8 | - Default 9 | - TransparentFX 10 | - Ignore Raycast 11 | - 12 | - Water 13 | - UI 14 | - 15 | - 16 | - 17 | - 18 | - 19 | - 20 | - 21 | - 22 | - 23 | - 24 | - 25 | - 26 | - 27 | - 28 | - 29 | - 30 | - 31 | - 32 | - 33 | - 34 | - 35 | - 36 | - 37 | - 38 | - 39 | - 40 | m_SortingLayers: 41 | - name: Default 42 | uniqueID: 0 43 | locked: 0 44 | -------------------------------------------------------------------------------- /TestProject~/2019.4/ProjectSettings/TimeManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!5 &1 4 | TimeManager: 5 | m_ObjectHideFlags: 0 6 | Fixed Timestep: 0.02 7 | Maximum Allowed Timestep: 0.33333334 8 | m_TimeScale: 1 9 | Maximum Particle Timestep: 0.03 10 | -------------------------------------------------------------------------------- /TestProject~/2019.4/ProjectSettings/UnityConnectSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!310 &1 4 | UnityConnectSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 1 7 | m_Enabled: 0 8 | m_TestMode: 0 9 | m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events 10 | m_EventUrl: https://cdp.cloud.unity3d.com/v1/events 11 | m_ConfigUrl: https://config.uca.cloud.unity3d.com 12 | m_TestInitMode: 0 13 | CrashReportingSettings: 14 | m_EventUrl: https://perf-events.cloud.unity3d.com 15 | m_Enabled: 0 16 | m_LogBufferSize: 10 17 | m_CaptureEditorExceptions: 1 18 | UnityPurchasingSettings: 19 | m_Enabled: 0 20 | m_TestMode: 0 21 | UnityAnalyticsSettings: 22 | m_Enabled: 0 23 | m_TestMode: 0 24 | m_InitializeOnStartup: 1 25 | UnityAdsSettings: 26 | m_Enabled: 0 27 | m_InitializeOnStartup: 1 28 | m_TestMode: 0 29 | m_IosGameId: 30 | m_AndroidGameId: 31 | m_GameIds: {} 32 | m_GameId: 33 | PerformanceReportingSettings: 34 | m_Enabled: 0 35 | -------------------------------------------------------------------------------- /TestProject~/2019.4/ProjectSettings/VFXManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!937362698 &1 4 | VFXManager: 5 | m_ObjectHideFlags: 0 6 | m_IndirectShader: {fileID: 0} 7 | m_CopyBufferShader: {fileID: 0} 8 | m_SortShader: {fileID: 0} 9 | m_StripUpdateShader: {fileID: 0} 10 | m_RenderPipeSettingsPath: 11 | m_FixedTimeStep: 0.016666668 12 | m_MaxDeltaTime: 0.05 13 | -------------------------------------------------------------------------------- /TestProject~/2019.4/ProjectSettings/XRSettings.asset: -------------------------------------------------------------------------------- 1 | { 2 | "m_SettingKeys": [ 3 | "VR Device Disabled", 4 | "VR Device User Alert" 5 | ], 6 | "m_SettingValues": [ 7 | "False", 8 | "False" 9 | ] 10 | } -------------------------------------------------------------------------------- /com.unity.ads.ios-support/.gitignore: -------------------------------------------------------------------------------- 1 | artifacts/** 2 | build/** 3 | .build_script/** 4 | node_modules/** 5 | .DS_Store 6 | .npmrc 7 | !Documentation~ 8 | !.Documentation 9 | npm-debug.log 10 | build.sh.meta 11 | build.bat.meta 12 | .idea/ 13 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/.npmignore: -------------------------------------------------------------------------------- 1 | artifacts/** 2 | build/** 3 | .build_script/** 4 | node_modules/** 5 | Documentation/ApiDocs/** 6 | Documentation~/ApiDocs/** 7 | .DS_Store 8 | .npmrc 9 | .npmignore 10 | .gitignore 11 | CONTRIBUTING.md 12 | CONTRIBUTING.md.meta 13 | QAReport.md 14 | QAReport.md.meta 15 | .gitlab-ci.yml 16 | build.sh 17 | build.sh.meta 18 | build.bat 19 | build.bat.meta 20 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | All notable changes to this package will be documented in this file. 4 | 5 | The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) 6 | and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). 7 | 8 | ## [1.2.0] - 2021-09-21 9 | Do not show Context Screen for iOS versions below 14.5 10 | Use NSInvocation instead of performSelector for SkAdNetwork methods 11 | Expose RequestTrackingAuthorization callback 12 | 13 | ## [1.0.0] - 2021-04-22 14 | First Stable Release 15 | Updates to the Context Screen sample and the README 16 | 17 | ## [0.2.0-preview.3] - 2021-04-19 18 | Added Context Screen Sample 19 | 20 | ## [0.1.0-preview.3] - 2021-04-12 21 | Fixed a typo in updateConversionValue 22 | 23 | ## [0.1.0-preview.2] - 2020-12-04 24 | Fix an issue that caused a warning on some metafiles in Unity 2018.4 25 | 26 | ## [0.1.0-preview.1] - 2020-12-04 27 | 28 | ### This is the first release of com.unity.ads.ios-support package 29 | Add Support for SKADID Spec (Postbuild process automatically adding SKAdNetwork Ids to Info.plsit) 30 | Add Support for App Tracking Transparency API's (introduced in ios14) 31 | Add Support for SKAdNetwork API's (introduced in ios14) 32 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/CHANGELOG.md.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2dc7a87feb07749a9855db38a51426d3 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Documentation~/index.md: -------------------------------------------------------------------------------- 1 | # Using this package 2 | 3 | This package supports Apple's SKAdNetwork and AppTrackingTransparency frameworks for your made-with-Unity iOS application, by aggregating proper ad network IDs and providing access to relevant Apple developer APIs. 4 | 5 | For more information about iOS 14 technical integration, including this package's support functionality, please see the full [iOS 14 technical documentation](https://unityads.unity3d.com/help/monetization/ios14). 6 | 7 | ## Installing the package 8 | 9 | ### From the public Github repository 10 | 11 | 1. Go to the [public repo page on Github](https://github.com/Unity-Technologies/com.unity.ads.ios-support). 12 | 1. Download that repo to your hard drive. 13 | 2. In the Unity Editor, open the [Unity Package Manager](https://docs.unity3d.com/Manual/Packages.html) window. 14 | 3. Click the **+** button and select **Add package from disk...**. 15 | 4. Navigate to the location where you downloaded the repo and select the iOS14 Support package (_..\com.unity.ads.ios-support-master\com.unity.ads.ios-support\package.json_) to install the package. If successful, the iOS14 Support package will appear in the package manager list (note that you must have **All packages** selected to view it). 16 | 17 | ### From Unity Package Manager 18 | 19 | 1. In the Unity Editor, select **Window** > **Package** Manager to open the Package Manager. 20 | 2. Select the **Advertisement** package from the list, then select the most recent verified version. 21 | 3. Click the **Install** or **Update** button. 22 | 23 | ## Apple developer API extensions 24 | 25 | This package provides access to the following Apple developer APIs: 26 | 27 | ``` 28 | public static void SkAdNetworkUpdateConversionValue(int conversionValue) 29 | ``` 30 | This method allows you to [update the attribution conversion value](https://developer.apple.com/documentation/storekit/skadnetwork/3566697-updateconversionvalue?language=objc). 31 | 32 | ``` 33 | SkAdNetworkRegisterAppForNetworkAttribution() 34 | ``` 35 | This method allows you to [register for attribution](https://developer.apple.com/documentation/storekit/skadnetwork/2943654-registerappforadnetworkattributi?language=objc). 36 | 37 | ``` 38 | public static void RequestAuthorizationTracking() 39 | ``` 40 | This method allows you to [request the user permission dialogue](https://developer.apple.com/documentation/apptrackingtransparency/attrackingmanager/3547037-requesttrackingauthorization). 41 | 42 | ``` 43 | public static AuthorizationTrackingStatus GetAuthorizationTrackingStatus() 44 | ``` 45 | This method allows you to check the app tracking transparency (ATT) [authorization status](https://developer.apple.com/documentation/apptrackingtransparency/attrackingmanager/3547038-trackingauthorizationstatus). 46 | 47 | ## Sample Project 48 | 49 | You can import a Context Screen sample scene and assets from the Package Manager screen for this package (Unity 2019.1 and newer). 50 | 51 | The SampleProject~ folder included in the Github public repo is a complete Unity project, compatible with Unity 2018.4.33f1 and up. 52 | 53 | This sample provides a fully customizable example of a context screen you could use to give context to users before showing the native App Tracking Transparency dialog. 54 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Editor.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8fbdef3bbd2c4402f9fb8749b4be0cbc 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Editor/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright 2020 3 | // 4 | // Licensed under the Apache License, Version 2.0 (the "License"); 5 | // you may not use this file except in compliance with the License. 6 | // You may obtain a copy of the License at 7 | // 8 | // http://www.apache.org/licenses/LICENSE-2.0 9 | // 10 | // Unless required by applicable law or agreed to in writing, software 11 | // distributed under the License is distributed on an "AS IS" BASIS, 12 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | // See the License for the specific language governing permissions and 14 | // limitations under the License. 15 | using System.Reflection; 16 | using System.Runtime.CompilerServices; 17 | 18 | // Information about this assembly is defined by the following attributes. 19 | // Change them to the values specific to your project. 20 | 21 | [assembly: AssemblyTitle("Unity.Advertisement.IosSupport.Editor")] 22 | [assembly: AssemblyDescription("")] 23 | [assembly: AssemblyConfiguration("")] 24 | [assembly: AssemblyCompany("Unity Technologies")] 25 | [assembly: AssemblyProduct("Monetization")] 26 | [assembly: AssemblyCopyright("Copyright © Unity Technologies 2020")] 27 | [assembly: AssemblyTrademark("")] 28 | [assembly: AssemblyCulture("")] 29 | 30 | // The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". 31 | // The form "{Major}.{Minor}.*" will automatically update the build and revision, 32 | // and "{Major}.{Minor}.{Build}.*" will update just the revision. 33 | 34 | [assembly: AssemblyVersion("0.1.0")] 35 | 36 | [assembly: InternalsVisibleTo("Unity.Advertisement.IosSupport.Editor.Tests")] 37 | [assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")] 38 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Editor/AssemblyInfo.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fe609725aa1304d10bd0232f8a727830 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Editor/Parser.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7c12ab5a1ea52495bbfe2f28879f608e 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Editor/Parser/ISkAdNetworkParser.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using UnityEngine; 3 | 4 | namespace Unity.Advertisement.IosSupport.Editor 5 | { 6 | internal interface ISkAdNetworkParser 7 | { 8 | string GetExtension(); 9 | HashSet ParseSource(ISkAdNetworkSource source); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Editor/Parser/ISkAdNetworkParser.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 97e0c61e3aa704af086868b25f08f85a 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Editor/Parser/SkAdNetworkFileExtension.cs: -------------------------------------------------------------------------------- 1 | namespace Unity.Advertisement.IosSupport.Editor 2 | { 3 | public static class SkAdNetworkFileExtension 4 | { 5 | public const string XML = "xml"; 6 | public const string JSON = "json"; 7 | public const string NONE = ""; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Editor/Parser/SkAdNetworkFileExtension.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e496c38bf001040ecbe70e444a0542fb 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Editor/Parser/SkAdNetworkJsonParser.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.IO; 4 | using System.Linq; 5 | using UnityEngine; 6 | 7 | namespace Unity.Advertisement.IosSupport.Editor 8 | { 9 | internal class SkAdNetworkJsonParser : ISkAdNetworkParser 10 | { 11 | [Serializable] 12 | public class SkAdNetworkIdArray 13 | { 14 | public List skadnetwork_ids; 15 | } 16 | 17 | [Serializable] 18 | public class SkAdNetworkInfo 19 | { 20 | public string skadnetwork_id; 21 | } 22 | 23 | public string GetExtension() 24 | { 25 | return SkAdNetworkFileExtension.JSON; 26 | } 27 | 28 | public HashSet ParseSource(ISkAdNetworkSource source) 29 | { 30 | var foundIds = new HashSet(); 31 | try 32 | { 33 | string jsonData; 34 | using (var stream = source.Open()) 35 | { 36 | if (stream == null) 37 | { 38 | Debug.LogWarning($"[Unity SKAdNetwork Parser] Unable to parse SKAdNetwork file: {source.Path}"); 39 | return foundIds; 40 | } 41 | 42 | jsonData = new StreamReader(stream).ReadToEnd(); 43 | } 44 | 45 | SkAdNetworkIdArray skAdNetworkCompanyInfo = null; 46 | try 47 | { 48 | skAdNetworkCompanyInfo = JsonUtility.FromJson(jsonData); 49 | } 50 | catch (Exception) {} 51 | 52 | //Fallback to try and see if this is a JSONObject which contains an array element called skadnetwork_ids instead of the expected JSONArray 53 | if (skAdNetworkCompanyInfo?.skadnetwork_ids == null || skAdNetworkCompanyInfo.skadnetwork_ids.Count == 0) 54 | { 55 | var updatedJson = "{\"skadnetwork_ids\":" + jsonData + "}"; 56 | skAdNetworkCompanyInfo = JsonUtility.FromJson(updatedJson); 57 | } 58 | 59 | if (skAdNetworkCompanyInfo?.skadnetwork_ids == null) 60 | { 61 | Debug.LogWarning($"[Unity SKAdNetwork Parser] Unable to parse SKAdNetwork file: {source.Path}"); 62 | return foundIds; 63 | } 64 | 65 | foundIds.UnionWith(skAdNetworkCompanyInfo.skadnetwork_ids.Select(t => t.skadnetwork_id).Where(t => t != null)); 66 | } 67 | catch (Exception) 68 | { 69 | Debug.LogWarning($"[Unity SKAdNetwork Parser] Unable to parse SKAdNetwork file: {source.Path}"); 70 | } 71 | 72 | return foundIds; 73 | } 74 | } 75 | } 76 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Editor/Parser/SkAdNetworkJsonParser.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9840479aaa6504c9ea96572abd23249c 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Editor/Parser/SkAdNetworkParser.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | 4 | namespace Unity.Advertisement.IosSupport.Editor 5 | { 6 | internal static class SkAdNetworkParser 7 | { 8 | private static Dictionary s_Parsers; 9 | 10 | static SkAdNetworkParser() 11 | { 12 | s_Parsers = new Dictionary 13 | { 14 | { SkAdNetworkFileExtension.XML, new SkAdNetworkXmlParser() }, 15 | { SkAdNetworkFileExtension.JSON, new SkAdNetworkJsonParser() }, 16 | { SkAdNetworkFileExtension.NONE, new SkAdNetworkUrlParser() } 17 | }; 18 | } 19 | 20 | public static ISkAdNetworkParser GetParser(string parserType) 21 | { 22 | try 23 | { 24 | s_Parsers.TryGetValue(parserType, out var parser); 25 | return parser; 26 | } 27 | catch (Exception) {} 28 | return null; 29 | } 30 | 31 | public static IEnumerable GetAllParsers() 32 | { 33 | return s_Parsers.Values; 34 | } 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Editor/Parser/SkAdNetworkParser.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f70ff3726241b4d2b8d0ea012c80e706 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Editor/Parser/SkAdNetworkUrlParser.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.IO; 4 | using System.Linq; 5 | using UnityEngine; 6 | 7 | namespace Unity.Advertisement.IosSupport.Editor 8 | { 9 | internal class SkAdNetworkUrlParser : ISkAdNetworkParser 10 | { 11 | public string GetExtension() 12 | { 13 | return SkAdNetworkFileExtension.NONE; 14 | } 15 | 16 | public HashSet ParseSource(ISkAdNetworkSource source) 17 | { 18 | var foundIds = new HashSet(); 19 | 20 | try 21 | { 22 | string[] lines; 23 | using (var reader = new StreamReader(source.Open())) 24 | { 25 | lines = reader.ReadToEnd().Split(Environment.NewLine.ToCharArray()); 26 | } 27 | 28 | lines.Where(url => !string.IsNullOrEmpty(url)) 29 | .Where(url => Uri.IsWellFormedUriString(url, UriKind.Absolute)) 30 | .ToList().ForEach(url => { 31 | ISkAdNetworkParser parser = null; 32 | switch (GetExtensionFromPath(url)) 33 | { 34 | case SkAdNetworkFileExtension.XML: 35 | parser = SkAdNetworkParser.GetParser(SkAdNetworkFileExtension.XML); 36 | break; 37 | case SkAdNetworkFileExtension.JSON: 38 | parser = SkAdNetworkParser.GetParser(SkAdNetworkFileExtension.JSON); 39 | break; 40 | } 41 | 42 | if (parser == null) 43 | { 44 | Debug.LogWarning($"[Unity SKAdNetwork Parser] Unsupported file extension, No parser available to parse SKAdNetwork file: {source.Path} "); 45 | return; 46 | } 47 | 48 | foundIds.UnionWith(parser.ParseSource(new SkAdNetworkRemoteSource(url))); 49 | }); 50 | } 51 | catch (Exception) 52 | { 53 | Debug.LogWarning($"[Unity SKAdNetwork Parser] Unable to parse SKAdNetwork file: {source.Path}"); 54 | } 55 | 56 | return foundIds; 57 | } 58 | 59 | /// 60 | /// Gets the extension for a filepath string 61 | /// 62 | private static string GetExtensionFromPath(string filepath) 63 | { 64 | var extension = Path.GetExtension(filepath); 65 | return string.IsNullOrEmpty(extension) ? "" : extension.Substring(1).ToLower(); 66 | } 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Editor/Parser/SkAdNetworkUrlParser.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 95e1f9f2b229246a08a2354f8c702ae9 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Editor/Parser/SkAdNetworkXmlParser.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Xml; 4 | using UnityEngine; 5 | 6 | namespace Unity.Advertisement.IosSupport.Editor 7 | { 8 | internal class SkAdNetworkXmlParser : ISkAdNetworkParser 9 | { 10 | private const string k_SkAdNetworkIdentifier = "SKAdNetworkIdentifier"; 11 | 12 | public string GetExtension() 13 | { 14 | return SkAdNetworkFileExtension.XML; 15 | } 16 | 17 | public HashSet ParseSource(ISkAdNetworkSource source) 18 | { 19 | var foundIds = new HashSet(); 20 | try 21 | { 22 | var xmlDocument = new XmlDocument(); 23 | 24 | using (var stream = source.Open()) 25 | { 26 | if (stream == null) 27 | { 28 | Debug.LogWarning("[Unity SKAdNetwork Parser] Unable to parse SKAdNetwork file: {source.Path}"); 29 | return foundIds; 30 | } 31 | 32 | xmlDocument.Load(stream); 33 | } 34 | 35 | var items = xmlDocument.GetElementsByTagName("key"); 36 | for (var x = 0; x < items.Count; x++) 37 | { 38 | if (items[x].InnerText == k_SkAdNetworkIdentifier) 39 | { 40 | var nextSibling = items[x]?.NextSibling; 41 | if (nextSibling != null) 42 | { 43 | foundIds.Add(nextSibling.InnerText); 44 | } 45 | } 46 | } 47 | } 48 | catch (Exception) 49 | { 50 | Debug.LogWarning($"[Unity SKAdNetwork Parser] Unable to parse SKAdNetwork file: {source.Path}"); 51 | } 52 | 53 | return foundIds; 54 | } 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Editor/Parser/SkAdNetworkXmlParser.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b62c9c75b6cf84b3db11f5bb9f036169 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Editor/PostProcessBuildPlist.cs: -------------------------------------------------------------------------------- 1 | #if UNITY_2018_1_OR_NEWER && UNITY_IOS 2 | using System; 3 | using System.IO; 4 | using UnityEngine; 5 | using UnityEditor; 6 | using UnityEditor.Build; 7 | using UnityEditor.iOS.Xcode; 8 | using System.Collections.Generic; 9 | using System.Linq; 10 | using UnityEditor.Build.Reporting; 11 | 12 | namespace Unity.Advertisement.IosSupport.Editor 13 | { 14 | internal class PostProcessBuildPlist : IPostprocessBuildWithReport 15 | { 16 | public int callbackOrder => 0; 17 | private const string k_SkAdNetworkIdentifier = "SKAdNetworkIdentifier"; 18 | private const string k_SkAdNetworkItems = "SKAdNetworkItems"; 19 | private const string k_SkAdNetworksFileName = "SKAdNetworks"; 20 | 21 | public void OnPostprocessBuild(BuildReport report) 22 | { 23 | if (report.summary.platform != BuildTarget.iOS) 24 | { 25 | return; 26 | } 27 | 28 | UpdateInfoPlistWithSkAdNetworkIds(report.summary.outputPath); 29 | } 30 | 31 | internal static void UpdateInfoPlistWithSkAdNetworkIds(string pathToPlistFile) 32 | { 33 | var provider = new SkAdNetworkLocalSourceProvider(); 34 | var ids = new HashSet(); 35 | try 36 | { 37 | SkAdNetworkParser.GetAllParsers().ToList().ForEach(parser => { 38 | provider.GetSources(k_SkAdNetworksFileName, parser.GetExtension()).ToList().ForEach(source => { 39 | ids.UnionWith(parser.ParseSource(source)); 40 | }); 41 | }); 42 | } 43 | catch (Exception e) 44 | { 45 | Debug.LogError($"Failed to parse SKAdNetwork files due to following reason: {e.Message}"); 46 | } 47 | 48 | try 49 | { 50 | WriteSkAdNetworkIdsToInfoPlist(ids, pathToPlistFile); 51 | } 52 | catch (Exception e) 53 | { 54 | Debug.LogError($"Failed to update info.plist file due to following reason: {e.Message}"); 55 | } 56 | } 57 | 58 | /// 59 | /// Write all plistValues to an existing Info.plist file 60 | /// 61 | internal static void WriteSkAdNetworkIdsToInfoPlist(HashSet skAdNetworkIds, string outputPath) 62 | { 63 | var infoPlistPath = outputPath + "/Info.plist"; 64 | var plist = new PlistDocument(); 65 | plist.ReadFromString(File.ReadAllText(infoPlistPath)); 66 | var root = plist.root; 67 | 68 | if (root == null) 69 | { 70 | Debug.LogWarning("[Unity SKAdNetwork Parser] Unable to parse info.plist. Unable to add SkAdNetwork Identifiers."); 71 | return; 72 | } 73 | 74 | if (!root.values?.ContainsKey(k_SkAdNetworkItems) ?? false) 75 | { 76 | root.CreateArray(k_SkAdNetworkItems); 77 | } 78 | 79 | var adNetworkItems = root[k_SkAdNetworkItems].AsArray(); 80 | 81 | if (adNetworkItems == null) 82 | { 83 | Debug.LogWarning("[Unity SKAdNetwork Parser] Unable to modify existing info.plist. Unable to add SkAdNetwork Identifiers."); 84 | return; 85 | } 86 | 87 | foreach (var adNetworkId in skAdNetworkIds) 88 | { 89 | if (!PlistContainsAdNetworkId(adNetworkItems, adNetworkId)) 90 | { 91 | adNetworkItems.AddDict().SetString(k_SkAdNetworkIdentifier, adNetworkId); 92 | } 93 | } 94 | 95 | File.WriteAllText(infoPlistPath, plist.WriteToString()); 96 | } 97 | 98 | /// 99 | /// Check if the value is already contained in the plist 100 | /// 101 | internal static bool PlistContainsAdNetworkId(PlistElementArray adNetworkItems, string adNetworkId) 102 | { 103 | foreach (var adNetworkItem in adNetworkItems.values) 104 | { 105 | var item = adNetworkItem.AsDict(); 106 | if (item.values.TryGetValue(k_SkAdNetworkIdentifier, out var value)) 107 | { 108 | if (value.AsString() == adNetworkId) 109 | { 110 | return true; 111 | } 112 | } 113 | } 114 | return false; 115 | } 116 | } 117 | } 118 | #endif //UNITY_2018_1_OR_NEWER 119 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Editor/PostProcessBuildPlist.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e7bc5a6e424ec49089ca10bdb43d4c42 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Editor/Source.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b2b15b7af045b42dabe70a3914e67cba 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Editor/Source/ISkAdNetworkSource.cs: -------------------------------------------------------------------------------- 1 | using System.IO; 2 | using UnityEngine; 3 | 4 | namespace Unity.Advertisement.IosSupport.Editor 5 | { 6 | internal interface ISkAdNetworkSource 7 | { 8 | string Path { get; } 9 | Stream Open(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Editor/Source/ISkAdNetworkSource.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b3b688cb4385c4ed287404f01d47d2cf 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Editor/Source/SkAdNetworkLocalSource.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.IO; 3 | using UnityEngine; 4 | 5 | namespace Unity.Advertisement.IosSupport.Editor 6 | { 7 | internal class SkAdNetworkLocalSource : ISkAdNetworkSource 8 | { 9 | public string Path { get; } 10 | 11 | public SkAdNetworkLocalSource(string path) 12 | { 13 | Path = path; 14 | } 15 | 16 | public Stream Open() 17 | { 18 | return new FileStream(Path, FileMode.Open); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Editor/Source/SkAdNetworkLocalSource.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: bc26fb3115fcd455f8d1d7b9739bc0f5 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Editor/Source/SkAdNetworkLocalSourceProvider.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.IO; 4 | using System.Linq; 5 | using System.Threading; 6 | 7 | namespace Unity.Advertisement.IosSupport.Editor 8 | { 9 | /// 10 | /// Responsible for finding all SkAdNetwork files on the local filesystem by searching through the users project directory and all includes packages. 11 | /// 12 | internal class SkAdNetworkLocalSourceProvider 13 | { 14 | private const int k_MaxPackageLookupTimeoutInSeconds = 30; 15 | private string[] m_PackagePaths; 16 | 17 | public SkAdNetworkLocalSourceProvider() 18 | { 19 | m_PackagePaths = GetAllPackagePaths(); 20 | } 21 | 22 | public IEnumerable GetSources(string filename, string extension) 23 | { 24 | return GetLocalFilePaths(filename, extension).Select(x => new SkAdNetworkLocalSource(x)).ToArray(); 25 | } 26 | 27 | /// 28 | /// Finds a file on the local filesystem by looking the project directory, and all package directories 29 | /// 30 | /// the filename to look for 31 | /// the filename extension to look for 32 | /// a full path to the file 33 | private IEnumerable GetLocalFilePaths(string filename, string fileExtension) 34 | { 35 | return m_PackagePaths 36 | .Prepend(Directory.GetCurrentDirectory()) 37 | .SelectMany(path => Directory.GetFiles(path, string.IsNullOrEmpty(fileExtension) ? filename : $"{filename}.{fileExtension}" , SearchOption.AllDirectories)) 38 | .ToList(); 39 | } 40 | 41 | /// 42 | /// Returns a list of paths to the root folder of each package included in the users project. 43 | /// These may be in different locations on disk depending on where the package is being stored/cached. 44 | /// 45 | private static string[] GetAllPackagePaths(bool offlineMode = true) 46 | { 47 | var list = UnityEditor.PackageManager.Client.List(offlineMode); 48 | if (list == null) 49 | { 50 | return Array.Empty(); 51 | } 52 | 53 | var timeSpan = TimeSpan.FromSeconds(k_MaxPackageLookupTimeoutInSeconds); 54 | var startTime = DateTime.Now; 55 | while (!list.IsCompleted && (DateTime.Now - startTime) < timeSpan) 56 | { 57 | Thread.Sleep(10); 58 | } 59 | 60 | if (list.Error != null) 61 | { 62 | return Array.Empty(); 63 | } 64 | 65 | return list.Result.Select(packageInfo => packageInfo.assetPath).ToArray(); 66 | } 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Editor/Source/SkAdNetworkLocalSourceProvider.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5d925f4b6523544bbbfa58d11df1ac49 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Editor/Source/SkAdNetworkRemoteSource.cs: -------------------------------------------------------------------------------- 1 | using System.IO; 2 | using System.Net; 3 | using UnityEngine; 4 | 5 | namespace Unity.Advertisement.IosSupport.Editor 6 | { 7 | internal class SkAdNetworkRemoteSource : ISkAdNetworkSource 8 | { 9 | public string Path { get; } 10 | 11 | public SkAdNetworkRemoteSource(string path) 12 | { 13 | Path = path; 14 | } 15 | 16 | public Stream Open() 17 | { 18 | return new WebClient().OpenRead(Path); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Editor/Source/SkAdNetworkRemoteSource.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fc886aae4a1fc42b48e8b6deccb67ab5 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Editor/Unity.Advertisement.IosSupport.Editor.asmdef: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Unity.Advertisement.IosSupport.Editor", 3 | "references": [], 4 | "includePlatforms": [ 5 | "Editor" 6 | ], 7 | "excludePlatforms": [], 8 | "allowUnsafeCode": false, 9 | "overrideReferences": false, 10 | "precompiledReferences": [], 11 | "autoReferenced": true, 12 | "defineConstraints": [], 13 | "versionDefines": [], 14 | "noEngineReferences": false 15 | } -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Editor/Unity.Advertisement.IosSupport.Editor.asmdef.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 782c39a29bdf44a569029c0fc1c6d458 3 | AssemblyDefinitionImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/LICENSE.md.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c8d877d50d36b4851b91aeeafcaa4643 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Runtime.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fe90753440b674f63858ab0d9c216a81 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Runtime/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright 2020 3 | // 4 | // Licensed under the Apache License, Version 2.0 (the "License"); 5 | // you may not use this file except in compliance with the License. 6 | // You may obtain a copy of the License at 7 | // 8 | // http://www.apache.org/licenses/LICENSE-2.0 9 | // 10 | // Unless required by applicable law or agreed to in writing, software 11 | // distributed under the License is distributed on an "AS IS" BASIS, 12 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | // See the License for the specific language governing permissions and 14 | // limitations under the License. 15 | using System.Reflection; 16 | using System.Runtime.CompilerServices; 17 | 18 | // Information about this assembly is defined by the following attributes. 19 | // Change them to the values specific to your project. 20 | 21 | [assembly: AssemblyTitle("Unity.Advertisement.IosSupport")] 22 | [assembly: AssemblyDescription("")] 23 | [assembly: AssemblyConfiguration("")] 24 | [assembly: AssemblyCompany("Unity Technologies")] 25 | [assembly: AssemblyProduct("Monetization")] 26 | [assembly: AssemblyCopyright("Copyright © Unity Technologies 2020")] 27 | [assembly: AssemblyTrademark("")] 28 | [assembly: AssemblyCulture("")] 29 | 30 | // The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". 31 | // The form "{Major}.{Minor}.*" will automatically update the build and revision, 32 | // and "{Major}.{Minor}.{Build}.*" will update just the revision. 33 | 34 | [assembly: AssemblyVersion("0.1.0")] 35 | 36 | [assembly: InternalsVisibleTo("Unity.Advertisement.IosSupport.Tests")] 37 | [assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")] 38 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Runtime/AssemblyInfo.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7e2daa7c495684110b5f6f4c7b1f0205 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Runtime/Plugins.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f0517fab4d14c483eb293ee9a3ed62fe 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Runtime/Plugins/iOS.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f8e38b03e8a02476990867b3533da7be 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Runtime/Plugins/iOS/Categories.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 44d3d607da645444caf451c0ef1b7027 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Runtime/Plugins/iOS/Categories/NSInvocation.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5666dcb6f872a48299f472e42ea2e4d9 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Runtime/Plugins/iOS/Categories/NSInvocation/NSEnumWrapper.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 409380c074b194f2fb87ff280bc34046 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Runtime/Plugins/iOS/Categories/NSInvocation/NSEnumWrapper/UASupportPrimitivesBox.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | NS_ASSUME_NONNULL_BEGIN 4 | 5 | /** 6 | * The class is used in invocation when we want to pass any primitive values to a function with NSInvocation 7 | * 8 | * @discussion 9 | * The problem: NSInvocation category accepts arguments as NSArray that operates with id. We could have used NSValue for those purposes but 10 | * in this case we would loose the ability to operate with NSNumbers. NSNumber is subclass of NSValue and since NSInvocation uses typecast to a box 11 | * this creates the problem. For that reason NSPrimitivesBox provides the solution by expecting any primitives for a function been wrapped into it 12 | * 13 | */ 14 | @interface UASupportPrimitivesBox : NSValue 15 | + (instancetype)newWithBytes: (nonnull const void *)bytes objCType: (nonnull const char *)type; 16 | @end 17 | 18 | NS_ASSUME_NONNULL_END 19 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Runtime/Plugins/iOS/Categories/NSInvocation/NSEnumWrapper/UASupportPrimitivesBox.h.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 09a260cc498cc4d0f833b74d4ed69328 3 | PluginImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | iconMap: {} 7 | executionOrder: {} 8 | defineConstraints: [] 9 | isPreloaded: 0 10 | isOverridable: 1 11 | isExplicitlyReferenced: 0 12 | validateReferences: 1 13 | platformData: 14 | - first: 15 | Any: 16 | second: 17 | enabled: 1 18 | settings: {} 19 | - first: 20 | Editor: Editor 21 | second: 22 | enabled: 0 23 | settings: 24 | DefaultValueInitialized: true 25 | userData: 26 | assetBundleName: 27 | assetBundleVariant: 28 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Runtime/Plugins/iOS/Categories/NSInvocation/NSEnumWrapper/UASupportPrimitivesBox.m: -------------------------------------------------------------------------------- 1 | #import "UASupportPrimitivesBox.h" 2 | #import "UASupportTools.h" 3 | 4 | @interface UASupportPrimitivesBox () 5 | @property (nonatomic, strong) NSValue *box; 6 | @end 7 | 8 | @implementation UASupportPrimitivesBox 9 | + (instancetype)newWithBytes: (nonnull const void *)bytes objCType: (nonnull const char *)type { 10 | return [[self alloc] initWithBytes: bytes 11 | objCType: type]; 12 | } 13 | 14 | // Suppressing unnecessary warnings. Its expected behaviour when subclassing NSValue, according to the notes from apple docs 15 | // https://developer.apple.com/documentation/foundation/nsvalue?language=objc 16 | #pragma GCC diagnostic push 17 | #pragma GCC diagnostic ignored "-Wobjc-designated-initializers" 18 | - (instancetype)initWithBytes: (const void *)value objCType: (const char *)type { 19 | #pragma GCC diagnostic pop 20 | 21 | #pragma GCC diagnostic push 22 | #pragma GCC diagnostic ignored "-Wobjc-designated-initializers" 23 | SUPER_INIT 24 | #pragma GCC diagnostic push 25 | self.box = [NSValue valueWithBytes: value 26 | objCType: type]; 27 | return self; 28 | } 29 | 30 | - (void)getValue: (void *)value { 31 | return [_box getValue: value]; 32 | } 33 | 34 | - (const char *)objCType { 35 | return [_box objCType]; 36 | } 37 | 38 | @end 39 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Runtime/Plugins/iOS/Categories/NSInvocation/NSEnumWrapper/UASupportPrimitivesBox.m.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 61b23861e38444442a4fbeb2ea469fe7 3 | PluginImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | iconMap: {} 7 | executionOrder: {} 8 | defineConstraints: [] 9 | isPreloaded: 0 10 | isOverridable: 1 11 | isExplicitlyReferenced: 0 12 | validateReferences: 1 13 | platformData: 14 | - first: 15 | Any: 16 | second: 17 | enabled: 0 18 | settings: {} 19 | - first: 20 | Editor: Editor 21 | second: 22 | enabled: 0 23 | settings: 24 | DefaultValueInitialized: true 25 | - first: 26 | iPhone: iOS 27 | second: 28 | enabled: 1 29 | settings: {} 30 | - first: 31 | tvOS: tvOS 32 | second: 33 | enabled: 1 34 | settings: {} 35 | userData: 36 | assetBundleName: 37 | assetBundleVariant: 38 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Runtime/Plugins/iOS/Categories/NSInvocation/NSInvocation+Convenience.h: -------------------------------------------------------------------------------- 1 | NS_ASSUME_NONNULL_BEGIN 2 | 3 | /* 4 | * Category that provides convenience static methods to create and perform invocations. 5 | * 6 | */ 7 | @interface NSInvocation (Category) 8 | 9 | 10 | /// Invokes a method on a Class or on an instance with a set of arguments 11 | /// @note If a target is nil, will try to perform static method on a class. 12 | /// @param methodName Full name of a selector 13 | /// @param classType Class 14 | /// @param target target of type Class 15 | /// @param arguments arguments required by the a function 16 | /// 17 | /// @note When we need to pass an enum as an argument, use NSEnumWrapper 18 | /// @code NSEnumWrapper *typeWrapped = [NSEnumWrapper newWithBytes:&`EnumValue` objCType: @encode(EnumType)]; 19 | + (void)uads_invokeUsingMethod: (NSString *)methodName 20 | classType: (Class)classType 21 | target: (_Nullable id)target 22 | args: (NSArray *)arguments; 23 | 24 | 25 | /// Creates a prepared NSInvocation to perform a method of a Class or on an instance with a set of arguments 26 | /// @note If a target is nil, will try to perform static method on a class. 27 | /// @param methodName Full name of a selector 28 | /// @param classType Class 29 | /// @param target target of type Class 30 | /// @param arguments arguments required by the a function 31 | /// 32 | /// @note When we need to pass an enum as an argument, use NSEnumWrapper 33 | /// @code NSEnumWrapper *typeWrapped = [NSEnumWrapper newWithBytes:&`EnumValue` objCType: @encode(EnumType)]; 34 | + (nullable instancetype)uads_newUsingMethod: (NSString *)methodName 35 | classType: (Class)classType 36 | target: (_Nullable id)target 37 | args: (NSArray *)arguments; 38 | 39 | 40 | /// Invokes a method on a Class or on an instance with a set of arguments. Returns a result of invoked function 41 | /// @note If a target is nil, will try to perform static method on a class. 42 | /// 43 | /// @param methodName Full name of a selector 44 | /// @param classType Class 45 | /// @param target target of type Class 46 | /// @param arguments arguments required by the a function 47 | /// 48 | /// @note When we need to pass an enum as an argument, use NSEnumWrapper 49 | /// @code NSEnumWrapper *typeWrapped = [NSEnumWrapper newWithBytes:&`EnumValue` objCType: @encode(EnumType)]; 50 | + (nullable id)uads_invokeWithReturnedUsingMethod: (NSString *)methodName 51 | classType: (Class)classType 52 | target: (_Nullable id)target 53 | args: (NSArray *)arguments; 54 | @end 55 | 56 | NS_ASSUME_NONNULL_END 57 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Runtime/Plugins/iOS/Categories/NSInvocation/NSInvocation+Convenience.h.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ee3d752a5dcf64f46a2c110958ba2126 3 | PluginImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | iconMap: {} 7 | executionOrder: {} 8 | defineConstraints: [] 9 | isPreloaded: 0 10 | isOverridable: 1 11 | isExplicitlyReferenced: 0 12 | validateReferences: 1 13 | platformData: 14 | - first: 15 | Any: 16 | second: 17 | enabled: 1 18 | settings: {} 19 | - first: 20 | Editor: Editor 21 | second: 22 | enabled: 0 23 | settings: 24 | DefaultValueInitialized: true 25 | userData: 26 | assetBundleName: 27 | assetBundleVariant: 28 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Runtime/Plugins/iOS/Categories/NSInvocation/NSInvocation+Convenience.m: -------------------------------------------------------------------------------- 1 | #import "NSInvocation+Convenience.h" 2 | #import "UASupportPrimitivesBox.h" 3 | #import "UASupportTools.h" 4 | 5 | @implementation NSInvocation (Category) 6 | 7 | + (void)uads_invokeUsingMethod: (NSString *)methodName 8 | classType: (Class)classType 9 | target: (_Nullable id)target 10 | args: (NSArray *)arguments { 11 | NSInvocation *invocation = [self uads_newUsingMethod: methodName 12 | classType: classType 13 | target: target 14 | args: arguments]; 15 | 16 | [invocation invoke]; 17 | } 18 | 19 | + (nullable id)uads_invokeWithReturnedUsingMethod: (NSString *)methodName 20 | classType: (Class)classType 21 | target: (_Nullable id)target 22 | args: (NSArray *)arguments { 23 | __autoreleasing id returnedValue; 24 | NSInvocation *invocation = [self uads_newUsingMethod: methodName 25 | classType: classType 26 | target: target 27 | args: arguments]; 28 | 29 | [invocation invoke]; 30 | [invocation getReturnValue: &returnedValue]; 31 | return returnedValue; 32 | } 33 | 34 | + (nullable instancetype)uads_newUsingMethod: (NSString *)methodName 35 | classType: (Class)classType 36 | target: (_Nullable id)target 37 | args: (NSArray *)arguments { 38 | SEL selector = NSSelectorFromString(methodName); 39 | 40 | GUARD_OR_NIL(selector) 41 | 42 | __autoreleasing id targetArg; 43 | NSMethodSignature *signature; 44 | 45 | if (!target) { 46 | targetArg = classType; 47 | signature = [classType methodSignatureForSelector: selector]; 48 | } else { 49 | targetArg = target; 50 | signature = [classType instanceMethodSignatureForSelector: selector]; 51 | } 52 | 53 | GUARD_OR_NIL(signature) 54 | 55 | NSInvocation *invocation = [NSInvocation invocationWithMethodSignature: signature]; 56 | [invocation setSelector: selector]; 57 | [invocation setTarget: targetArg]; 58 | 59 | for (int i = 0; i < [arguments count]; i++) { 60 | __autoreleasing id argument = arguments[i]; 61 | 62 | UASupportPrimitivesBox *value = uasupport_typecast(argument, [UASupportPrimitivesBox class]); 63 | 64 | if (value) { 65 | void *pointerToPrimitives; 66 | [value getValue: &pointerToPrimitives]; 67 | 68 | /** from https://developer.apple.com/documentation/foundation/nsinvocation/1437834-setargument 69 | * An integer specifying the index of the argument. 70 | * Indices 0 and 1 indicate the hidden arguments self and _cmd, respectively; you should set these values directly with the target and selector properties. Use indices 2 and greater for the arguments normally passed in a message. 71 | */ 72 | 73 | [invocation setArgument: &pointerToPrimitives 74 | atIndex: 2 + i]; 75 | } else { 76 | [invocation setArgument: &argument 77 | atIndex: 2 + i]; 78 | } 79 | } 80 | 81 | if (!invocation.argumentsRetained) { 82 | [invocation retainArguments]; 83 | } 84 | 85 | return invocation; 86 | } /* uads_newUsingMethod */ 87 | 88 | @end 89 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Runtime/Plugins/iOS/Categories/NSInvocation/NSInvocation+Convenience.m.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f62205c65beab4f23ae7993dfc41d6f4 3 | PluginImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | iconMap: {} 7 | executionOrder: {} 8 | defineConstraints: [] 9 | isPreloaded: 0 10 | isOverridable: 1 11 | isExplicitlyReferenced: 0 12 | validateReferences: 1 13 | platformData: 14 | - first: 15 | Any: 16 | second: 17 | enabled: 0 18 | settings: {} 19 | - first: 20 | Editor: Editor 21 | second: 22 | enabled: 0 23 | settings: 24 | DefaultValueInitialized: true 25 | - first: 26 | iPhone: iOS 27 | second: 28 | enabled: 1 29 | settings: {} 30 | - first: 31 | tvOS: tvOS 32 | second: 33 | enabled: 1 34 | settings: {} 35 | userData: 36 | assetBundleName: 37 | assetBundleVariant: 38 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Runtime/Plugins/iOS/Categories/UASupportTools.h: -------------------------------------------------------------------------------- 1 | #import 2 | NS_ASSUME_NONNULL_BEGIN 3 | 4 | /** 5 | Macro that replaces boilerplate code like: 6 | @code 7 | 8 | if ([obj isKindOfClass: class]) { 9 | return obj; 10 | } else { 11 | return nil; 12 | } 13 | */ 14 | #define TYPECAST(obj, class) typecast(obj, class) 15 | 16 | /** 17 | Macro that replaces boilerplate code when calling super init 18 | */ 19 | #define SUPER_INIT self = [super init]; if (!self) { return nil; } 20 | 21 | 22 | /** 23 | Convenience macro to check for condition and return nil if false 24 | */ 25 | #define GUARD_OR_NIL(condition) if (!condition) { return nil; } 26 | 27 | 28 | _Nullable id uasupport_typecast(id obj, Class class); 29 | 30 | 31 | NS_ASSUME_NONNULL_END -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Runtime/Plugins/iOS/Categories/UASupportTools.h.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e5deb7e6ab2bc42ea9a88ef5e90d83d4 3 | PluginImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | iconMap: {} 7 | executionOrder: {} 8 | defineConstraints: [] 9 | isPreloaded: 0 10 | isOverridable: 1 11 | isExplicitlyReferenced: 0 12 | validateReferences: 1 13 | platformData: 14 | - first: 15 | Any: 16 | second: 17 | enabled: 1 18 | settings: {} 19 | - first: 20 | Editor: Editor 21 | second: 22 | enabled: 0 23 | settings: 24 | DefaultValueInitialized: true 25 | userData: 26 | assetBundleName: 27 | assetBundleVariant: 28 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Runtime/Plugins/iOS/Categories/UASupportTools.m: -------------------------------------------------------------------------------- 1 | #import "UASupportTools.h" 2 | 3 | 4 | _Nullable id uasupport_typecast(id obj, Class class) { 5 | if ([obj isKindOfClass: class]) { 6 | return obj; 7 | } else { 8 | return nil; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Runtime/Plugins/iOS/Categories/UASupportTools.m.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a87088279aff24786b336034505be994 3 | PluginImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | iconMap: {} 7 | executionOrder: {} 8 | defineConstraints: [] 9 | isPreloaded: 0 10 | isOverridable: 1 11 | isExplicitlyReferenced: 0 12 | validateReferences: 1 13 | platformData: 14 | - first: 15 | Any: 16 | second: 17 | enabled: 0 18 | settings: {} 19 | - first: 20 | Editor: Editor 21 | second: 22 | enabled: 0 23 | settings: 24 | DefaultValueInitialized: true 25 | - first: 26 | iPhone: iOS 27 | second: 28 | enabled: 1 29 | settings: {} 30 | - first: 31 | tvOS: tvOS 32 | second: 33 | enabled: 1 34 | settings: {} 35 | userData: 36 | assetBundleName: 37 | assetBundleVariant: 38 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Runtime/Plugins/iOS/SkAdNetworkInterface.m: -------------------------------------------------------------------------------- 1 | #import 2 | #import "SkAdNetworkManager.h" 3 | 4 | extern void InterfaceSkAdNetworkUpdateConversionValue(NSInteger conversionValue) { 5 | [[SkAdNetworkManager sharedInstance] updateConversionValue:(NSInteger)conversionValue]; 6 | } 7 | 8 | extern void InterfaceSkAdNetworkRegisterAppForNetworkAttribution() { 9 | [[SkAdNetworkManager sharedInstance] registerAppForAdNetworkAttribution]; 10 | } 11 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Runtime/Plugins/iOS/SkAdNetworkInterface.m.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 42e354c20cf98414e8592511aefeb841 3 | PluginImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | iconMap: {} 7 | executionOrder: {} 8 | defineConstraints: [] 9 | isPreloaded: 0 10 | isOverridable: 1 11 | isExplicitlyReferenced: 0 12 | validateReferences: 1 13 | platformData: 14 | - first: 15 | Any: 16 | second: 17 | enabled: 0 18 | settings: {} 19 | - first: 20 | Editor: Editor 21 | second: 22 | enabled: 0 23 | settings: 24 | DefaultValueInitialized: true 25 | - first: 26 | iPhone: iOS 27 | second: 28 | enabled: 1 29 | settings: {} 30 | - first: 31 | tvOS: tvOS 32 | second: 33 | enabled: 1 34 | settings: {} 35 | userData: 36 | assetBundleName: 37 | assetBundleVariant: 38 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Runtime/Plugins/iOS/SkAdNetworkManager.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | @interface SkAdNetworkManager : NSObject 4 | 5 | + (SkAdNetworkManager *)sharedInstance; 6 | 7 | - (BOOL)isAvailable; 8 | - (void)updateConversionValue:(NSInteger)conversionValue; 9 | - (void)registerAppForAdNetworkAttribution; 10 | 11 | @end 12 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Runtime/Plugins/iOS/SkAdNetworkManager.h.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 46c89ccf14bf540fbbfe2b3fc0adbc8e 3 | PluginImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | iconMap: {} 7 | executionOrder: {} 8 | defineConstraints: [] 9 | isPreloaded: 0 10 | isOverridable: 1 11 | isExplicitlyReferenced: 0 12 | validateReferences: 1 13 | platformData: 14 | - first: 15 | Any: 16 | second: 17 | enabled: 1 18 | settings: {} 19 | - first: 20 | Editor: Editor 21 | second: 22 | enabled: 0 23 | settings: 24 | DefaultValueInitialized: true 25 | userData: 26 | assetBundleName: 27 | assetBundleVariant: 28 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Runtime/Plugins/iOS/SkAdNetworkManager.m: -------------------------------------------------------------------------------- 1 | #import "SkAdNetworkManager.h" 2 | #import 3 | #import 4 | #import 5 | #import 6 | #import "NSInvocation+Convenience.h" 7 | #import "UASupportPrimitivesBox.h" 8 | 9 | @interface SkAdNetworkManager () 10 | @property (strong, nonatomic) Class SkAdNetworkClass; 11 | @end 12 | 13 | @implementation SkAdNetworkManager 14 | 15 | - (instancetype)init { 16 | if (self = [super init]) { 17 | if (![SkAdNetworkManager loadFramework]) { 18 | NSLog(@"Can't load StoreKit DLL"); 19 | } 20 | self.SkAdNetworkClass = NSClassFromString(@"SKAdNetwork"); 21 | } 22 | return self; 23 | } 24 | 25 | + (SkAdNetworkManager *)sharedInstance { 26 | static SkAdNetworkManager *instance = nil; 27 | static dispatch_once_t token; 28 | 29 | dispatch_once(&token, ^{ 30 | instance = [[SkAdNetworkManager alloc] init]; 31 | }); 32 | return instance; 33 | } 34 | 35 | - (void)updateConversionValue:(NSInteger)conversionValue { 36 | if (!self.isAvailable) { 37 | NSLog(@"SkAdNetwork not available"); 38 | return; 39 | } 40 | UASupportPrimitivesBox *index = [UASupportPrimitivesBox newWithBytes: &conversionValue objCType: @encode(NSInteger)]; 41 | [NSInvocation uads_invokeUsingMethod: @"updateConversionValue:" classType: self.SkAdNetworkClass target: nil args: @[index] ]; 42 | } 43 | 44 | - (void)registerAppForAdNetworkAttribution { 45 | if (!self.isAvailable) { 46 | NSLog(@"SkAdNetwork not available"); 47 | return; 48 | } 49 | 50 | [NSInvocation uads_invokeUsingMethod: @"registerAppForAdNetworkAttribution" classType: self.SkAdNetworkClass target: nil args: @[] ]; 51 | } 52 | 53 | - (BOOL)isAvailable { 54 | return self.SkAdNetworkClass != nil; 55 | } 56 | 57 | + (BOOL)isFrameworkPresent { 58 | id attClass = objc_getClass("SKAdNetwork"); 59 | 60 | if (attClass) 61 | return TRUE; 62 | 63 | return FALSE; 64 | } 65 | 66 | + (BOOL)isDeviceSimulator { 67 | struct utsname systemInfo; 68 | uname(&systemInfo); 69 | 70 | NSString *model = [NSString stringWithCString:systemInfo.machine encoding:NSUTF8StringEncoding]; 71 | if ([model isEqualToString:@"x86_64"] || [model isEqualToString:@"i386"]) 72 | return TRUE; 73 | 74 | return FALSE; 75 | } 76 | 77 | + (BOOL)loadFramework { 78 | NSString *frameworkLocation; 79 | 80 | if (![SkAdNetworkManager isFrameworkPresent]) { 81 | NSLog(@"StoreKit.framework is not present, trying to load it."); 82 | if ([SkAdNetworkManager isDeviceSimulator]) { 83 | NSString *frameworkPath = [[NSProcessInfo processInfo] environment][@"DYLD_FALLBACK_FRAMEWORK_PATH"]; 84 | if (frameworkPath) { 85 | frameworkLocation = [NSString pathWithComponents:@[ frameworkPath, @"StoreKit.framework", @"StoreKit" ]]; 86 | } 87 | } else { 88 | frameworkLocation = [NSString stringWithFormat:@"/System/Library/Frameworks/StoreKit.framework/StoreKit"]; 89 | } 90 | dlopen([frameworkLocation cStringUsingEncoding:NSUTF8StringEncoding], RTLD_LAZY); 91 | 92 | if (![SkAdNetworkManager isFrameworkPresent]) { 93 | NSLog(@"StoreKit.framework still no present!"); 94 | return FALSE; 95 | } else { 96 | NSLog(@"Successfully loaded StoreKit.framework"); 97 | return TRUE; 98 | } 99 | } else { 100 | NSLog(@"StoreKit.framework already present"); 101 | return TRUE; 102 | } 103 | } 104 | 105 | @end 106 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Runtime/Plugins/iOS/SkAdNetworkManager.m.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0f3b9ec31803d4f0aa7c3b0a90910a42 3 | PluginImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | iconMap: {} 7 | executionOrder: {} 8 | defineConstraints: [] 9 | isPreloaded: 0 10 | isOverridable: 1 11 | isExplicitlyReferenced: 0 12 | validateReferences: 1 13 | platformData: 14 | - first: 15 | Any: 16 | second: 17 | enabled: 0 18 | settings: {} 19 | - first: 20 | Editor: Editor 21 | second: 22 | enabled: 0 23 | settings: 24 | DefaultValueInitialized: true 25 | - first: 26 | iPhone: iOS 27 | second: 28 | enabled: 1 29 | settings: {} 30 | - first: 31 | tvOS: tvOS 32 | second: 33 | enabled: 1 34 | settings: {} 35 | userData: 36 | assetBundleName: 37 | assetBundleVariant: 38 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Runtime/Plugins/iOS/TrackingAuthorizationInterface.m: -------------------------------------------------------------------------------- 1 | #import 2 | #import "TrackingAuthorizationManager.h" 3 | 4 | 5 | extern void InterfaceTrackingAuthorizationRequest(TrackingAuthorizationCompletion completion) { 6 | [[TrackingAuthorizationManager sharedInstance] trackingAuthorizationRequest:completion]; 7 | } 8 | 9 | extern NSUInteger InterfaceGetTrackingAuthorizationStatus() { 10 | return [[TrackingAuthorizationManager sharedInstance] getTrackingAuthorizationStatus]; 11 | } 12 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Runtime/Plugins/iOS/TrackingAuthorizationInterface.m.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7fd241e3b5fcd40709c2dc9f615a5eff 3 | PluginImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | iconMap: {} 7 | executionOrder: {} 8 | defineConstraints: [] 9 | isPreloaded: 0 10 | isOverridable: 1 11 | isExplicitlyReferenced: 0 12 | validateReferences: 1 13 | platformData: 14 | - first: 15 | Any: 16 | second: 17 | enabled: 0 18 | settings: {} 19 | - first: 20 | Editor: Editor 21 | second: 22 | enabled: 0 23 | settings: 24 | DefaultValueInitialized: true 25 | - first: 26 | iPhone: iOS 27 | second: 28 | enabled: 1 29 | settings: {} 30 | - first: 31 | tvOS: tvOS 32 | second: 33 | enabled: 1 34 | settings: {} 35 | userData: 36 | assetBundleName: 37 | assetBundleVariant: 38 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Runtime/Plugins/iOS/TrackingAuthorizationManager.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | typedef void (*TrackingAuthorizationCompletion)(NSUInteger status); 4 | 5 | @interface TrackingAuthorizationManager : NSObject 6 | 7 | + (TrackingAuthorizationManager *)sharedInstance; 8 | 9 | - (BOOL)isAvailable; 10 | - (void)trackingAuthorizationRequest:(TrackingAuthorizationCompletion)completion; 11 | - (NSUInteger)getTrackingAuthorizationStatus; 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Runtime/Plugins/iOS/TrackingAuthorizationManager.h.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 25d2f3238e3504e7f90b802740ce28b4 3 | PluginImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | iconMap: {} 7 | executionOrder: {} 8 | defineConstraints: [] 9 | isPreloaded: 0 10 | isOverridable: 1 11 | isExplicitlyReferenced: 0 12 | validateReferences: 1 13 | platformData: 14 | - first: 15 | Any: 16 | second: 17 | enabled: 1 18 | settings: {} 19 | - first: 20 | Editor: Editor 21 | second: 22 | enabled: 0 23 | settings: 24 | DefaultValueInitialized: true 25 | userData: 26 | assetBundleName: 27 | assetBundleVariant: 28 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Runtime/Plugins/iOS/TrackingAuthorizationManager.m: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | #import 4 | #import 5 | #import 6 | 7 | #import "TrackingAuthorizationManager.h" 8 | 9 | @interface TrackingAuthorizationManager () 10 | @property (strong, nonatomic) Class trackingManagerAuthorizationClass; 11 | @end 12 | 13 | @implementation TrackingAuthorizationManager 14 | 15 | + (TrackingAuthorizationManager *)sharedInstance { 16 | static TrackingAuthorizationManager *instance = nil; 17 | static dispatch_once_t token; 18 | 19 | dispatch_once(&token, ^{ 20 | instance = [[TrackingAuthorizationManager alloc] init]; 21 | }); 22 | return instance; 23 | } 24 | 25 | - (instancetype)init { 26 | if (self = [super init]) { 27 | if (![TrackingAuthorizationManager loadFramework]) { 28 | NSLog(@"Can't load ATTrackingManager"); 29 | } 30 | self.trackingManagerAuthorizationClass = NSClassFromString(@"ATTrackingManager"); 31 | } 32 | return self; 33 | } 34 | 35 | - (BOOL)isAvailable { 36 | return self.trackingManagerAuthorizationClass != nil && [[NSBundle mainBundle] objectForInfoDictionaryKey:@"NSUserTrackingUsageDescription"] != nil; 37 | } 38 | 39 | - (void)trackingAuthorizationRequest:(TrackingAuthorizationCompletion)completion { 40 | if (!self.isAvailable) { 41 | if (completion != nil) { 42 | completion(0); 43 | } 44 | return; 45 | } 46 | 47 | id handler = ^(NSUInteger result) { 48 | NSLog(@"Result request tracking authorization : %lu", (unsigned long)result); 49 | if (completion != nil) { 50 | completion(result); 51 | } 52 | }; 53 | 54 | SEL requestSelector = NSSelectorFromString(@"requestTrackingAuthorizationWithCompletionHandler:"); 55 | if ([self.trackingManagerAuthorizationClass respondsToSelector:requestSelector]) { 56 | [self.trackingManagerAuthorizationClass performSelector:requestSelector withObject:handler]; 57 | } 58 | } 59 | 60 | - (NSUInteger)getTrackingAuthorizationStatus { 61 | if (!self.isAvailable) 62 | return 0; 63 | 64 | NSUInteger value = [[self.trackingManagerAuthorizationClass valueForKey:@"trackingAuthorizationStatus"] unsignedIntegerValue]; 65 | 66 | return value; 67 | } 68 | 69 | + (BOOL)isFrameworkPresent { 70 | id attClass = objc_getClass("ATTrackingManager"); 71 | 72 | if (attClass) 73 | return TRUE; 74 | 75 | return FALSE; 76 | } 77 | 78 | + (BOOL)isDeviceSimulator { 79 | struct utsname systemInfo; 80 | uname(&systemInfo); 81 | 82 | NSString *model = [NSString stringWithCString:systemInfo.machine encoding:NSUTF8StringEncoding]; 83 | if ([model isEqualToString:@"x86_64"] || [model isEqualToString:@"i386"]) 84 | return TRUE; 85 | 86 | return FALSE; 87 | } 88 | 89 | + (BOOL)loadFramework { 90 | NSString *frameworkLocation; 91 | if (![TrackingAuthorizationManager isFrameworkPresent]) { 92 | NSLog(@"AppTrackingTransparency Framework is not present, trying to load it."); 93 | if ([TrackingAuthorizationManager isDeviceSimulator]) { 94 | NSString *frameworkPath = [[NSProcessInfo processInfo] environment] 95 | [@"DYLD_FALLBACK_FRAMEWORK_PATH"]; 96 | if (frameworkPath) { 97 | frameworkLocation = [NSString pathWithComponents:@[ frameworkPath, @"AppTrackingTransparency.framework", @"AppTrackingTransparency" ]]; 98 | } 99 | } else { 100 | frameworkLocation = [NSString stringWithFormat:@"/System/Library/Frameworks/AppTrackingTransparency.framework/AppTrackingTransparency"]; 101 | } 102 | dlopen([frameworkLocation cStringUsingEncoding:NSUTF8StringEncoding], RTLD_LAZY); 103 | 104 | if (![TrackingAuthorizationManager isFrameworkPresent]) { 105 | NSLog(@"AppTrackingTransparency still not present!"); 106 | return FALSE; 107 | } else { 108 | NSLog(@"Successfully loaded AppTrackingTransparency framework"); 109 | return TRUE; 110 | } 111 | } else { 112 | NSLog(@"AppTrackingTransparency framework already present"); 113 | return TRUE; 114 | } 115 | } 116 | 117 | @end 118 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Runtime/Plugins/iOS/TrackingAuthorizationManager.m.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 81160d7556a4c4e6bb1b9b8b9e08307f 3 | PluginImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | iconMap: {} 7 | executionOrder: {} 8 | defineConstraints: [] 9 | isPreloaded: 0 10 | isOverridable: 1 11 | isExplicitlyReferenced: 0 12 | validateReferences: 1 13 | platformData: 14 | - first: 15 | Any: 16 | second: 17 | enabled: 0 18 | settings: {} 19 | - first: 20 | Editor: Editor 21 | second: 22 | enabled: 0 23 | settings: 24 | DefaultValueInitialized: true 25 | - first: 26 | iPhone: iOS 27 | second: 28 | enabled: 1 29 | settings: {} 30 | - first: 31 | tvOS: tvOS 32 | second: 33 | enabled: 1 34 | settings: {} 35 | userData: 36 | assetBundleName: 37 | assetBundleVariant: 38 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Runtime/SkAdNetwork.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 43333e0ba2c464cc68cb76c9ee8ec856 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Runtime/SkAdNetwork/SkAdNetworkBinding.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using UnityEngine; 3 | using System.Runtime.InteropServices; 4 | 5 | namespace Unity.Advertisement.IosSupport 6 | { 7 | public class SkAdNetworkBinding 8 | { 9 | #if UNITY_IOS 10 | [DllImport("__Internal")] private static extern void InterfaceSkAdNetworkUpdateConversionValue(int conversionValue); 11 | [DllImport("__Internal")] private static extern void InterfaceSkAdNetworkRegisterAppForNetworkAttribution(); 12 | #endif 13 | 14 | /// 15 | /// This method allows you to update the attribution conversion value. 16 | /// 17 | public static void SkAdNetworkUpdateConversionValue(int conversionValue) 18 | { 19 | #if UNITY_IOS 20 | if (Application.platform == RuntimePlatform.IPhonePlayer) 21 | { 22 | InterfaceSkAdNetworkUpdateConversionValue(conversionValue); 23 | } 24 | #endif 25 | } 26 | 27 | /// 28 | /// This method allows you to register for attribution. 29 | /// 30 | public static void SkAdNetworkRegisterAppForNetworkAttribution() 31 | { 32 | #if UNITY_IOS 33 | if (Application.platform == RuntimePlatform.IPhonePlayer) 34 | { 35 | InterfaceSkAdNetworkRegisterAppForNetworkAttribution(); 36 | } 37 | #endif 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Runtime/SkAdNetwork/SkAdNetworkBinding.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a7c6e286ebfae4e9cb2c9a51bf24f03e 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Runtime/Unity.Advertisement.IosSupport.asmdef: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Unity.Advertisement.IosSupport", 3 | "references": [], 4 | "includePlatforms": [ 5 | "Editor", 6 | "iOS" 7 | ], 8 | "excludePlatforms": [], 9 | "allowUnsafeCode": false, 10 | "overrideReferences": false, 11 | "precompiledReferences": [], 12 | "autoReferenced": true, 13 | "defineConstraints": [], 14 | "versionDefines": [], 15 | "noEngineReferences": false 16 | } -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Runtime/Unity.Advertisement.IosSupport.asmdef.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 00c479e63b1c74419820a39073267645 3 | AssemblyDefinitionImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Runtime/iOSTransparency.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3dbf8d4cb0fa3468891a620bbe08baad 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Runtime/iOSTransparency/ATTrackingStatusBinding.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using UnityEngine; 3 | using System.Runtime.InteropServices; 4 | 5 | namespace Unity.Advertisement.IosSupport 6 | { 7 | using AOT; 8 | public class ATTrackingStatusBinding 9 | { 10 | #if UNITY_IOS 11 | [DllImport("__Internal")] private static extern void InterfaceTrackingAuthorizationRequest(RequestAuthorizationTrackingCompleteHandler callback); 12 | [DllImport("__Internal")] private static extern int InterfaceGetTrackingAuthorizationStatus(); 13 | #endif 14 | public delegate void RequestAuthorizationTrackingCompleteHandler(int status); 15 | private static RequestAuthorizationTrackingCompleteHandler _requestAuthorizationTrackingCompleteCallback = null; 16 | 17 | /// 18 | /// The enumerated states of an authorization tracking request. 19 | /// 20 | public enum AuthorizationTrackingStatus 21 | { 22 | NOT_DETERMINED = 0, 23 | RESTRICTED, 24 | DENIED, 25 | AUTHORIZED 26 | } 27 | 28 | /// 29 | /// This method allows you to request the user permission dialogue. 30 | /// 31 | public static void RequestAuthorizationTracking() 32 | { 33 | RequestAuthorizationTracking(null); 34 | } 35 | 36 | /// 37 | /// This method allows you to request the user permission dialogue. 38 | /// 39 | public static void RequestAuthorizationTracking(RequestAuthorizationTrackingCompleteHandler callback) 40 | { 41 | #if UNITY_IOS 42 | if (Application.platform != RuntimePlatform.IPhonePlayer) return; 43 | if (_requestAuthorizationTrackingCompleteCallback != null) 44 | { 45 | throw new InvalidOperationException("App tracking transparency request is already triggered and awaiting completion"); 46 | } 47 | _requestAuthorizationTrackingCompleteCallback = callback; 48 | 49 | InterfaceTrackingAuthorizationRequest(AppTransparencyTrackingRequestCompleted); 50 | #endif 51 | } 52 | 53 | /// 54 | /// This method allows you to check the app tracking transparency (ATT) authorization status. 55 | /// 56 | /// An AuthorizationTrackingStatus enum value. 57 | public static AuthorizationTrackingStatus GetAuthorizationTrackingStatus() 58 | { 59 | #if UNITY_IOS 60 | if (Application.platform == RuntimePlatform.IPhonePlayer) 61 | { 62 | return (AuthorizationTrackingStatus)InterfaceGetTrackingAuthorizationStatus(); 63 | } 64 | #endif 65 | return AuthorizationTrackingStatus.NOT_DETERMINED; 66 | } 67 | 68 | [MonoPInvokeCallback(typeof(RequestAuthorizationTrackingCompleteHandler))] 69 | public static void AppTransparencyTrackingRequestCompleted(int status) 70 | { 71 | _requestAuthorizationTrackingCompleteCallback?.Invoke(status); 72 | _requestAuthorizationTrackingCompleteCallback = null; 73 | } 74 | 75 | } 76 | } 77 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Runtime/iOSTransparency/ATTrackingStatusBinding.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f87f1fe3d04ad4478bf494ee92eabf88 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Tests.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 32e9af52c87d948b5a76cf37628e731e 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Tests/.tests.json: -------------------------------------------------------------------------------- 1 | { 2 | "createSeparatePackage": false 3 | } 4 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Tests/Editor.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fe0974df023424b71866ee559c26bb61 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Tests/Editor/PListTests.cs: -------------------------------------------------------------------------------- 1 | #if UNITY_2018_1_OR_NEWER && UNITY_IOS 2 | using System.Collections.Generic; 3 | using System.IO; 4 | using NUnit.Framework; 5 | using UnityEditor.iOS.Xcode; 6 | 7 | namespace Unity.Advertisement.IosSupport.Editor.Tests 8 | { 9 | public class PListTests 10 | { 11 | [SetUp] 12 | public void BeforeEach() 13 | { 14 | File.Copy("Assets/Info_Test.plist", "Assets/Info.plist"); 15 | } 16 | 17 | [TearDown] 18 | public void AfterEach() 19 | { 20 | File.Delete("Assets/Info.plist"); 21 | } 22 | 23 | [Test] 24 | [TestCase("Assets/", "\n\n\n \n CFBundleDevelopmentRegion\n en\n CFBundleDocumentTypes\n \n SKAdNetworkItems\n \n \n CFBundleExecutable\n $(EXECUTABLE_NAME)\n CFBundleIdentifier\n $(PRODUCT_BUNDLE_IDENTIFIER)\n CFBundleInfoDictionaryVersion\n 6.0\n CFBundleName\n $(PRODUCT_NAME)\n CFBundlePackageType\n BNDL\n CFBundleShortVersionString\n 1.0\n CFBundleSignature\n ????\n CFBundleVersion\n 1\n NSAppTransportSecurity\n \n NSAllowsArbitraryLoads\n \n \n SKAdNetworkItems\n \n \n SKAdNetworkIdentifier\n 4DZT52R2T5.skadnetwork\n \n \n SKAdNetworkIdentifier\n 123456.skadnetwork\n \n \n \n\n")] 25 | public void WriteSkAdNetworkIdsToInfoPlist(string rootFolder, string expectedContents) 26 | { 27 | var ids = new HashSet { "4DZT52R2T5.skadnetwork", "123456.skadnetwork" }; 28 | PostProcessBuildPlist.WriteSkAdNetworkIdsToInfoPlist(ids, rootFolder); 29 | Assert.That(File.ReadAllText(rootFolder + "Info.plist"), Is.EqualTo(expectedContents), "Info.plist was not updated as expected"); 30 | } 31 | 32 | [Test] 33 | [TestCase("4DZT52R2T5.skadnetwork", true)] 34 | [TestCase("invalid.skadnetwork", false)] 35 | [TestCase("", false)] 36 | [TestCase(null, false)] 37 | public void PlistContainsAdNetworkId(string adNetworkId, bool expectedValue) 38 | { 39 | var plistArray = new PlistElementArray(); 40 | plistArray.AddDict().SetString("SKAdNetworkIdentifier", "4DZT52R2T5.skadnetwork"); 41 | Assert.That(PostProcessBuildPlist.PlistContainsAdNetworkId(plistArray, adNetworkId), Is.EqualTo(expectedValue)); 42 | } 43 | } 44 | } 45 | #endif 46 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Tests/Editor/PListTests.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9a7d8f7d4212542229d19c5bb4e3b06d 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Tests/Editor/SkAdNetworkParserTests.cs: -------------------------------------------------------------------------------- 1 | #if UNITY_2018_1_OR_NEWER && UNITY_IOS 2 | using NUnit.Framework; 3 | using UnityEngine; 4 | 5 | namespace Unity.Advertisement.IosSupport.Editor.Tests 6 | { 7 | public class SkAdNetworkParserTests 8 | { 9 | [Test] 10 | [Category("WorksInIsolation")] 11 | [TestCase(SkAdNetworkFileExtension.XML)] 12 | [TestCase(SkAdNetworkFileExtension.JSON)] 13 | [TestCase(SkAdNetworkFileExtension.NONE)] 14 | public void ParserHandlesExtensionType(string parserType) 15 | { 16 | Assert.That(SkAdNetworkParser.GetParser(parserType).GetExtension(), Is.EqualTo(parserType), "GetExtension did not match the expected value"); 17 | } 18 | 19 | [Test] 20 | [TestCase(SkAdNetworkFileExtension.XML, "Assets/SkAdNetworks.xml", new[] {"4DZT52R2T5.skadnetwork", "123456.skadnetwork"})] 21 | [TestCase(SkAdNetworkFileExtension.JSON, "Assets/SkAdNetworks.json", new[] {"4DZT52R2T5.skadnetwork", "bvpn9ufa9b.skadnetwork"})] 22 | [TestCase(SkAdNetworkFileExtension.JSON, "Assets/AdditionalTestData/SkAdNetworks.json", new[] {"4FZDC2EVR5.skadnetwork", "V72QYCH5UU.skadnetwork"})] 23 | [TestCase(SkAdNetworkFileExtension.NONE, "Assets/SkAdNetworks", new[] {"yclnxrl5pm.skadnetwork","wg4vff78zm.skadnetwork","238da6jt44.skadnetwork","4pfyvq9l8r.skadnetwork","4468km3ulz.skadnetwork","m8dbw4sv7c.skadnetwork","wzmmz9fp6w.skadnetwork","zmvfpc5aq8.skadnetwork","5lm9lj6jb7.skadnetwork","mlmmfzh3r3.skadnetwork","8s468mfl3y.skadnetwork","44n7hlldy6.skadnetwork","5a6flpkh64.skadnetwork","2u9pt9hc89.skadnetwork","3rd42ekr43.skadnetwork","424m5254lk.skadnetwork","ppxm28t8ap.skadnetwork","v79kvwwj4g.skadnetwork","4fzdc2evr5.skadnetwork","cstr6suwn9.skadnetwork","3qy4746246.skadnetwork","bvpn9ufa9b.skadnetwork","9rd848q2bz.skadnetwork","f73kdq92p3.skadnetwork","ydx93a7ass.skadnetwork","44jx6755aq.skadnetwork","v72qych5uu.skadnetwork","glqzh8vgby.skadnetwork","hs6bdukanm.skadnetwork","prcb7njmu6.skadnetwork","c6k4g5qg8m.skadnetwork","3sh42y64q3.skadnetwork","578prtvx9j.skadnetwork","4dzt52r2t5.skadnetwork","7ug5zh24hu.skadnetwork","9t245vhmpl.skadnetwork","tl55sbb4fm.skadnetwork","22mmun2rn5.skadnetwork", "488r3q3dtq.skadnetwork","t38b2kh725.skadnetwork","f38h382jlk.skadnetwork","lr83yxwka7.skadnetwork","kbd757ywx3.skadnetwork","av6w8kgt66.skadnetwork","24t9a8vw3c.skadnetwork"})] 24 | public void ParserCanParseSourceAsExpected(string parserType, string sourceDataPath, string[] expectedResults) { 25 | var result = SkAdNetworkParser.GetParser(parserType).ParseSource(new SkAdNetworkLocalSource(sourceDataPath)); 26 | Assert.That(result, Is.EquivalentTo(expectedResults), "Parser did not return the expected results"); 27 | } 28 | 29 | [Test] 30 | [TestCase(SkAdNetworkFileExtension.XML, "Assets/SkAdNetworks_Bad1.xml", new[] {"123456.skadnetwork"})] //Invalid Key 31 | [TestCase(SkAdNetworkFileExtension.JSON, "Assets/SkAdNetworks_Bad1.json", new[] {"bvpn9ufa9b.skadnetwork"})] //Invalid Key 32 | [TestCase(SkAdNetworkFileExtension.XML, "Assets/SkAdNetworks_Bad2.xml", new string[] {})] //Data format corrupted 33 | [TestCase(SkAdNetworkFileExtension.JSON, "Assets/SkAdNetworks_Bad2.json", new string[] {})] //Data format corrupted 34 | [TestCase(SkAdNetworkFileExtension.JSON, "Assets/SkAdNetworks_Bad", new string[] {})] //Invalid protocol 35 | [TestCase(SkAdNetworkFileExtension.JSON, "Assets/SkAdNetworks_Bad2", new string[] {})] //Invalid url 36 | [TestCase(SkAdNetworkFileExtension.JSON, "Assets/SkAdNetworks_Bad3", new string[] {})] //Valid url to Data in an invalid format 37 | public void ParserCanHandleInvalidFiles(string parserType, string sourceDataPath, string[] expectedResults) 38 | { 39 | Assert.That(SkAdNetworkParser.GetParser(parserType).ParseSource(new SkAdNetworkLocalSource(sourceDataPath)), Is.EquivalentTo(expectedResults), "Parser did not return the expected results"); 40 | } 41 | 42 | [Test] 43 | [Category("WorksInIsolation")] 44 | [TestCase("-1")] 45 | [TestCase(null)] 46 | [TestCase("a")] 47 | [TestCase("xmls")] 48 | [TestCase("xml*")] 49 | [TestCase("*xml")] 50 | [TestCase(".xml")] 51 | public void InvalidParserType(string parserType) 52 | { 53 | Assert.IsNull(SkAdNetworkParser.GetParser(parserType)); 54 | } 55 | } 56 | } 57 | #endif 58 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Tests/Editor/SkAdNetworkParserTests.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: aaa756117fb2142798882ade06f4f9e0 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Tests/Editor/SkAdNetworkSourceTests.cs: -------------------------------------------------------------------------------- 1 | #if UNITY_2018_1_OR_NEWER && UNITY_IOS 2 | using System.IO; 3 | using System.Linq; 4 | using NUnit.Framework; 5 | 6 | namespace Unity.Advertisement.IosSupport.Editor.Tests 7 | { 8 | public class SkAdNetworkSourceTests 9 | { 10 | [Test] 11 | [Category("WorksInIsolation")] 12 | [TestCase("ExpectedPath/To/File")] 13 | public void LocalSourcePathSetOnCreate(string expectedPath) 14 | { 15 | Assert.That(new SkAdNetworkLocalSource(expectedPath).Path, Is.EqualTo(expectedPath), "Path was not properly set in constructor"); 16 | } 17 | 18 | [Test] 19 | [Category("WorksInIsolation")] 20 | [TestCase("ExpectedPath/To/File")] 21 | public void RemoteSourcePathSetOnCreate(string expectedPath) 22 | { 23 | Assert.That(new SkAdNetworkRemoteSource(expectedPath).Path, Is.EqualTo(expectedPath), "Path was not properly set in constructor"); 24 | } 25 | 26 | [Test] 27 | [TestCase("Assets/SkAdNetworks.json")] 28 | [TestCase("Assets/SkAdNetworks.xml")] 29 | [TestCase("Assets/SkAdNetworks")] 30 | public void LocalSourceCanOpenStream(string testFilePath) 31 | { 32 | Assert.NotNull(new SkAdNetworkLocalSource(testFilePath).Open(), "Unable to open stream"); 33 | } 34 | 35 | [Test] 36 | [TestCase("Assets/SkAdNetworksInvalidFilePath.json")] 37 | [TestCase("Assets/SkAdNetworksInvalidFilePath.xml")] 38 | [TestCase("Assets/SkAdNetworksInvalidFilePath")] 39 | public void LocalSourceInvalidFileThrowsException(string testFilePath) 40 | { 41 | Assert.Throws(() => new SkAdNetworkLocalSource(testFilePath).Open(), "FileNotFoundException should be thrown when the filepath is invalid"); 42 | } 43 | 44 | [Test] 45 | [Category("WorksInIsolation")] 46 | [TestCase(SkAdNetworkFileExtension.XML, 1)] 47 | [TestCase(SkAdNetworkFileExtension.JSON, 2)] 48 | [TestCase(SkAdNetworkFileExtension.NONE, 2)] 49 | public void LocalSourceProviderFindsExpectedFiles(string extension, int expectedCount) 50 | { 51 | Assert.That(new SkAdNetworkLocalSourceProvider().GetSources("SKAdNetworks", extension).Count(), Is.EqualTo(expectedCount), "GetSources() did not return the expected count"); 52 | } 53 | } 54 | } 55 | #endif 56 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Tests/Editor/SkAdNetworkSourceTests.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b9698abccc22b4f979250ee7c80107b0 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Tests/Editor/Unity.Advertisement.IosSupport.Editor.Tests.asmdef: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Unity.Advertisement.IosSupport.Editor.Tests", 3 | "references": [ 4 | "Unity.Advertisement.IosSupport", 5 | "Unity.Advertisement.IosSupport.Editor" 6 | ], 7 | "optionalUnityReferences": [ 8 | "TestAssemblies" 9 | ], 10 | "includePlatforms": [ 11 | "Editor" 12 | ], 13 | "excludePlatforms": [], 14 | "allowUnsafeCode": false, 15 | "overrideReferences": false, 16 | "precompiledReferences": [], 17 | "autoReferenced": true, 18 | "defineConstraints": [] 19 | } -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Tests/Editor/Unity.Advertisement.IosSupport.Editor.Tests.asmdef.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 27574058f8bb942fe9dc91742aa31f4b 3 | AssemblyDefinitionImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Tests/Runtime.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 62717391892894f1180a615db8ad6314 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Tests/Runtime/RuntimeTests.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using NUnit.Framework; 3 | 4 | namespace Unity.Advertisement.IosSupport.Tests 5 | { 6 | public class RuntimeTests 7 | { 8 | [Test] 9 | [Timeout(10000)] 10 | 11 | //[UnityPlatform (exclude = new[] { RuntimePlatform.IPhonePlayer })] //Need to find a way to programatically set state on the iPhone for this app otherwise, even on iOS initial state will be Not Determined. 12 | public void TestTrackingStatusMessageUnsupported() 13 | { 14 | Assert.That(ATTrackingStatusBinding.GetAuthorizationTrackingStatus(), Is.EqualTo(ATTrackingStatusBinding.AuthorizationTrackingStatus.NOT_DETERMINED)); 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Tests/Runtime/RuntimeTests.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3d467e3b930724e0ca757fb20c27323b 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Tests/Runtime/Unity.Advertisement.IosSupport.Tests.asmdef: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Unity.Advertisement.IosSupport.Tests", 3 | "references": [ 4 | "Unity.Advertisement.IosSupport" 5 | ], 6 | "optionalUnityReferences": [ 7 | "TestAssemblies" 8 | ], 9 | "includePlatforms": [ 10 | "Editor", 11 | "iOS" 12 | ], 13 | "excludePlatforms": [], 14 | "allowUnsafeCode": false, 15 | "overrideReferences": false, 16 | "precompiledReferences": [], 17 | "autoReferenced": true, 18 | "defineConstraints": [] 19 | } -------------------------------------------------------------------------------- /com.unity.ads.ios-support/Tests/Runtime/Unity.Advertisement.IosSupport.Tests.asmdef.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: aa2578a81945d4cd8911322bab548f2a 3 | AssemblyDefinitionImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "com.unity.ads.ios-support", 3 | "displayName":"iOS 14 Advertising Support", 4 | "version": "1.2.0", 5 | "unity": "2018.4", 6 | "description": "Provides support for App Tracking Transparency and SkAdNetwork API newly introduced in Apple iOS 14.\n\nIncludes a sample implementation of a customizable context screen to show before requesting tracking permission.", 7 | "dependencies": { 8 | }, 9 | "_upm": { 10 | "gameService": { 11 | "groupIndex": 4, 12 | "groupName": "Monetization" 13 | }, 14 | "supportedPlatforms": [ 15 | "iOS" 16 | ] 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /com.unity.ads.ios-support/package.json.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 59f47ddbbfc5d4497b69fcaa8fd81356 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | --------------------------------------------------------------------------------