├── .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 |
--------------------------------------------------------------------------------