Compare commits
119 Commits
55c243ba64
...
savya
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a15b08df0c | ||
|
|
8c6962762c | ||
|
|
fd3c13e470 | ||
|
|
7d85a0be1d | ||
|
|
f08635225d | ||
|
|
36cf9cdad1 | ||
|
|
435988ca70 | ||
|
|
176d95ec6a | ||
|
|
f63c0c9d5e | ||
|
|
4eccde41b5 | ||
|
|
68bea947fe | ||
|
|
0b9d0ca8f2 | ||
|
|
521b5c3b7d | ||
|
|
ec4288e97a | ||
|
|
d406f41acc | ||
|
|
144bac177f | ||
|
|
a07f7618ab | ||
|
|
70b8dd2b95 | ||
|
|
220d651cfb | ||
|
|
e27d0e54cb | ||
|
|
dee4b004bd | ||
|
|
2462d972e3 | ||
|
|
e3f047de2b | ||
|
|
0bfcfa3038 | ||
|
|
b4e0cb0530 | ||
|
|
f81a17e1f5 | ||
|
|
64b383fe6e | ||
|
|
46b5bcc978 | ||
|
|
28f431f26a | ||
|
|
abc3df086d | ||
|
|
d3cc23a1ce | ||
|
|
1641ed6b3c | ||
|
|
4976bf14ca | ||
|
|
cb82705189 | ||
|
|
705d6b4825 | ||
|
|
89011184d5 | ||
|
|
28810235a5 | ||
|
|
f9826325c6 | ||
|
|
140a252350 | ||
|
|
82386cae08 | ||
|
|
0c39c1a229 | ||
|
|
e821d4e65e | ||
|
|
d700760524 | ||
|
|
0bf6f64548 | ||
|
|
ac0f3a458a | ||
|
|
6f79bcd018 | ||
|
|
384176fdcc | ||
|
|
5c7a9f38a9 | ||
|
|
113b82bd46 | ||
|
|
3e5ff544bf | ||
|
|
b74af8867e | ||
|
|
b669bcc0e0 | ||
|
|
9b6100b5bb | ||
|
|
f51286468a | ||
|
|
8a4a84dadf | ||
|
|
9b2e4c915c | ||
|
|
84689a6755 | ||
|
|
41c9969996 | ||
|
|
c6b06bb5ee | ||
|
|
0b22ed6d09 | ||
|
|
47fb204446 | ||
|
|
676b389244 | ||
|
|
931515193a | ||
|
|
02a58a1652 | ||
|
|
5b2a30a7f6 | ||
|
|
2d519a37b4 | ||
|
|
67c8507fd6 | ||
|
|
386760842c | ||
|
|
166128fa8f | ||
|
|
940fed41be | ||
|
|
aa51dd3882 | ||
|
|
9e1eea664c | ||
|
|
f970210e64 | ||
|
|
6872158d2d | ||
|
|
b39d2a798c | ||
|
|
c899da030a | ||
|
|
e63fea3712 | ||
|
|
44bdb3286c | ||
|
|
6c14eaaacf | ||
|
|
c57189de80 | ||
|
|
75b34c6ef7 | ||
|
|
75fae9e76c | ||
|
|
b4d10f62cb | ||
|
|
7a4bd29b57 | ||
| 378b00096a | |||
|
|
b78678a6d8 | ||
|
|
6d9b096e8e | ||
|
|
774a7159d3 | ||
|
|
919169157e | ||
| 96e69c3d1a | |||
|
|
a51a73efdd | ||
|
|
3914adaa84 | ||
|
|
4e8f2ae7ad | ||
| bdac5b485f | |||
|
|
b3c096a150 | ||
|
|
9899a8b549 | ||
|
|
820f614415 | ||
| 92aa1d2751 | |||
|
|
9ac752b23c | ||
| 252c1b8a41 | |||
|
|
f9a2532495 | ||
|
|
e6b6683feb | ||
| b16f535499 | |||
|
|
9ad3c34099 | ||
|
|
09ad3469f2 | ||
|
|
98fbad9233 | ||
| 380e8b63bd | |||
|
|
d239dbd9b5 | ||
|
|
3f14d0b346 | ||
|
|
86bf52ced4 | ||
|
|
4064df19bc | ||
|
|
01ec3bec54 | ||
| e96fefa642 | |||
|
|
0e50fa5e55 | ||
|
|
f1b0834a72 | ||
|
|
af5c181f32 | ||
|
|
f1f3a35c6d | ||
|
|
84fea79158 | ||
|
|
e5b63e158c |
7
.idea/.idea.Colorbook/.idea/discord.xml
generated
Normal file
7
.idea/.idea.Colorbook/.idea/discord.xml
generated
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="DiscordProjectSettings">
|
||||||
|
<option name="show" value="PROJECT_FILES" />
|
||||||
|
<option name="description" value="" />
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
BIN
Assets/.DS_Store
vendored
BIN
Assets/.DS_Store
vendored
Binary file not shown.
@@ -1,5 +1,5 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: d63726aaa9398f341a1a923bc039c446
|
guid: c8b638aef696442fdbe1f63b72b29ddb
|
||||||
folderAsset: yes
|
folderAsset: yes
|
||||||
DefaultImporter:
|
DefaultImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &11400000
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: dea69d41f90c6ea4fa55c27c1d60c145, type: 3}
|
||||||
|
m_Name: AddressableAssetGroupSortSettings
|
||||||
|
m_EditorClassIdentifier: Unity.Addressables.Editor::UnityEditor.AddressableAssets.Settings.GroupSchemas.AddressableAssetGroupSortSettings
|
||||||
|
sortOrder:
|
||||||
|
- 2c56f39dfa281426bbb0636a757c203b
|
||||||
|
- 01d1da4daa82a469884449cd7ea9e22e
|
||||||
|
- 86e13c2ac495848d99c739840b7d38e9
|
||||||
|
- 0e030d5498bfe4ffd8443c796618c539
|
||||||
|
- c0e2d4d32411e46a6a3dd5cdfa6dbe7e
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: f796759d1e60b4d0fa5a96ad807748e0
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
121
Assets/AddressableAssetsData/AddressableAssetSettings.asset
Normal file
121
Assets/AddressableAssetsData/AddressableAssetSettings.asset
Normal file
@@ -0,0 +1,121 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &11400000
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 468a46d0ae32c3544b7d98094e6448a9, type: 3}
|
||||||
|
m_Name: AddressableAssetSettings
|
||||||
|
m_EditorClassIdentifier: Unity.Addressables.Editor::UnityEditor.AddressableAssets.Settings.AddressableAssetSettings
|
||||||
|
m_DefaultGroup: 0e030d5498bfe4ffd8443c796618c539
|
||||||
|
m_currentHash:
|
||||||
|
serializedVersion: 2
|
||||||
|
Hash: f172661451d53007cd560d2db7f013f5
|
||||||
|
m_OptimizeCatalogSize: 0
|
||||||
|
m_BuildRemoteCatalog: 0
|
||||||
|
m_CatalogRequestsTimeout: 0
|
||||||
|
m_DisableCatalogUpdateOnStart: 0
|
||||||
|
m_InternalIdNamingMode: 0
|
||||||
|
m_InternalBundleIdMode: 1
|
||||||
|
m_AssetLoadMode: 0
|
||||||
|
m_BundledAssetProviderType:
|
||||||
|
m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
|
||||||
|
m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.BundledAssetProvider
|
||||||
|
m_AssetBundleProviderType:
|
||||||
|
m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
|
||||||
|
m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider
|
||||||
|
m_IgnoreUnsupportedFilesInBuild: 0
|
||||||
|
m_UniqueBundleIds: 0
|
||||||
|
m_EnableJsonCatalog: 0
|
||||||
|
m_NonRecursiveBuilding: 1
|
||||||
|
m_AllowNestedBundleFolders: 0
|
||||||
|
m_CCDEnabled: 0
|
||||||
|
m_maxConcurrentWebRequests: 3
|
||||||
|
m_UseUWRForLocalBundles: 0
|
||||||
|
m_BundleTimeout: 0
|
||||||
|
m_BundleRetryCount: 0
|
||||||
|
m_BundleRedirectLimit: -1
|
||||||
|
m_SharedBundleSettings: 0
|
||||||
|
m_SharedBundleSettingsCustomGroupIndex: 0
|
||||||
|
m_simulatedLoadDelay: 0.1
|
||||||
|
m_ContiguousBundles: 1
|
||||||
|
m_StripUnityVersionFromBundleBuild: 0
|
||||||
|
m_DisableVisibleSubAssetRepresentations: 0
|
||||||
|
m_BuiltInBundleNaming: 0
|
||||||
|
mBuiltInBundleCustomNaming:
|
||||||
|
m_MonoScriptBundleNaming: 0
|
||||||
|
m_CheckForContentUpdateRestrictionsOption: 0
|
||||||
|
m_MonoScriptBundleCustomNaming:
|
||||||
|
m_RemoteCatalogBuildPath:
|
||||||
|
m_Id:
|
||||||
|
m_RemoteCatalogLoadPath:
|
||||||
|
m_Id:
|
||||||
|
m_ContentStateBuildPathProfileVariableName:
|
||||||
|
m_CustomContentStateBuildPath:
|
||||||
|
m_ContentStateBuildPath:
|
||||||
|
m_BuildAddressablesWithPlayerBuild: 1
|
||||||
|
m_overridePlayerVersion: '[UnityEditor.PlayerSettings.bundleVersion]'
|
||||||
|
m_GroupAssets:
|
||||||
|
- {fileID: 11400000, guid: ec9d910e81be14a1484f351f20d32f6f, type: 2}
|
||||||
|
- {fileID: 11400000, guid: 884c7b3ae8a8543379b1b771a9b8ab47, type: 2}
|
||||||
|
- {fileID: 11400000, guid: 9fdea8257283a49d4a1a7181623bdade, type: 2}
|
||||||
|
- {fileID: 11400000, guid: fda2e763202c2462b857e04c29824b23, type: 2}
|
||||||
|
- {fileID: 11400000, guid: 9813579a74a7640e182c85c4bdeb3852, type: 2}
|
||||||
|
m_BuildSettings:
|
||||||
|
m_LogResourceManagerExceptions: 1
|
||||||
|
m_BundleBuildPath: Temp/com.unity.addressables/AssetBundles
|
||||||
|
m_ProfileSettings:
|
||||||
|
m_Profiles:
|
||||||
|
- m_InheritedParent:
|
||||||
|
m_Id: c89112ad434ca42f98f89b640abd8cab
|
||||||
|
m_ProfileName: Default
|
||||||
|
m_Values:
|
||||||
|
- m_Id: 1e7b566e879b2426f9a706a71f9612bf
|
||||||
|
m_Value: '[UnityEngine.AddressableAssets.Addressables.BuildPath]/[BuildTarget]'
|
||||||
|
- m_Id: 34a950f5bf1ec43308379e14c27a6107
|
||||||
|
m_Value: <undefined>
|
||||||
|
- m_Id: 3738fa70e58064cd68ff0a4fa6751e2c
|
||||||
|
m_Value: '[UnityEditor.EditorUserBuildSettings.activeBuildTarget]'
|
||||||
|
- m_Id: 9c4f75e30fc4c4365b87a65cb2561271
|
||||||
|
m_Value: 'ServerData/[BuildTarget]'
|
||||||
|
- m_Id: e2253d243607142b0a072c38c39ccb14
|
||||||
|
m_Value: '{UnityEngine.AddressableAssets.Addressables.RuntimePath}/[BuildTarget]'
|
||||||
|
m_ProfileEntryNames:
|
||||||
|
- m_Id: 1e7b566e879b2426f9a706a71f9612bf
|
||||||
|
m_Name: Local.BuildPath
|
||||||
|
m_InlineUsage: 0
|
||||||
|
- m_Id: 34a950f5bf1ec43308379e14c27a6107
|
||||||
|
m_Name: Remote.LoadPath
|
||||||
|
m_InlineUsage: 0
|
||||||
|
- m_Id: 3738fa70e58064cd68ff0a4fa6751e2c
|
||||||
|
m_Name: BuildTarget
|
||||||
|
m_InlineUsage: 0
|
||||||
|
- m_Id: 9c4f75e30fc4c4365b87a65cb2561271
|
||||||
|
m_Name: Remote.BuildPath
|
||||||
|
m_InlineUsage: 0
|
||||||
|
- m_Id: e2253d243607142b0a072c38c39ccb14
|
||||||
|
m_Name: Local.LoadPath
|
||||||
|
m_InlineUsage: 0
|
||||||
|
m_ProfileVersion: 1
|
||||||
|
m_LabelTable:
|
||||||
|
m_LabelNames:
|
||||||
|
- default
|
||||||
|
- drawing
|
||||||
|
m_SchemaTemplates: []
|
||||||
|
m_GroupTemplateObjects:
|
||||||
|
- {fileID: 11400000, guid: 08cea37bc40c14d2696479a6530b6f35, type: 2}
|
||||||
|
m_InitializationObjects: []
|
||||||
|
m_CertificateHandlerType:
|
||||||
|
m_AssemblyName:
|
||||||
|
m_ClassName:
|
||||||
|
m_ActivePlayerDataBuilderIndex: 2
|
||||||
|
m_DataBuilders:
|
||||||
|
- {fileID: 11400000, guid: f526556ea7afe4e46834c815e9a639cd, type: 2}
|
||||||
|
- {fileID: 11400000, guid: 3ceb2a1f50919486ab0d61a56d99159b, type: 2}
|
||||||
|
- {fileID: 11400000, guid: d41d540cab5ec4738be305b83c9580a8, type: 2}
|
||||||
|
m_ActiveProfileId: c89112ad434ca42f98f89b640abd8cab
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 4a94ef317c3674edd8270e4ed15031f6
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: 227c245961aab4de9b09eae4fe4a619c
|
guid: 9fb2ea5fa9e054d2daab312c3be4d727
|
||||||
folderAsset: yes
|
folderAsset: yes
|
||||||
DefaultImporter:
|
DefaultImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: d54fa8b2c22014496a84c508d897dcdd
|
guid: e2183be643a8c45cf9da3dc66e711220
|
||||||
folderAsset: yes
|
folderAsset: yes
|
||||||
DefaultImporter:
|
DefaultImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
@@ -0,0 +1,79 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &-3075560517811465438
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 5834b5087d578d24c926ce20cd31e6d6, type: 3}
|
||||||
|
m_Name: ContentUpdateGroupSchema
|
||||||
|
m_EditorClassIdentifier: Unity.Addressables.Editor::UnityEditor.AddressableAssets.Settings.GroupSchemas.ContentUpdateGroupSchema
|
||||||
|
m_Group: {fileID: 0}
|
||||||
|
m_StaticContent: 0
|
||||||
|
--- !u!114 &11400000
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 1a3c5d64ac83548c09dd1678b9f6f1cd, type: 3}
|
||||||
|
m_Name: Packed Assets
|
||||||
|
m_EditorClassIdentifier: Unity.Addressables.Editor::UnityEditor.AddressableAssets.Settings.AddressableAssetGroupTemplate
|
||||||
|
m_SchemaObjects:
|
||||||
|
- {fileID: 4209391874149243162}
|
||||||
|
- {fileID: -3075560517811465438}
|
||||||
|
m_Description: Pack assets into asset bundles.
|
||||||
|
m_Settings: {fileID: 11400000, guid: 4a94ef317c3674edd8270e4ed15031f6, type: 2}
|
||||||
|
--- !u!114 &4209391874149243162
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: e5d17a21594effb4e9591490b009e7aa, type: 3}
|
||||||
|
m_Name: BundledAssetGroupSchema
|
||||||
|
m_EditorClassIdentifier: Unity.Addressables.Editor::UnityEditor.AddressableAssets.Settings.GroupSchemas.BundledAssetGroupSchema
|
||||||
|
m_Group: {fileID: 0}
|
||||||
|
m_InternalBundleIdMode: 1
|
||||||
|
m_Compression: 1
|
||||||
|
m_IncludeAddressInCatalog: 1
|
||||||
|
m_IncludeGUIDInCatalog: 1
|
||||||
|
m_IncludeLabelsInCatalog: 1
|
||||||
|
m_InternalIdNamingMode: 0
|
||||||
|
m_CacheClearBehavior: 0
|
||||||
|
m_IncludeInBuild: 1
|
||||||
|
m_BundledAssetProviderType:
|
||||||
|
m_AssemblyName:
|
||||||
|
m_ClassName:
|
||||||
|
m_StripDownloadOptions: 0
|
||||||
|
m_ForceUniqueProvider: 0
|
||||||
|
m_UseAssetBundleCache: 1
|
||||||
|
m_UseAssetBundleCrc: 1
|
||||||
|
m_UseAssetBundleCrcForCachedBundles: 1
|
||||||
|
m_UseUWRForLocalBundles: 0
|
||||||
|
m_Timeout: 0
|
||||||
|
m_ChunkedTransfer: 0
|
||||||
|
m_RedirectLimit: -1
|
||||||
|
m_RetryCount: 0
|
||||||
|
m_BuildPath:
|
||||||
|
m_Id:
|
||||||
|
m_LoadPath:
|
||||||
|
m_Id:
|
||||||
|
m_BundleMode: 0
|
||||||
|
m_AssetBundleProviderType:
|
||||||
|
m_AssemblyName:
|
||||||
|
m_ClassName:
|
||||||
|
m_UseDefaultSchemaSettings: 0
|
||||||
|
m_SelectedPathPairIndex: 0
|
||||||
|
m_BundleNaming: 0
|
||||||
|
m_AssetLoadMode: 0
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 08cea37bc40c14d2696479a6530b6f35
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: 88abeaac3da9d499288f8b5a1830cebc
|
guid: e17197a018a544cf9a9311abca69fdc6
|
||||||
folderAsset: yes
|
folderAsset: yes
|
||||||
DefaultImporter:
|
DefaultImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &11400000
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: bbb281ee3bf0b054c82ac2347e9e782c, type: 3}
|
||||||
|
m_Name: Default Local Group
|
||||||
|
m_EditorClassIdentifier: Unity.Addressables.Editor::UnityEditor.AddressableAssets.Settings.AddressableAssetGroup
|
||||||
|
m_GroupName: Default Local Group
|
||||||
|
m_GUID: 0e030d5498bfe4ffd8443c796618c539
|
||||||
|
m_SerializeEntries:
|
||||||
|
- m_GUID: 319873779c4b440c3ad40798aa697460
|
||||||
|
m_Address: ColorButton
|
||||||
|
m_ReadOnly: 0
|
||||||
|
m_SerializedLabels: []
|
||||||
|
FlaggedDuringContentUpdateRestriction: 0
|
||||||
|
- m_GUID: ba3eb5e9b32d64a50bd717a07541ee18
|
||||||
|
m_Address: ShapePiece
|
||||||
|
m_ReadOnly: 0
|
||||||
|
m_SerializedLabels: []
|
||||||
|
FlaggedDuringContentUpdateRestriction: 0
|
||||||
|
m_ReadOnly: 0
|
||||||
|
m_Settings: {fileID: 11400000, guid: 4a94ef317c3674edd8270e4ed15031f6, type: 2}
|
||||||
|
m_SchemaSet:
|
||||||
|
m_Schemas:
|
||||||
|
- {fileID: 11400000, guid: 6e242ee26316a45feafd94b1e8eeec6b, type: 2}
|
||||||
|
- {fileID: 11400000, guid: 076ccd8096b244b4cbf586866800306c, type: 2}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 884c7b3ae8a8543379b1b771a9b8ab47
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
125
Assets/AddressableAssetsData/AssetGroups/Drawing.asset
Normal file
125
Assets/AddressableAssetsData/AssetGroups/Drawing.asset
Normal file
@@ -0,0 +1,125 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &11400000
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: bbb281ee3bf0b054c82ac2347e9e782c, type: 3}
|
||||||
|
m_Name: Drawing
|
||||||
|
m_EditorClassIdentifier: Unity.Addressables.Editor::UnityEditor.AddressableAssets.Settings.AddressableAssetGroup
|
||||||
|
m_GroupName: Drawing
|
||||||
|
m_GUID: 2c56f39dfa281426bbb0636a757c203b
|
||||||
|
m_SerializeEntries:
|
||||||
|
- m_GUID: 01326847cbf6ead41ac519224a2381a7
|
||||||
|
m_Address: Earphone
|
||||||
|
m_ReadOnly: 0
|
||||||
|
m_SerializedLabels:
|
||||||
|
- drawing
|
||||||
|
FlaggedDuringContentUpdateRestriction: 0
|
||||||
|
- m_GUID: 14477b5d35d0be9439ecb935f1c4e64e
|
||||||
|
m_Address: Donut
|
||||||
|
m_ReadOnly: 0
|
||||||
|
m_SerializedLabels:
|
||||||
|
- drawing
|
||||||
|
FlaggedDuringContentUpdateRestriction: 0
|
||||||
|
- m_GUID: 2043f692673a79543afed5cb879f0e04
|
||||||
|
m_Address: Five
|
||||||
|
m_ReadOnly: 0
|
||||||
|
m_SerializedLabels:
|
||||||
|
- drawing
|
||||||
|
FlaggedDuringContentUpdateRestriction: 0
|
||||||
|
- m_GUID: 239bd4d142f84024996594b45f4925d5
|
||||||
|
m_Address: Boat
|
||||||
|
m_ReadOnly: 0
|
||||||
|
m_SerializedLabels:
|
||||||
|
- drawing
|
||||||
|
FlaggedDuringContentUpdateRestriction: 0
|
||||||
|
- m_GUID: 2d55441a1a6751c45bb9af623301426e
|
||||||
|
m_Address: Car
|
||||||
|
m_ReadOnly: 0
|
||||||
|
m_SerializedLabels:
|
||||||
|
- drawing
|
||||||
|
FlaggedDuringContentUpdateRestriction: 0
|
||||||
|
- m_GUID: 364f644d962504fa7ac2f382800014ea
|
||||||
|
m_Address: apple
|
||||||
|
m_ReadOnly: 0
|
||||||
|
m_SerializedLabels:
|
||||||
|
- drawing
|
||||||
|
FlaggedDuringContentUpdateRestriction: 0
|
||||||
|
- m_GUID: 4474b93704045a740ba9b8114e8a5238
|
||||||
|
m_Address: Fish
|
||||||
|
m_ReadOnly: 0
|
||||||
|
m_SerializedLabels:
|
||||||
|
- drawing
|
||||||
|
FlaggedDuringContentUpdateRestriction: 0
|
||||||
|
- m_GUID: 478bf0db3a98f1941a5d25414ba9f87d
|
||||||
|
m_Address: Train
|
||||||
|
m_ReadOnly: 0
|
||||||
|
m_SerializedLabels:
|
||||||
|
- drawing
|
||||||
|
FlaggedDuringContentUpdateRestriction: 0
|
||||||
|
- m_GUID: 62ae112e11b695a40b889d773a36f8bd
|
||||||
|
m_Address: Elephant
|
||||||
|
m_ReadOnly: 0
|
||||||
|
m_SerializedLabels:
|
||||||
|
- drawing
|
||||||
|
FlaggedDuringContentUpdateRestriction: 0
|
||||||
|
- m_GUID: 6e36ba5d4763c694289c8ca75ee81449
|
||||||
|
m_Address: Bus
|
||||||
|
m_ReadOnly: 0
|
||||||
|
m_SerializedLabels:
|
||||||
|
- drawing
|
||||||
|
FlaggedDuringContentUpdateRestriction: 0
|
||||||
|
- m_GUID: 8cdc379bbe2529a419e5ce0eedcbb09e
|
||||||
|
m_Address: Giraffe
|
||||||
|
m_ReadOnly: 0
|
||||||
|
m_SerializedLabels:
|
||||||
|
- drawing
|
||||||
|
FlaggedDuringContentUpdateRestriction: 0
|
||||||
|
- m_GUID: 971be7b01d5eef24fa58094805ea92b9
|
||||||
|
m_Address: Kite
|
||||||
|
m_ReadOnly: 0
|
||||||
|
m_SerializedLabels:
|
||||||
|
- drawing
|
||||||
|
FlaggedDuringContentUpdateRestriction: 0
|
||||||
|
- m_GUID: 977dc7dac5ee6b543b8ed47c2299919e
|
||||||
|
m_Address: Airplane
|
||||||
|
m_ReadOnly: 0
|
||||||
|
m_SerializedLabels:
|
||||||
|
- drawing
|
||||||
|
FlaggedDuringContentUpdateRestriction: 0
|
||||||
|
- m_GUID: a2ef043d1d7051c47a68e2ebce7bd3dd
|
||||||
|
m_Address: Dog
|
||||||
|
m_ReadOnly: 0
|
||||||
|
m_SerializedLabels:
|
||||||
|
- drawing
|
||||||
|
FlaggedDuringContentUpdateRestriction: 0
|
||||||
|
- m_GUID: dc24a6d2802de5d4298d1da3d1415e97
|
||||||
|
m_Address: Envelop
|
||||||
|
m_ReadOnly: 0
|
||||||
|
m_SerializedLabels:
|
||||||
|
- drawing
|
||||||
|
FlaggedDuringContentUpdateRestriction: 0
|
||||||
|
- m_GUID: df588da411a3e08468106a8317fdbd1e
|
||||||
|
m_Address: Ball
|
||||||
|
m_ReadOnly: 0
|
||||||
|
m_SerializedLabels:
|
||||||
|
- drawing
|
||||||
|
FlaggedDuringContentUpdateRestriction: 0
|
||||||
|
- m_GUID: f3200c6715fea4a41bc71c0314b519cd
|
||||||
|
m_Address: Frog
|
||||||
|
m_ReadOnly: 0
|
||||||
|
m_SerializedLabels:
|
||||||
|
- drawing
|
||||||
|
FlaggedDuringContentUpdateRestriction: 0
|
||||||
|
m_ReadOnly: 0
|
||||||
|
m_Settings: {fileID: 11400000, guid: 4a94ef317c3674edd8270e4ed15031f6, type: 2}
|
||||||
|
m_SchemaSet:
|
||||||
|
m_Schemas:
|
||||||
|
- {fileID: 11400000, guid: c68aac65911cf47a9aa8b3355994402c, type: 2}
|
||||||
|
- {fileID: 11400000, guid: 4b166a28895af465ca9a684ed07eac42, type: 2}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 9fdea8257283a49d4a1a7181623bdade
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
28
Assets/AddressableAssetsData/AssetGroups/Palettes.asset
Normal file
28
Assets/AddressableAssetsData/AssetGroups/Palettes.asset
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &11400000
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: bbb281ee3bf0b054c82ac2347e9e782c, type: 3}
|
||||||
|
m_Name: Palettes
|
||||||
|
m_EditorClassIdentifier: Unity.Addressables.Editor::UnityEditor.AddressableAssets.Settings.AddressableAssetGroup
|
||||||
|
m_GroupName: Palettes
|
||||||
|
m_GUID: 01d1da4daa82a469884449cd7ea9e22e
|
||||||
|
m_SerializeEntries:
|
||||||
|
- m_GUID: 00f9beb81415a4193abff0aa201ab75b
|
||||||
|
m_Address: defaultPalette
|
||||||
|
m_ReadOnly: 0
|
||||||
|
m_SerializedLabels: []
|
||||||
|
FlaggedDuringContentUpdateRestriction: 0
|
||||||
|
m_ReadOnly: 0
|
||||||
|
m_Settings: {fileID: 11400000, guid: 4a94ef317c3674edd8270e4ed15031f6, type: 2}
|
||||||
|
m_SchemaSet:
|
||||||
|
m_Schemas:
|
||||||
|
- {fileID: 11400000, guid: 5c191a09b8bef451b9f74c11840d3273, type: 2}
|
||||||
|
- {fileID: 11400000, guid: e42d0727bb3974fe596fc2f19e02b7a0, type: 2}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: ec9d910e81be14a1484f351f20d32f6f
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
38
Assets/AddressableAssetsData/AssetGroups/Scenes.asset
Normal file
38
Assets/AddressableAssetsData/AssetGroups/Scenes.asset
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &11400000
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: bbb281ee3bf0b054c82ac2347e9e782c, type: 3}
|
||||||
|
m_Name: Scenes
|
||||||
|
m_EditorClassIdentifier: Unity.Addressables.Editor::UnityEditor.AddressableAssets.Settings.AddressableAssetGroup
|
||||||
|
m_GroupName: Scenes
|
||||||
|
m_GUID: 86e13c2ac495848d99c739840b7d38e9
|
||||||
|
m_SerializeEntries:
|
||||||
|
- m_GUID: 10aca8a0883a60447b95ad82d2cf3a98
|
||||||
|
m_Address: MainMenu
|
||||||
|
m_ReadOnly: 0
|
||||||
|
m_SerializedLabels: []
|
||||||
|
FlaggedDuringContentUpdateRestriction: 0
|
||||||
|
- m_GUID: 145ae55f6571bfe4fbadaefb863ba69d
|
||||||
|
m_Address: Colorbook
|
||||||
|
m_ReadOnly: 0
|
||||||
|
m_SerializedLabels: []
|
||||||
|
FlaggedDuringContentUpdateRestriction: 0
|
||||||
|
- m_GUID: e5f73f24e812e4a98b4c17d533fd3d6d
|
||||||
|
m_Address: Gameplay
|
||||||
|
m_ReadOnly: 0
|
||||||
|
m_SerializedLabels: []
|
||||||
|
FlaggedDuringContentUpdateRestriction: 0
|
||||||
|
m_ReadOnly: 0
|
||||||
|
m_Settings: {fileID: 11400000, guid: 4a94ef317c3674edd8270e4ed15031f6, type: 2}
|
||||||
|
m_SchemaSet:
|
||||||
|
m_Schemas:
|
||||||
|
- {fileID: 11400000, guid: a5cf35bcd13d04097ab3d9deda768da4, type: 2}
|
||||||
|
- {fileID: 11400000, guid: 0a5a80c14fb1540f2b21658407e2ad4e, type: 2}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: fda2e763202c2462b857e04c29824b23
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
8
Assets/AddressableAssetsData/AssetGroups/Schemas.meta
Normal file
8
Assets/AddressableAssetsData/AssetGroups/Schemas.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 3788c6b91fad7422a8b4411cbcbab0c2
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &11400000
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: e5d17a21594effb4e9591490b009e7aa, type: 3}
|
||||||
|
m_Name: Default Local Group_BundledAssetGroupSchema
|
||||||
|
m_EditorClassIdentifier: Unity.Addressables.Editor::UnityEditor.AddressableAssets.Settings.GroupSchemas.BundledAssetGroupSchema
|
||||||
|
m_Group: {fileID: 11400000, guid: 884c7b3ae8a8543379b1b771a9b8ab47, type: 2}
|
||||||
|
m_InternalBundleIdMode: 1
|
||||||
|
m_Compression: 1
|
||||||
|
m_IncludeAddressInCatalog: 1
|
||||||
|
m_IncludeGUIDInCatalog: 1
|
||||||
|
m_IncludeLabelsInCatalog: 1
|
||||||
|
m_InternalIdNamingMode: 0
|
||||||
|
m_CacheClearBehavior: 0
|
||||||
|
m_IncludeInBuild: 1
|
||||||
|
m_BundledAssetProviderType:
|
||||||
|
m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
|
||||||
|
m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.BundledAssetProvider
|
||||||
|
m_StripDownloadOptions: 0
|
||||||
|
m_ForceUniqueProvider: 0
|
||||||
|
m_UseAssetBundleCache: 1
|
||||||
|
m_UseAssetBundleCrc: 1
|
||||||
|
m_UseAssetBundleCrcForCachedBundles: 1
|
||||||
|
m_UseUWRForLocalBundles: 0
|
||||||
|
m_Timeout: 0
|
||||||
|
m_ChunkedTransfer: 0
|
||||||
|
m_RedirectLimit: -1
|
||||||
|
m_RetryCount: 0
|
||||||
|
m_BuildPath:
|
||||||
|
m_Id: 1e7b566e879b2426f9a706a71f9612bf
|
||||||
|
m_LoadPath:
|
||||||
|
m_Id: e2253d243607142b0a072c38c39ccb14
|
||||||
|
m_BundleMode: 0
|
||||||
|
m_AssetBundleProviderType:
|
||||||
|
m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
|
||||||
|
m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider
|
||||||
|
m_UseDefaultSchemaSettings: 0
|
||||||
|
m_SelectedPathPairIndex: 0
|
||||||
|
m_BundleNaming: 0
|
||||||
|
m_AssetLoadMode: 0
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 6e242ee26316a45feafd94b1e8eeec6b
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &11400000
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 5834b5087d578d24c926ce20cd31e6d6, type: 3}
|
||||||
|
m_Name: Default Local Group_ContentUpdateGroupSchema
|
||||||
|
m_EditorClassIdentifier: Unity.Addressables.Editor::UnityEditor.AddressableAssets.Settings.GroupSchemas.ContentUpdateGroupSchema
|
||||||
|
m_Group: {fileID: 11400000, guid: 884c7b3ae8a8543379b1b771a9b8ab47, type: 2}
|
||||||
|
m_StaticContent: 0
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 076ccd8096b244b4cbf586866800306c
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &11400000
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: e5d17a21594effb4e9591490b009e7aa, type: 3}
|
||||||
|
m_Name: Drawing_BundledAssetGroupSchema
|
||||||
|
m_EditorClassIdentifier: Unity.Addressables.Editor::UnityEditor.AddressableAssets.Settings.GroupSchemas.BundledAssetGroupSchema
|
||||||
|
m_Group: {fileID: 11400000, guid: 9fdea8257283a49d4a1a7181623bdade, type: 2}
|
||||||
|
m_InternalBundleIdMode: 1
|
||||||
|
m_Compression: 1
|
||||||
|
m_IncludeAddressInCatalog: 1
|
||||||
|
m_IncludeGUIDInCatalog: 1
|
||||||
|
m_IncludeLabelsInCatalog: 1
|
||||||
|
m_InternalIdNamingMode: 0
|
||||||
|
m_CacheClearBehavior: 0
|
||||||
|
m_IncludeInBuild: 1
|
||||||
|
m_BundledAssetProviderType:
|
||||||
|
m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
|
||||||
|
m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.BundledAssetProvider
|
||||||
|
m_StripDownloadOptions: 0
|
||||||
|
m_ForceUniqueProvider: 0
|
||||||
|
m_UseAssetBundleCache: 1
|
||||||
|
m_UseAssetBundleCrc: 1
|
||||||
|
m_UseAssetBundleCrcForCachedBundles: 1
|
||||||
|
m_UseUWRForLocalBundles: 0
|
||||||
|
m_Timeout: 0
|
||||||
|
m_ChunkedTransfer: 0
|
||||||
|
m_RedirectLimit: -1
|
||||||
|
m_RetryCount: 0
|
||||||
|
m_BuildPath:
|
||||||
|
m_Id: 1e7b566e879b2426f9a706a71f9612bf
|
||||||
|
m_LoadPath:
|
||||||
|
m_Id: e2253d243607142b0a072c38c39ccb14
|
||||||
|
m_BundleMode: 0
|
||||||
|
m_AssetBundleProviderType:
|
||||||
|
m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
|
||||||
|
m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider
|
||||||
|
m_UseDefaultSchemaSettings: 0
|
||||||
|
m_SelectedPathPairIndex: 0
|
||||||
|
m_BundleNaming: 0
|
||||||
|
m_AssetLoadMode: 0
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: c68aac65911cf47a9aa8b3355994402c
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &11400000
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 5834b5087d578d24c926ce20cd31e6d6, type: 3}
|
||||||
|
m_Name: Drawing_ContentUpdateGroupSchema
|
||||||
|
m_EditorClassIdentifier: Unity.Addressables.Editor::UnityEditor.AddressableAssets.Settings.GroupSchemas.ContentUpdateGroupSchema
|
||||||
|
m_Group: {fileID: 11400000, guid: 9fdea8257283a49d4a1a7181623bdade, type: 2}
|
||||||
|
m_StaticContent: 0
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 4b166a28895af465ca9a684ed07eac42
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &11400000
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: e5d17a21594effb4e9591490b009e7aa, type: 3}
|
||||||
|
m_Name: Palettes_BundledAssetGroupSchema
|
||||||
|
m_EditorClassIdentifier: Unity.Addressables.Editor::UnityEditor.AddressableAssets.Settings.GroupSchemas.BundledAssetGroupSchema
|
||||||
|
m_Group: {fileID: 11400000, guid: ec9d910e81be14a1484f351f20d32f6f, type: 2}
|
||||||
|
m_InternalBundleIdMode: 1
|
||||||
|
m_Compression: 1
|
||||||
|
m_IncludeAddressInCatalog: 1
|
||||||
|
m_IncludeGUIDInCatalog: 1
|
||||||
|
m_IncludeLabelsInCatalog: 1
|
||||||
|
m_InternalIdNamingMode: 0
|
||||||
|
m_CacheClearBehavior: 0
|
||||||
|
m_IncludeInBuild: 1
|
||||||
|
m_BundledAssetProviderType:
|
||||||
|
m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
|
||||||
|
m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.BundledAssetProvider
|
||||||
|
m_StripDownloadOptions: 0
|
||||||
|
m_ForceUniqueProvider: 0
|
||||||
|
m_UseAssetBundleCache: 1
|
||||||
|
m_UseAssetBundleCrc: 1
|
||||||
|
m_UseAssetBundleCrcForCachedBundles: 1
|
||||||
|
m_UseUWRForLocalBundles: 0
|
||||||
|
m_Timeout: 0
|
||||||
|
m_ChunkedTransfer: 0
|
||||||
|
m_RedirectLimit: -1
|
||||||
|
m_RetryCount: 0
|
||||||
|
m_BuildPath:
|
||||||
|
m_Id: 1e7b566e879b2426f9a706a71f9612bf
|
||||||
|
m_LoadPath:
|
||||||
|
m_Id: e2253d243607142b0a072c38c39ccb14
|
||||||
|
m_BundleMode: 0
|
||||||
|
m_AssetBundleProviderType:
|
||||||
|
m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
|
||||||
|
m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider
|
||||||
|
m_UseDefaultSchemaSettings: 0
|
||||||
|
m_SelectedPathPairIndex: 0
|
||||||
|
m_BundleNaming: 0
|
||||||
|
m_AssetLoadMode: 0
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 5c191a09b8bef451b9f74c11840d3273
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &11400000
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 5834b5087d578d24c926ce20cd31e6d6, type: 3}
|
||||||
|
m_Name: Palettes_ContentUpdateGroupSchema
|
||||||
|
m_EditorClassIdentifier: Unity.Addressables.Editor::UnityEditor.AddressableAssets.Settings.GroupSchemas.ContentUpdateGroupSchema
|
||||||
|
m_Group: {fileID: 11400000, guid: ec9d910e81be14a1484f351f20d32f6f, type: 2}
|
||||||
|
m_StaticContent: 0
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: e42d0727bb3974fe596fc2f19e02b7a0
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &11400000
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: e5d17a21594effb4e9591490b009e7aa, type: 3}
|
||||||
|
m_Name: Scenes_BundledAssetGroupSchema
|
||||||
|
m_EditorClassIdentifier: Unity.Addressables.Editor::UnityEditor.AddressableAssets.Settings.GroupSchemas.BundledAssetGroupSchema
|
||||||
|
m_Group: {fileID: 11400000, guid: fda2e763202c2462b857e04c29824b23, type: 2}
|
||||||
|
m_InternalBundleIdMode: 1
|
||||||
|
m_Compression: 1
|
||||||
|
m_IncludeAddressInCatalog: 1
|
||||||
|
m_IncludeGUIDInCatalog: 1
|
||||||
|
m_IncludeLabelsInCatalog: 1
|
||||||
|
m_InternalIdNamingMode: 0
|
||||||
|
m_CacheClearBehavior: 0
|
||||||
|
m_IncludeInBuild: 1
|
||||||
|
m_BundledAssetProviderType:
|
||||||
|
m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
|
||||||
|
m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.BundledAssetProvider
|
||||||
|
m_StripDownloadOptions: 0
|
||||||
|
m_ForceUniqueProvider: 0
|
||||||
|
m_UseAssetBundleCache: 1
|
||||||
|
m_UseAssetBundleCrc: 1
|
||||||
|
m_UseAssetBundleCrcForCachedBundles: 1
|
||||||
|
m_UseUWRForLocalBundles: 0
|
||||||
|
m_Timeout: 0
|
||||||
|
m_ChunkedTransfer: 0
|
||||||
|
m_RedirectLimit: -1
|
||||||
|
m_RetryCount: 0
|
||||||
|
m_BuildPath:
|
||||||
|
m_Id: 1e7b566e879b2426f9a706a71f9612bf
|
||||||
|
m_LoadPath:
|
||||||
|
m_Id: e2253d243607142b0a072c38c39ccb14
|
||||||
|
m_BundleMode: 0
|
||||||
|
m_AssetBundleProviderType:
|
||||||
|
m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
|
||||||
|
m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider
|
||||||
|
m_UseDefaultSchemaSettings: 1
|
||||||
|
m_SelectedPathPairIndex: 0
|
||||||
|
m_BundleNaming: 0
|
||||||
|
m_AssetLoadMode: 0
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: a5cf35bcd13d04097ab3d9deda768da4
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &11400000
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 5834b5087d578d24c926ce20cd31e6d6, type: 3}
|
||||||
|
m_Name: Scenes_ContentUpdateGroupSchema
|
||||||
|
m_EditorClassIdentifier: Unity.Addressables.Editor::UnityEditor.AddressableAssets.Settings.GroupSchemas.ContentUpdateGroupSchema
|
||||||
|
m_Group: {fileID: 11400000, guid: fda2e763202c2462b857e04c29824b23, type: 2}
|
||||||
|
m_StaticContent: 0
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 0a5a80c14fb1540f2b21658407e2ad4e
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &11400000
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: e5d17a21594effb4e9591490b009e7aa, type: 3}
|
||||||
|
m_Name: unifiedraytracing_BundledAssetGroupSchema
|
||||||
|
m_EditorClassIdentifier: Unity.Addressables.Editor::UnityEditor.AddressableAssets.Settings.GroupSchemas.BundledAssetGroupSchema
|
||||||
|
m_Group: {fileID: 11400000, guid: 9813579a74a7640e182c85c4bdeb3852, type: 2}
|
||||||
|
m_InternalBundleIdMode: 1
|
||||||
|
m_Compression: 1
|
||||||
|
m_IncludeAddressInCatalog: 1
|
||||||
|
m_IncludeGUIDInCatalog: 1
|
||||||
|
m_IncludeLabelsInCatalog: 1
|
||||||
|
m_InternalIdNamingMode: 0
|
||||||
|
m_CacheClearBehavior: 0
|
||||||
|
m_IncludeInBuild: 1
|
||||||
|
m_BundledAssetProviderType:
|
||||||
|
m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
|
||||||
|
m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.BundledAssetProvider
|
||||||
|
m_StripDownloadOptions: 0
|
||||||
|
m_ForceUniqueProvider: 0
|
||||||
|
m_UseAssetBundleCache: 1
|
||||||
|
m_UseAssetBundleCrc: 1
|
||||||
|
m_UseAssetBundleCrcForCachedBundles: 1
|
||||||
|
m_UseUWRForLocalBundles: 0
|
||||||
|
m_Timeout: 0
|
||||||
|
m_ChunkedTransfer: 0
|
||||||
|
m_RedirectLimit: -1
|
||||||
|
m_RetryCount: 0
|
||||||
|
m_BuildPath:
|
||||||
|
m_Id: 1e7b566e879b2426f9a706a71f9612bf
|
||||||
|
m_LoadPath:
|
||||||
|
m_Id: e2253d243607142b0a072c38c39ccb14
|
||||||
|
m_BundleMode: 0
|
||||||
|
m_AssetBundleProviderType:
|
||||||
|
m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
|
||||||
|
m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider
|
||||||
|
m_UseDefaultSchemaSettings: 0
|
||||||
|
m_SelectedPathPairIndex: 0
|
||||||
|
m_BundleNaming: 0
|
||||||
|
m_AssetLoadMode: 0
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 296bdf7b03b8d43359f85ef04530132c
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &11400000
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 5834b5087d578d24c926ce20cd31e6d6, type: 3}
|
||||||
|
m_Name: unifiedraytracing_ContentUpdateGroupSchema
|
||||||
|
m_EditorClassIdentifier: Unity.Addressables.Editor::UnityEditor.AddressableAssets.Settings.GroupSchemas.ContentUpdateGroupSchema
|
||||||
|
m_Group: {fileID: 11400000, guid: 9813579a74a7640e182c85c4bdeb3852, type: 2}
|
||||||
|
m_StaticContent: 1
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 7c11d136385094b86a30ca58bb9290bb
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -0,0 +1,68 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &11400000
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: bbb281ee3bf0b054c82ac2347e9e782c, type: 3}
|
||||||
|
m_Name: unifiedraytracing
|
||||||
|
m_EditorClassIdentifier: Unity.Addressables.Editor::UnityEditor.AddressableAssets.Settings.AddressableAssetGroup
|
||||||
|
m_GroupName: unifiedraytracing
|
||||||
|
m_GUID: c0e2d4d32411e46a6a3dd5cdfa6dbe7e
|
||||||
|
m_SerializeEntries:
|
||||||
|
- m_GUID: 1ad53a96b58d3c3488dde4f14db1aaeb
|
||||||
|
m_Address: Packages/com.unity.render-pipelines.core/Runtime/UnifiedRayTracing/Compute/RadeonRays/kernels/CopyPositions.compute
|
||||||
|
m_ReadOnly: 0
|
||||||
|
m_SerializedLabels: []
|
||||||
|
FlaggedDuringContentUpdateRestriction: 0
|
||||||
|
- m_GUID: 1b95b5dcf48d1914c9e1e7405c7660e3
|
||||||
|
m_Address: Packages/com.unity.render-pipelines.core/Runtime/UnifiedRayTracing/Common/Utilities/CopyBuffer.compute
|
||||||
|
m_ReadOnly: 0
|
||||||
|
m_SerializedLabels: []
|
||||||
|
FlaggedDuringContentUpdateRestriction: 0
|
||||||
|
- m_GUID: 2d70cd6be91bd7843a39a54b51c15b13
|
||||||
|
m_Address: Packages/com.unity.render-pipelines.core/Runtime/UnifiedRayTracing/Compute/RadeonRays/kernels/build_hlbvh.compute
|
||||||
|
m_ReadOnly: 0
|
||||||
|
m_SerializedLabels: []
|
||||||
|
FlaggedDuringContentUpdateRestriction: 0
|
||||||
|
- m_GUID: 4d6d5de35fa45ef4a92119397a045cc9
|
||||||
|
m_Address: Packages/com.unity.render-pipelines.core/Runtime/UnifiedRayTracing/Compute/RadeonRays/kernels/block_scan.compute
|
||||||
|
m_ReadOnly: 0
|
||||||
|
m_SerializedLabels: []
|
||||||
|
FlaggedDuringContentUpdateRestriction: 0
|
||||||
|
- m_GUID: 4e034cc8ea2635c4e9f063e5ddc7ea7a
|
||||||
|
m_Address: Packages/com.unity.render-pipelines.core/Runtime/UnifiedRayTracing/Compute/RadeonRays/kernels/block_reduce_part.compute
|
||||||
|
m_ReadOnly: 0
|
||||||
|
m_SerializedLabels: []
|
||||||
|
FlaggedDuringContentUpdateRestriction: 0
|
||||||
|
- m_GUID: 56641cb88dcb31a4398a4997ef7a7a8c
|
||||||
|
m_Address: Packages/com.unity.render-pipelines.core/Runtime/UnifiedRayTracing/Compute/RadeonRays/kernels/restructure_bvh.compute
|
||||||
|
m_ReadOnly: 0
|
||||||
|
m_SerializedLabels: []
|
||||||
|
FlaggedDuringContentUpdateRestriction: 0
|
||||||
|
- m_GUID: 8670f7ce4b60cef43bed36148aa1b0a2
|
||||||
|
m_Address: Packages/com.unity.render-pipelines.core/Runtime/UnifiedRayTracing/Compute/RadeonRays/kernels/bit_histogram.compute
|
||||||
|
m_ReadOnly: 0
|
||||||
|
m_SerializedLabels: []
|
||||||
|
FlaggedDuringContentUpdateRestriction: 0
|
||||||
|
- m_GUID: 98e3d58cae7210c4786f67f504c9e899
|
||||||
|
m_Address: Packages/com.unity.render-pipelines.core/Runtime/UnifiedRayTracing/Common/GeometryPool/GeometryPoolKernels.compute
|
||||||
|
m_ReadOnly: 0
|
||||||
|
m_SerializedLabels: []
|
||||||
|
FlaggedDuringContentUpdateRestriction: 0
|
||||||
|
- m_GUID: a2eaeefdac4637a44b734e85b7be9186
|
||||||
|
m_Address: Packages/com.unity.render-pipelines.core/Runtime/UnifiedRayTracing/Compute/RadeonRays/kernels/scatter.compute
|
||||||
|
m_ReadOnly: 0
|
||||||
|
m_SerializedLabels: []
|
||||||
|
FlaggedDuringContentUpdateRestriction: 0
|
||||||
|
m_ReadOnly: 0
|
||||||
|
m_Settings: {fileID: 11400000, guid: 4a94ef317c3674edd8270e4ed15031f6, type: 2}
|
||||||
|
m_SchemaSet:
|
||||||
|
m_Schemas:
|
||||||
|
- {fileID: 11400000, guid: 296bdf7b03b8d43359f85ef04530132c, type: 2}
|
||||||
|
- {fileID: 11400000, guid: 7c11d136385094b86a30ca58bb9290bb, type: 2}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 9813579a74a7640e182c85c4bdeb3852
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
8
Assets/AddressableAssetsData/DataBuilders.meta
Normal file
8
Assets/AddressableAssetsData/DataBuilders.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 6efb7b525cc884a3a96c9f783e28c243
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &11400000
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 88d21199f5d473f4db36845f2318f180, type: 3}
|
||||||
|
m_Name: BuildScriptFastMode
|
||||||
|
m_EditorClassIdentifier: Unity.Addressables.Editor::UnityEditor.AddressableAssets.Build.DataBuilders.BuildScriptFastMode
|
||||||
|
instanceProviderType:
|
||||||
|
m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
|
||||||
|
m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.InstanceProvider
|
||||||
|
sceneProviderType:
|
||||||
|
m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
|
||||||
|
m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.SceneProvider
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: f526556ea7afe4e46834c815e9a639cd
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &11400000
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 3e2e0ffa088c91d41a086d0b8cb16bdc, type: 3}
|
||||||
|
m_Name: BuildScriptPackedMode
|
||||||
|
m_EditorClassIdentifier: Unity.Addressables.Editor::UnityEditor.AddressableAssets.Build.DataBuilders.BuildScriptPackedMode
|
||||||
|
instanceProviderType:
|
||||||
|
m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
|
||||||
|
m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.InstanceProvider
|
||||||
|
sceneProviderType:
|
||||||
|
m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
|
||||||
|
m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.SceneProvider
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: d41d540cab5ec4738be305b83c9580a8
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &11400000
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: ad8c280d42ee0ed41a27db23b43dd2bf, type: 3}
|
||||||
|
m_Name: BuildScriptPackedPlayMode
|
||||||
|
m_EditorClassIdentifier: Unity.Addressables.Editor::UnityEditor.AddressableAssets.Build.DataBuilders.BuildScriptPackedPlayMode
|
||||||
|
instanceProviderType:
|
||||||
|
m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
|
||||||
|
m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.InstanceProvider
|
||||||
|
sceneProviderType:
|
||||||
|
m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
|
||||||
|
m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.SceneProvider
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 3ceb2a1f50919486ab0d61a56d99159b
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
15
Assets/AddressableAssetsData/DefaultObject.asset
Normal file
15
Assets/AddressableAssetsData/DefaultObject.asset
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &11400000
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 3a189bb168d8d90478a09ea08c2f3d72, type: 3}
|
||||||
|
m_Name: DefaultObject
|
||||||
|
m_EditorClassIdentifier: Unity.Addressables.Editor::UnityEditor.AddressableAssets.AddressableAssetSettingsDefaultObject
|
||||||
|
m_AddressableAssetSettingsGuid: 4a94ef317c3674edd8270e4ed15031f6
|
||||||
8
Assets/AddressableAssetsData/DefaultObject.asset.meta
Normal file
8
Assets/AddressableAssetsData/DefaultObject.asset.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 732f53b1f9e534015be7dcd28d7032bd
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
28
Assets/AddressableAssetsData/ProfileDataSourceSettings.asset
Normal file
28
Assets/AddressableAssetsData/ProfileDataSourceSettings.asset
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &11400000
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 7e3976da977cb49238499ea3b4c237ae, type: 3}
|
||||||
|
m_Name: ProfileDataSourceSettings
|
||||||
|
m_EditorClassIdentifier: Unity.Addressables.Editor::UnityEditor.AddressableAssets.Settings.ProfileDataSourceSettings
|
||||||
|
profileGroupTypes:
|
||||||
|
- m_GroupTypePrefix: Built-In
|
||||||
|
m_Variables:
|
||||||
|
- m_Suffix: BuildPath
|
||||||
|
m_Value: '[UnityEngine.AddressableAssets.Addressables.BuildPath]/[BuildTarget]'
|
||||||
|
- m_Suffix: LoadPath
|
||||||
|
m_Value: '{UnityEngine.AddressableAssets.Addressables.RuntimePath}/[BuildTarget]'
|
||||||
|
environments: []
|
||||||
|
currentEnvironment:
|
||||||
|
id:
|
||||||
|
projectId:
|
||||||
|
projectGenesisId:
|
||||||
|
name:
|
||||||
|
isDefault: 0
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 550878786d0cb4f48a8afa99c49a5635
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
8
Assets/AddressableAssetsData/iOS.meta
Normal file
8
Assets/AddressableAssetsData/iOS.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 684ad60441f714a338ca786efcac33b6
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
8
Assets/AppsFlyer.meta
Normal file
8
Assets/AppsFlyer.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 7863556d88b814e09ba9cfc75a91d655
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
71
Assets/AppsFlyer/AFAdRevenueData.cs
Normal file
71
Assets/AppsFlyer/AFAdRevenueData.cs
Normal file
@@ -0,0 +1,71 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace AppsFlyerSDK
|
||||||
|
{
|
||||||
|
public enum MediationNetwork : ulong
|
||||||
|
{
|
||||||
|
GoogleAdMob = 1,
|
||||||
|
IronSource = 2,
|
||||||
|
ApplovinMax = 3,
|
||||||
|
Fyber = 4,
|
||||||
|
Appodeal = 5,
|
||||||
|
Admost = 6,
|
||||||
|
Topon = 7,
|
||||||
|
Tradplus = 8,
|
||||||
|
Yandex = 9,
|
||||||
|
ChartBoost = 10,
|
||||||
|
Unity = 11,
|
||||||
|
ToponPte = 12,
|
||||||
|
Custom = 13,
|
||||||
|
DirectMonetization = 14
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class AdRevenueScheme
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* code ISO 3166-1 format
|
||||||
|
*/
|
||||||
|
public const string COUNTRY = "country";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ID of the ad unit for the impression
|
||||||
|
*/
|
||||||
|
public const string AD_UNIT = "ad_unit";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Format of the ad
|
||||||
|
*/
|
||||||
|
public const string AD_TYPE = "ad_type";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ID of the ad placement for the impression
|
||||||
|
*/
|
||||||
|
public const string PLACEMENT = "placement";
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
// Data class representing ad revenue information.
|
||||||
|
//
|
||||||
|
// @property monetizationNetwork The name of the network that monetized the ad.
|
||||||
|
// @property mediationNetwork An instance of MediationNetwork representing the mediation service used.
|
||||||
|
// @property currencyIso4217Code The ISO 4217 currency code describing the currency of the revenue.
|
||||||
|
// @property eventRevenue The amount of revenue generated by the ad.
|
||||||
|
/// </summary>
|
||||||
|
public class AFAdRevenueData
|
||||||
|
{
|
||||||
|
public string monetizationNetwork { get; private set; }
|
||||||
|
public MediationNetwork mediationNetwork { get; private set; }
|
||||||
|
public string currencyIso4217Code { get; private set; }
|
||||||
|
public double eventRevenue { get; private set; }
|
||||||
|
|
||||||
|
public AFAdRevenueData(string monetization, MediationNetwork mediation, string currency, double revenue)
|
||||||
|
{
|
||||||
|
monetizationNetwork = monetization;
|
||||||
|
mediationNetwork = mediation;
|
||||||
|
currencyIso4217Code = currency;
|
||||||
|
eventRevenue = revenue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
11
Assets/AppsFlyer/AFAdRevenueData.cs.meta
Normal file
11
Assets/AppsFlyer/AFAdRevenueData.cs.meta
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 49e1906ae949e4bfea400bd1da9f7e39
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
72
Assets/AppsFlyer/AFInAppEvents.cs
Normal file
72
Assets/AppsFlyer/AFInAppEvents.cs
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
using UnityEngine;
|
||||||
|
using System.Collections;
|
||||||
|
|
||||||
|
public class AFInAppEvents {
|
||||||
|
/**
|
||||||
|
* Event Type
|
||||||
|
* */
|
||||||
|
public const string LEVEL_ACHIEVED = "af_level_achieved";
|
||||||
|
public const string ADD_PAYMENT_INFO = "af_add_payment_info";
|
||||||
|
public const string ADD_TO_CART = "af_add_to_cart";
|
||||||
|
public const string ADD_TO_WISH_LIST = "af_add_to_wishlist";
|
||||||
|
public const string COMPLETE_REGISTRATION = "af_complete_registration";
|
||||||
|
public const string TUTORIAL_COMPLETION = "af_tutorial_completion";
|
||||||
|
public const string INITIATED_CHECKOUT = "af_initiated_checkout";
|
||||||
|
public const string PURCHASE = "af_purchase";
|
||||||
|
public const string RATE = "af_rate";
|
||||||
|
public const string SEARCH = "af_search";
|
||||||
|
public const string SPENT_CREDIT = "af_spent_credits";
|
||||||
|
public const string ACHIEVEMENT_UNLOCKED = "af_achievement_unlocked";
|
||||||
|
public const string CONTENT_VIEW = "af_content_view";
|
||||||
|
public const string TRAVEL_BOOKING = "af_travel_booking";
|
||||||
|
public const string SHARE = "af_share";
|
||||||
|
public const string INVITE = "af_invite";
|
||||||
|
public const string LOGIN = "af_login";
|
||||||
|
public const string RE_ENGAGE = "af_re_engage";
|
||||||
|
public const string UPDATE = "af_update";
|
||||||
|
public const string OPENED_FROM_PUSH_NOTIFICATION = "af_opened_from_push_notification";
|
||||||
|
public const string LOCATION_CHANGED = "af_location_changed";
|
||||||
|
public const string LOCATION_COORDINATES = "af_location_coordinates";
|
||||||
|
public const string ORDER_ID = "af_order_id";
|
||||||
|
/**
|
||||||
|
* Event Parameter Name
|
||||||
|
* **/
|
||||||
|
public const string LEVEL = "af_level";
|
||||||
|
public const string SCORE = "af_score";
|
||||||
|
public const string SUCCESS = "af_success";
|
||||||
|
public const string PRICE = "af_price";
|
||||||
|
public const string CONTENT_TYPE = "af_content_type";
|
||||||
|
public const string CONTENT_ID = "af_content_id";
|
||||||
|
public const string CONTENT_LIST = "af_content_list";
|
||||||
|
public const string CURRENCY = "af_currency";
|
||||||
|
public const string QUANTITY = "af_quantity";
|
||||||
|
public const string REGSITRATION_METHOD = "af_registration_method";
|
||||||
|
public const string PAYMENT_INFO_AVAILIBLE = "af_payment_info_available";
|
||||||
|
public const string MAX_RATING_VALUE = "af_max_rating_value";
|
||||||
|
public const string RATING_VALUE = "af_rating_value";
|
||||||
|
public const string SEARCH_STRING = "af_search_string";
|
||||||
|
public const string DATE_A = "af_date_a";
|
||||||
|
public const string DATE_B = "af_date_b";
|
||||||
|
public const string DESTINATION_A = "af_destination_a";
|
||||||
|
public const string DESTINATION_B = "af_destination_b";
|
||||||
|
public const string DESCRIPTION = "af_description";
|
||||||
|
public const string CLASS = "af_class";
|
||||||
|
public const string EVENT_START = "af_event_start";
|
||||||
|
public const string EVENT_END = "af_event_end";
|
||||||
|
public const string LATITUDE = "af_lat";
|
||||||
|
public const string LONGTITUDE = "af_long";
|
||||||
|
public const string CUSTOMER_USER_ID = "af_customer_user_id";
|
||||||
|
public const string VALIDATED = "af_validated";
|
||||||
|
public const string REVENUE = "af_revenue";
|
||||||
|
public const string RECEIPT_ID = "af_receipt_id";
|
||||||
|
public const string PARAM_1 = "af_param_1";
|
||||||
|
public const string PARAM_2 = "af_param_2";
|
||||||
|
public const string PARAM_3 = "af_param_3";
|
||||||
|
public const string PARAM_4 = "af_param_4";
|
||||||
|
public const string PARAM_5 = "af_param_5";
|
||||||
|
public const string PARAM_6 = "af_param_6";
|
||||||
|
public const string PARAM_7 = "af_param_7";
|
||||||
|
public const string PARAM_8 = "af_param_8";
|
||||||
|
public const string PARAM_9 = "af_param_9";
|
||||||
|
public const string PARAM_10 = "af_param_10";
|
||||||
|
}
|
||||||
11
Assets/AppsFlyer/AFInAppEvents.cs.meta
Normal file
11
Assets/AppsFlyer/AFInAppEvents.cs.meta
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 4075c6cf6f3d94b9a9f37f826e6a0e6f
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
547
Assets/AppsFlyer/AFMiniJSON.cs
Executable file
547
Assets/AppsFlyer/AFMiniJSON.cs
Executable file
@@ -0,0 +1,547 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2013 Calvin Rien
|
||||||
|
*
|
||||||
|
* Based on the JSON parser by Patrick van Bergen
|
||||||
|
* http://techblog.procurios.nl/k/618/news/view/14605/14863/How-do-I-write-my-own-parser-for-JSON.html
|
||||||
|
*
|
||||||
|
* Simplified it so that it doesn't throw exceptions
|
||||||
|
* and can be used in Unity iPhone with maximum code stripping.
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining
|
||||||
|
* a copy of this software and associated documentation files (the
|
||||||
|
* "Software"), to deal in the Software without restriction, including
|
||||||
|
* without limitation the rights to use, copy, modify, merge, publish,
|
||||||
|
* distribute, sublicense, and/or sell copies of the Software, and to
|
||||||
|
* permit persons to whom the Software is furnished to do so, subject to
|
||||||
|
* the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be
|
||||||
|
* included in all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||||
|
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||||
|
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||||
|
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||||
|
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||||
|
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
using System;
|
||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace AFMiniJSON {
|
||||||
|
// Example usage:
|
||||||
|
//
|
||||||
|
// using UnityEngine;
|
||||||
|
// using System.Collections;
|
||||||
|
// using System.Collections.Generic;
|
||||||
|
// using MiniJSON;
|
||||||
|
//
|
||||||
|
// public class MiniJSONTest : MonoBehaviour {
|
||||||
|
// void Start () {
|
||||||
|
// var jsonString = "{ \"array\": [1.44,2,3], " +
|
||||||
|
// "\"object\": {\"key1\":\"value1\", \"key2\":256}, " +
|
||||||
|
// "\"string\": \"The quick brown fox \\\"jumps\\\" over the lazy dog \", " +
|
||||||
|
// "\"unicode\": \"\\u3041 Men\u00fa sesi\u00f3n\", " +
|
||||||
|
// "\"int\": 65536, " +
|
||||||
|
// "\"float\": 3.1415926, " +
|
||||||
|
// "\"bool\": true, " +
|
||||||
|
// "\"null\": null }";
|
||||||
|
//
|
||||||
|
// var dict = Json.Deserialize(jsonString) as Dictionary<string,object>;
|
||||||
|
//
|
||||||
|
// Debug.Log("deserialized: " + dict.GetType());
|
||||||
|
// Debug.Log("dict['array'][0]: " + ((List<object>) dict["array"])[0]);
|
||||||
|
// Debug.Log("dict['string']: " + (string) dict["string"]);
|
||||||
|
// Debug.Log("dict['float']: " + (double) dict["float"]); // floats come out as doubles
|
||||||
|
// Debug.Log("dict['int']: " + (long) dict["int"]); // ints come out as longs
|
||||||
|
// Debug.Log("dict['unicode']: " + (string) dict["unicode"]);
|
||||||
|
//
|
||||||
|
// var str = Json.Serialize(dict);
|
||||||
|
//
|
||||||
|
// Debug.Log("serialized: " + str);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// This class encodes and decodes JSON strings.
|
||||||
|
/// Spec. details, see http://www.json.org/
|
||||||
|
///
|
||||||
|
/// JSON uses Arrays and Objects. These correspond here to the datatypes IList and IDictionary.
|
||||||
|
/// All numbers are parsed to doubles.
|
||||||
|
/// </summary>
|
||||||
|
public static class Json {
|
||||||
|
/// <summary>
|
||||||
|
/// Parses the string json into a value
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="json">A JSON string.</param>
|
||||||
|
/// <returns>An List<object>, a Dictionary<string, object>, a double, an integer,a string, null, true, or false</returns>
|
||||||
|
public static object Deserialize(string json) {
|
||||||
|
// save the string for debug information
|
||||||
|
if (json == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return Parser.Parse(json);
|
||||||
|
}
|
||||||
|
|
||||||
|
sealed class Parser : IDisposable {
|
||||||
|
const string WORD_BREAK = "{}[],:\"";
|
||||||
|
|
||||||
|
public static bool IsWordBreak(char c) {
|
||||||
|
return Char.IsWhiteSpace(c) || WORD_BREAK.IndexOf(c) != -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
enum TOKEN {
|
||||||
|
NONE,
|
||||||
|
CURLY_OPEN,
|
||||||
|
CURLY_CLOSE,
|
||||||
|
SQUARED_OPEN,
|
||||||
|
SQUARED_CLOSE,
|
||||||
|
COLON,
|
||||||
|
COMMA,
|
||||||
|
STRING,
|
||||||
|
NUMBER,
|
||||||
|
TRUE,
|
||||||
|
FALSE,
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
|
||||||
|
StringReader json;
|
||||||
|
|
||||||
|
Parser(string jsonString) {
|
||||||
|
json = new StringReader(jsonString);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static object Parse(string jsonString) {
|
||||||
|
using (var instance = new Parser(jsonString)) {
|
||||||
|
return instance.ParseValue();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Dispose() {
|
||||||
|
json.Dispose();
|
||||||
|
json = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
Dictionary<string, object> ParseObject() {
|
||||||
|
Dictionary<string, object> table = new Dictionary<string, object>();
|
||||||
|
|
||||||
|
// ditch opening brace
|
||||||
|
json.Read();
|
||||||
|
|
||||||
|
// {
|
||||||
|
while (true) {
|
||||||
|
switch (NextToken) {
|
||||||
|
case TOKEN.NONE:
|
||||||
|
return null;
|
||||||
|
case TOKEN.COMMA:
|
||||||
|
continue;
|
||||||
|
case TOKEN.CURLY_CLOSE:
|
||||||
|
return table;
|
||||||
|
default:
|
||||||
|
// name
|
||||||
|
string name = ParseString();
|
||||||
|
if (name == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
// :
|
||||||
|
if (NextToken != TOKEN.COLON) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
// ditch the colon
|
||||||
|
json.Read();
|
||||||
|
|
||||||
|
// value
|
||||||
|
table[name] = ParseValue();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
List<object> ParseArray() {
|
||||||
|
List<object> array = new List<object>();
|
||||||
|
|
||||||
|
// ditch opening bracket
|
||||||
|
json.Read();
|
||||||
|
|
||||||
|
// [
|
||||||
|
var parsing = true;
|
||||||
|
while (parsing) {
|
||||||
|
TOKEN nextToken = NextToken;
|
||||||
|
|
||||||
|
switch (nextToken) {
|
||||||
|
case TOKEN.NONE:
|
||||||
|
return null;
|
||||||
|
case TOKEN.COMMA:
|
||||||
|
continue;
|
||||||
|
case TOKEN.SQUARED_CLOSE:
|
||||||
|
parsing = false;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
object value = ParseByToken(nextToken);
|
||||||
|
|
||||||
|
array.Add(value);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return array;
|
||||||
|
}
|
||||||
|
|
||||||
|
object ParseValue() {
|
||||||
|
TOKEN nextToken = NextToken;
|
||||||
|
return ParseByToken(nextToken);
|
||||||
|
}
|
||||||
|
|
||||||
|
object ParseByToken(TOKEN token) {
|
||||||
|
switch (token) {
|
||||||
|
case TOKEN.STRING:
|
||||||
|
return ParseString();
|
||||||
|
case TOKEN.NUMBER:
|
||||||
|
return ParseNumber();
|
||||||
|
case TOKEN.CURLY_OPEN:
|
||||||
|
return ParseObject();
|
||||||
|
case TOKEN.SQUARED_OPEN:
|
||||||
|
return ParseArray();
|
||||||
|
case TOKEN.TRUE:
|
||||||
|
return true;
|
||||||
|
case TOKEN.FALSE:
|
||||||
|
return false;
|
||||||
|
case TOKEN.NULL:
|
||||||
|
return null;
|
||||||
|
default:
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
string ParseString() {
|
||||||
|
StringBuilder s = new StringBuilder();
|
||||||
|
char c;
|
||||||
|
|
||||||
|
// ditch opening quote
|
||||||
|
json.Read();
|
||||||
|
|
||||||
|
bool parsing = true;
|
||||||
|
while (parsing) {
|
||||||
|
|
||||||
|
if (json.Peek() == -1) {
|
||||||
|
parsing = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
c = NextChar;
|
||||||
|
switch (c) {
|
||||||
|
case '"':
|
||||||
|
parsing = false;
|
||||||
|
break;
|
||||||
|
case '\\':
|
||||||
|
if (json.Peek() == -1) {
|
||||||
|
parsing = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
c = NextChar;
|
||||||
|
switch (c) {
|
||||||
|
case '"':
|
||||||
|
case '\\':
|
||||||
|
case '/':
|
||||||
|
s.Append(c);
|
||||||
|
break;
|
||||||
|
case 'b':
|
||||||
|
s.Append('\b');
|
||||||
|
break;
|
||||||
|
case 'f':
|
||||||
|
s.Append('\f');
|
||||||
|
break;
|
||||||
|
case 'n':
|
||||||
|
s.Append('\n');
|
||||||
|
break;
|
||||||
|
case 'r':
|
||||||
|
s.Append('\r');
|
||||||
|
break;
|
||||||
|
case 't':
|
||||||
|
s.Append('\t');
|
||||||
|
break;
|
||||||
|
case 'u':
|
||||||
|
var hex = new char[4];
|
||||||
|
|
||||||
|
for (int i=0; i< 4; i++) {
|
||||||
|
hex[i] = NextChar;
|
||||||
|
}
|
||||||
|
|
||||||
|
s.Append((char) Convert.ToInt32(new string(hex), 16));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
s.Append(c);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return s.ToString();
|
||||||
|
}
|
||||||
|
|
||||||
|
object ParseNumber() {
|
||||||
|
string number = NextWord;
|
||||||
|
|
||||||
|
if (number.IndexOf('.') == -1) {
|
||||||
|
long parsedInt;
|
||||||
|
Int64.TryParse(number, out parsedInt);
|
||||||
|
return parsedInt;
|
||||||
|
}
|
||||||
|
|
||||||
|
double parsedDouble;
|
||||||
|
Double.TryParse(number, out parsedDouble);
|
||||||
|
return parsedDouble;
|
||||||
|
}
|
||||||
|
|
||||||
|
void EatWhitespace() {
|
||||||
|
while (Char.IsWhiteSpace(PeekChar)) {
|
||||||
|
json.Read();
|
||||||
|
|
||||||
|
if (json.Peek() == -1) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
char PeekChar {
|
||||||
|
get {
|
||||||
|
return Convert.ToChar(json.Peek());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
char NextChar {
|
||||||
|
get {
|
||||||
|
return Convert.ToChar(json.Read());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
string NextWord {
|
||||||
|
get {
|
||||||
|
StringBuilder word = new StringBuilder();
|
||||||
|
|
||||||
|
while (!IsWordBreak(PeekChar)) {
|
||||||
|
word.Append(NextChar);
|
||||||
|
|
||||||
|
if (json.Peek() == -1) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return word.ToString();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
TOKEN NextToken {
|
||||||
|
get {
|
||||||
|
EatWhitespace();
|
||||||
|
|
||||||
|
if (json.Peek() == -1) {
|
||||||
|
return TOKEN.NONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (PeekChar) {
|
||||||
|
case '{':
|
||||||
|
return TOKEN.CURLY_OPEN;
|
||||||
|
case '}':
|
||||||
|
json.Read();
|
||||||
|
return TOKEN.CURLY_CLOSE;
|
||||||
|
case '[':
|
||||||
|
return TOKEN.SQUARED_OPEN;
|
||||||
|
case ']':
|
||||||
|
json.Read();
|
||||||
|
return TOKEN.SQUARED_CLOSE;
|
||||||
|
case ',':
|
||||||
|
json.Read();
|
||||||
|
return TOKEN.COMMA;
|
||||||
|
case '"':
|
||||||
|
return TOKEN.STRING;
|
||||||
|
case ':':
|
||||||
|
return TOKEN.COLON;
|
||||||
|
case '0':
|
||||||
|
case '1':
|
||||||
|
case '2':
|
||||||
|
case '3':
|
||||||
|
case '4':
|
||||||
|
case '5':
|
||||||
|
case '6':
|
||||||
|
case '7':
|
||||||
|
case '8':
|
||||||
|
case '9':
|
||||||
|
case '-':
|
||||||
|
return TOKEN.NUMBER;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (NextWord) {
|
||||||
|
case "false":
|
||||||
|
return TOKEN.FALSE;
|
||||||
|
case "true":
|
||||||
|
return TOKEN.TRUE;
|
||||||
|
case "null":
|
||||||
|
return TOKEN.NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
return TOKEN.NONE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Converts a IDictionary / IList object or a simple type (string, int, etc.) into a JSON string
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="json">A Dictionary<string, object> / List<object></param>
|
||||||
|
/// <returns>A JSON encoded string, or null if object 'json' is not serializable</returns>
|
||||||
|
public static string Serialize(object obj) {
|
||||||
|
return Serializer.Serialize(obj);
|
||||||
|
}
|
||||||
|
|
||||||
|
sealed class Serializer {
|
||||||
|
StringBuilder builder;
|
||||||
|
|
||||||
|
Serializer() {
|
||||||
|
builder = new StringBuilder();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static string Serialize(object obj) {
|
||||||
|
var instance = new Serializer();
|
||||||
|
|
||||||
|
instance.SerializeValue(obj);
|
||||||
|
|
||||||
|
return instance.builder.ToString();
|
||||||
|
}
|
||||||
|
|
||||||
|
void SerializeValue(object value) {
|
||||||
|
IList asList;
|
||||||
|
IDictionary asDict;
|
||||||
|
string asStr;
|
||||||
|
|
||||||
|
if (value == null) {
|
||||||
|
builder.Append("null");
|
||||||
|
} else if ((asStr = value as string) != null) {
|
||||||
|
SerializeString(asStr);
|
||||||
|
} else if (value is bool) {
|
||||||
|
builder.Append((bool) value ? "true" : "false");
|
||||||
|
} else if ((asList = value as IList) != null) {
|
||||||
|
SerializeArray(asList);
|
||||||
|
} else if ((asDict = value as IDictionary) != null) {
|
||||||
|
SerializeObject(asDict);
|
||||||
|
} else if (value is char) {
|
||||||
|
SerializeString(new string((char) value, 1));
|
||||||
|
} else {
|
||||||
|
SerializeOther(value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void SerializeObject(IDictionary obj) {
|
||||||
|
bool first = true;
|
||||||
|
|
||||||
|
builder.Append('{');
|
||||||
|
|
||||||
|
foreach (object e in obj.Keys) {
|
||||||
|
if (!first) {
|
||||||
|
builder.Append(',');
|
||||||
|
}
|
||||||
|
|
||||||
|
SerializeString(e.ToString());
|
||||||
|
builder.Append(':');
|
||||||
|
|
||||||
|
SerializeValue(obj[e]);
|
||||||
|
|
||||||
|
first = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
builder.Append('}');
|
||||||
|
}
|
||||||
|
|
||||||
|
void SerializeArray(IList anArray) {
|
||||||
|
builder.Append('[');
|
||||||
|
|
||||||
|
bool first = true;
|
||||||
|
|
||||||
|
foreach (object obj in anArray) {
|
||||||
|
if (!first) {
|
||||||
|
builder.Append(',');
|
||||||
|
}
|
||||||
|
|
||||||
|
SerializeValue(obj);
|
||||||
|
|
||||||
|
first = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
builder.Append(']');
|
||||||
|
}
|
||||||
|
|
||||||
|
void SerializeString(string str) {
|
||||||
|
builder.Append('\"');
|
||||||
|
|
||||||
|
char[] charArray = str.ToCharArray();
|
||||||
|
foreach (var c in charArray) {
|
||||||
|
switch (c) {
|
||||||
|
case '"':
|
||||||
|
builder.Append("\\\"");
|
||||||
|
break;
|
||||||
|
case '\\':
|
||||||
|
builder.Append("\\\\");
|
||||||
|
break;
|
||||||
|
case '\b':
|
||||||
|
builder.Append("\\b");
|
||||||
|
break;
|
||||||
|
case '\f':
|
||||||
|
builder.Append("\\f");
|
||||||
|
break;
|
||||||
|
case '\n':
|
||||||
|
builder.Append("\\n");
|
||||||
|
break;
|
||||||
|
case '\r':
|
||||||
|
builder.Append("\\r");
|
||||||
|
break;
|
||||||
|
case '\t':
|
||||||
|
builder.Append("\\t");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
int codepoint = Convert.ToInt32(c);
|
||||||
|
if ((codepoint >= 32) && (codepoint <= 126)) {
|
||||||
|
builder.Append(c);
|
||||||
|
} else {
|
||||||
|
builder.Append("\\u");
|
||||||
|
builder.Append(codepoint.ToString("x4"));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
builder.Append('\"');
|
||||||
|
}
|
||||||
|
|
||||||
|
void SerializeOther(object value) {
|
||||||
|
// NOTE: decimals lose precision during serialization.
|
||||||
|
// They always have, I'm just letting you know.
|
||||||
|
// Previously floats and doubles lost precision too.
|
||||||
|
if (value is float) {
|
||||||
|
builder.Append(((float) value).ToString("R"));
|
||||||
|
} else if (value is int
|
||||||
|
|| value is uint
|
||||||
|
|| value is long
|
||||||
|
|| value is sbyte
|
||||||
|
|| value is byte
|
||||||
|
|| value is short
|
||||||
|
|| value is ushort
|
||||||
|
|| value is ulong) {
|
||||||
|
builder.Append(value);
|
||||||
|
} else if (value is double
|
||||||
|
|| value is decimal) {
|
||||||
|
builder.Append(Convert.ToDouble(value).ToString("R"));
|
||||||
|
} else {
|
||||||
|
SerializeString(value.ToString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
11
Assets/AppsFlyer/AFMiniJSON.cs.meta
Normal file
11
Assets/AppsFlyer/AFMiniJSON.cs.meta
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: bc3d1c806d507463e9b560eb09d8eb0e
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
30
Assets/AppsFlyer/AFPurchaseDetailsAndroid.cs
Normal file
30
Assets/AppsFlyer/AFPurchaseDetailsAndroid.cs
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace AppsFlyerSDK
|
||||||
|
{
|
||||||
|
public enum AFPurchaseType
|
||||||
|
{
|
||||||
|
Subscription = 0,
|
||||||
|
OneTimePurchase = 1
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Purchase details class matching Android SDK AFPurchaseDetails
|
||||||
|
/// </summary>
|
||||||
|
public class AFPurchaseDetailsAndroid
|
||||||
|
{
|
||||||
|
public AFPurchaseType purchaseType { get; private set; }
|
||||||
|
public string purchaseToken { get; private set; }
|
||||||
|
public string productId { get; private set; }
|
||||||
|
|
||||||
|
public AFPurchaseDetailsAndroid(AFPurchaseType type, String purchaseToken, String productId)
|
||||||
|
{
|
||||||
|
this.purchaseType = type;
|
||||||
|
this.purchaseToken = purchaseToken;
|
||||||
|
this.productId = productId;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
11
Assets/AppsFlyer/AFPurchaseDetailsAndroid.cs.meta
Normal file
11
Assets/AppsFlyer/AFPurchaseDetailsAndroid.cs.meta
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: d71b3864006f94ac08938b2ebdc940bc
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
37
Assets/AppsFlyer/AFSDKPurchaseDetailsIOS.cs
Normal file
37
Assets/AppsFlyer/AFSDKPurchaseDetailsIOS.cs
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace AppsFlyerSDK
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Purchase type enum matching iOS SDK AFSDKPurchaseType
|
||||||
|
/// </summary>
|
||||||
|
public enum AFSDKPurchaseType
|
||||||
|
{
|
||||||
|
Subscription,
|
||||||
|
OneTimePurchase
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Purchase details class matching iOS SDK AFSDKPurchaseDetails
|
||||||
|
/// </summary>
|
||||||
|
public class AFSDKPurchaseDetailsIOS
|
||||||
|
{
|
||||||
|
public string productId { get; private set; }
|
||||||
|
public string transactionId { get; private set; }
|
||||||
|
public AFSDKPurchaseType purchaseType { get; private set; }
|
||||||
|
|
||||||
|
private AFSDKPurchaseDetailsIOS(string productId, string transactionId, AFSDKPurchaseType purchaseType)
|
||||||
|
{
|
||||||
|
this.productId = productId;
|
||||||
|
this.transactionId = transactionId;
|
||||||
|
this.purchaseType = purchaseType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static AFSDKPurchaseDetailsIOS Init(string productId, string transactionId, AFSDKPurchaseType purchaseType)
|
||||||
|
{
|
||||||
|
return new AFSDKPurchaseDetailsIOS(productId, transactionId, purchaseType);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
11
Assets/AppsFlyer/AFSDKPurchaseDetailsIOS.cs.meta
Normal file
11
Assets/AppsFlyer/AFSDKPurchaseDetailsIOS.cs.meta
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 44bb6c4472701416080eb050732075ea
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
38
Assets/AppsFlyer/AFSDKValidateAndLogResult.cs
Normal file
38
Assets/AppsFlyer/AFSDKValidateAndLogResult.cs
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace AppsFlyerSDK
|
||||||
|
{
|
||||||
|
public enum AFSDKValidateAndLogStatus
|
||||||
|
{
|
||||||
|
AFSDKValidateAndLogStatusSuccess,
|
||||||
|
AFSDKValidateAndLogStatusFailure,
|
||||||
|
AFSDKValidateAndLogStatusError
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
//
|
||||||
|
/// </summary>
|
||||||
|
public class AFSDKValidateAndLogResult
|
||||||
|
{
|
||||||
|
public AFSDKValidateAndLogStatus status { get; private set; }
|
||||||
|
public Dictionary<string, object> result { get; private set; }
|
||||||
|
public Dictionary<string, object> errorData { get; private set; }
|
||||||
|
public string error { get; private set; }
|
||||||
|
|
||||||
|
private AFSDKValidateAndLogResult(AFSDKValidateAndLogStatus status, Dictionary<string, object> result, Dictionary<string, object> errorData, string error)
|
||||||
|
{
|
||||||
|
this.status = status;
|
||||||
|
this.result = result;
|
||||||
|
this.errorData = errorData;
|
||||||
|
this.error = error;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static AFSDKValidateAndLogResult Init(AFSDKValidateAndLogStatus status, Dictionary<string, object> result, Dictionary<string, object> errorData, string error)
|
||||||
|
{
|
||||||
|
return new AFSDKValidateAndLogResult(status, result, errorData, error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
11
Assets/AppsFlyer/AFSDKValidateAndLogResult.cs.meta
Normal file
11
Assets/AppsFlyer/AFSDKValidateAndLogResult.cs.meta
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 2df1c6f1eab2e4849bf2762a8d78933f
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
13
Assets/AppsFlyer/AppsFlyer.asmdef
Normal file
13
Assets/AppsFlyer/AppsFlyer.asmdef
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"name": "AppsFlyer",
|
||||||
|
"references": [],
|
||||||
|
"includePlatforms": [],
|
||||||
|
"excludePlatforms": [],
|
||||||
|
"allowUnsafeCode": false,
|
||||||
|
"overrideReferences": false,
|
||||||
|
"precompiledReferences": [],
|
||||||
|
"autoReferenced": true,
|
||||||
|
"defineConstraints": [],
|
||||||
|
"versionDefines": [],
|
||||||
|
"noEngineReferences": false
|
||||||
|
}
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: 68042734671ce4660bff89e042777454
|
guid: 2a37df438292d4903b4e5159c5de3bf9
|
||||||
AssemblyDefinitionImporter:
|
AssemblyDefinitionImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
userData:
|
userData:
|
||||||
1113
Assets/AppsFlyer/AppsFlyer.cs
Normal file
1113
Assets/AppsFlyer/AppsFlyer.cs
Normal file
File diff suppressed because it is too large
Load Diff
11
Assets/AppsFlyer/AppsFlyer.cs.meta
Normal file
11
Assets/AppsFlyer/AppsFlyer.cs.meta
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 45161025a517d427381d3d06153a5ad3
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
852
Assets/AppsFlyer/AppsFlyerAndroid.cs
Normal file
852
Assets/AppsFlyer/AppsFlyerAndroid.cs
Normal file
@@ -0,0 +1,852 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace AppsFlyerSDK
|
||||||
|
{
|
||||||
|
|
||||||
|
#if UNITY_ANDROID
|
||||||
|
public class AppsFlyerAndroid : IAppsFlyerAndroidBridge
|
||||||
|
{
|
||||||
|
public bool isInit { get; set; }
|
||||||
|
|
||||||
|
private static AndroidJavaClass appsFlyerAndroid = new AndroidJavaClass("com.appsflyer.unity.AppsFlyerAndroidWrapper");
|
||||||
|
|
||||||
|
public AppsFlyerAndroid() { }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Use this method to init the sdk for the application.
|
||||||
|
/// Call this method before startSDK.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="devkey"> AppsFlyer's Dev-Key, which is accessible from your AppsFlyer account under 'App Settings' in the dashboard.</param>
|
||||||
|
/// <param name="gameObject">The current game object. This is used to get the conversion data callbacks. Pass null if you do not need the callbacks.</param>
|
||||||
|
public void initSDK(string devkey, MonoBehaviour gameObject)
|
||||||
|
{
|
||||||
|
#if !UNITY_EDITOR
|
||||||
|
appsFlyerAndroid.CallStatic("initSDK", devkey, gameObject ? gameObject.name : null);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Use this method to start the sdk for the application.
|
||||||
|
/// The AppsFlyer's Dev-Key must be provided.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="devkey"> AppsFlyer's Dev-Key, which is accessible from your AppsFlyer account under 'App Settings' in the dashboard.</param>
|
||||||
|
public void startSDK(bool onRequestResponse, string CallBackObjectName)
|
||||||
|
{
|
||||||
|
#if !UNITY_EDITOR
|
||||||
|
appsFlyerAndroid.CallStatic("startTracking", onRequestResponse, CallBackObjectName);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Once this API is invoked, our SDK no longer communicates with our servers and stops functioning.
|
||||||
|
/// In some extreme cases you might want to shut down all SDK activity due to legal and privacy compliance.
|
||||||
|
/// This can be achieved with the stopSDK API.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="isSDKStopped">boolean should SDK be stopped.</param>
|
||||||
|
public void stopSDK(bool isSDKStopped)
|
||||||
|
{
|
||||||
|
#if !UNITY_EDITOR
|
||||||
|
appsFlyerAndroid.CallStatic("stopTracking", isSDKStopped);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Get the AppsFlyer SDK version used in app.
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>AppsFlyer SDK version.</returns>
|
||||||
|
public string getSdkVersion()
|
||||||
|
{
|
||||||
|
#if !UNITY_EDITOR
|
||||||
|
return appsFlyerAndroid.CallStatic<string>("getSdkVersion");
|
||||||
|
#else
|
||||||
|
return "";
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Manually pass the Firebase / GCM Device Token for Uninstall measurement.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="token">Firebase Device Token.</param>
|
||||||
|
public void updateServerUninstallToken(string token)
|
||||||
|
{
|
||||||
|
#if !UNITY_EDITOR
|
||||||
|
appsFlyerAndroid.CallStatic("updateServerUninstallToken", token);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Enables Debug logs for the AppsFlyer SDK.
|
||||||
|
/// Should only be set to true in development / debug.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="shouldEnable">shouldEnable boolean.</param>
|
||||||
|
public void setIsDebug(bool shouldEnable)
|
||||||
|
{
|
||||||
|
#if !UNITY_EDITOR
|
||||||
|
appsFlyerAndroid.CallStatic("setIsDebug", shouldEnable);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// By default, IMEI and Android ID are not collected by the SDK if the OS version is higher than KitKat (4.4)
|
||||||
|
/// and the device contains Google Play Services(on SDK versions 4.8.8 and below the specific app needed GPS).
|
||||||
|
/// Use this API to explicitly send IMEI to AppsFlyer.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="aImei">device's IMEI.</param>
|
||||||
|
public void setImeiData(string aImei)
|
||||||
|
{
|
||||||
|
#if !UNITY_EDITOR
|
||||||
|
appsFlyerAndroid.CallStatic("setImeiData", aImei);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// By default, IMEI and Android ID are not collected by the SDK if the OS version is higher than KitKat(4.4)
|
||||||
|
/// and the device contains Google Play Services(on SDK versions 4.8.8 and below the specific app needed GPS).
|
||||||
|
/// Use this API to explicitly send Android ID to AppsFlyer.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="aAndroidId">device's Android ID.</param>
|
||||||
|
public void setAndroidIdData(string aAndroidId)
|
||||||
|
{
|
||||||
|
#if !UNITY_EDITOR
|
||||||
|
appsFlyerAndroid.CallStatic("setAndroidIdData", aAndroidId);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Setting your own customer ID enables you to cross-reference your own unique ID with AppsFlyer’s unique ID and the other devices’ IDs.
|
||||||
|
/// This ID is available in AppsFlyer CSV reports along with Postback APIs for cross-referencing with your internal IDs.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="id">Customer ID for client.</param>
|
||||||
|
public void setCustomerUserId(string id)
|
||||||
|
{
|
||||||
|
#if !UNITY_EDITOR
|
||||||
|
appsFlyerAndroid.CallStatic("setCustomerUserId", id);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// It is possible to delay the SDK Initialization until the customerUserID is set.
|
||||||
|
/// This feature makes sure that the SDK doesn't begin functioning until the customerUserID is provided.
|
||||||
|
/// If this API is used, all in-app events and any other SDK API calls are discarded, until the customerUserID is provided.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="wait">wait boolean.</param>
|
||||||
|
public void waitForCustomerUserId(bool wait)
|
||||||
|
{
|
||||||
|
#if !UNITY_EDITOR
|
||||||
|
appsFlyerAndroid.CallStatic("waitForCustomerUserId", wait);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Use this API to provide the SDK with the relevant customer user id and trigger the SDK to begin its normal activity.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="id">Customer ID for client.</param>
|
||||||
|
public void setCustomerIdAndStartSDK(string id)
|
||||||
|
{
|
||||||
|
#if !UNITY_EDITOR
|
||||||
|
appsFlyerAndroid.CallStatic("setCustomerIdAndTrack", id);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Get the current AF_STORE value.
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>AF_Store value.</returns>
|
||||||
|
public string getOutOfStore()
|
||||||
|
{
|
||||||
|
#if !UNITY_EDITOR
|
||||||
|
return appsFlyerAndroid.CallStatic<string>("getOutOfStore");
|
||||||
|
#else
|
||||||
|
return "";
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Manually set the AF_STORE value.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="sourceName">value to be set.</param>
|
||||||
|
public void setOutOfStore(string sourceName)
|
||||||
|
{
|
||||||
|
#if !UNITY_EDITOR
|
||||||
|
appsFlyerAndroid.CallStatic("setOutOfStore", sourceName);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Set the OneLink ID that should be used for User-Invites.
|
||||||
|
/// The link that is generated for the user invite will use this OneLink as the base link.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="oneLinkId">OneLink ID obtained from the AppsFlyer Dashboard.</param>
|
||||||
|
public void setAppInviteOneLinkID(string oneLinkId)
|
||||||
|
{
|
||||||
|
#if !UNITY_EDITOR
|
||||||
|
appsFlyerAndroid.CallStatic("setAppInviteOneLinkID", oneLinkId);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Set additional data to be sent to AppsFlyer.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="customData">additional data Dictionary.</param>
|
||||||
|
public void setAdditionalData(Dictionary<string, string> customData)
|
||||||
|
{
|
||||||
|
#if !UNITY_EDITOR
|
||||||
|
appsFlyerAndroid.CallStatic("setAdditionalData", convertDictionaryToJavaMap(customData));
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
//// <summary>
|
||||||
|
/// Set the deepLink timeout value that should be used for DDL.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="deepLinkTimeout">deepLink timeout in milliseconds.</param>
|
||||||
|
public void setDeepLinkTimeout(long deepLinkTimeout)
|
||||||
|
{
|
||||||
|
#if !UNITY_EDITOR
|
||||||
|
appsFlyerAndroid.CallStatic("setDeepLinkTimeout", deepLinkTimeout);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Set the user emails.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="emails">User emails.</param>
|
||||||
|
public void setUserEmails(params string[] userEmails)
|
||||||
|
{
|
||||||
|
#if !UNITY_EDITOR
|
||||||
|
appsFlyerAndroid.CallStatic("setUserEmails", (object)userEmails);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Set the user phone number.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="phoneNumber">User phoneNumber.</param>
|
||||||
|
public void setPhoneNumber(string phoneNumber){
|
||||||
|
#if !UNITY_EDITOR
|
||||||
|
appsFlyerAndroid.CallStatic("setPhoneNumber", phoneNumber);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Set the user emails and encrypt them.
|
||||||
|
/// cryptMethod Encryption method:
|
||||||
|
/// EmailCryptType.EmailCryptTypeMD5
|
||||||
|
/// EmailCryptType.EmailCryptTypeSHA1
|
||||||
|
/// EmailCryptType.EmailCryptTypeSHA256
|
||||||
|
/// EmailCryptType.EmailCryptTypeNone
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="cryptMethod">Encryption method.</param>
|
||||||
|
/// <param name="emails">User emails.</param>
|
||||||
|
public void setUserEmails(EmailCryptType cryptMethod, params string[] emails)
|
||||||
|
{
|
||||||
|
#if !UNITY_EDITOR
|
||||||
|
appsFlyerAndroid.CallStatic("setUserEmails", getEmailType(cryptMethod), (object)emails);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Opt-out of collection of Android ID.
|
||||||
|
/// If the app does NOT contain Google Play Services, Android ID is collected by the SDK.
|
||||||
|
/// However, apps with Google play services should avoid Android ID collection as this is in violation of the Google Play policy.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="isCollect">boolean, false to opt-out.</param>
|
||||||
|
public void setCollectAndroidID(bool isCollect)
|
||||||
|
{
|
||||||
|
#if !UNITY_EDITOR
|
||||||
|
appsFlyerAndroid.CallStatic("setCollectAndroidID", isCollect);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Opt-out of collection of IMEI.
|
||||||
|
/// If the app does NOT contain Google Play Services, device IMEI is collected by the SDK.
|
||||||
|
/// However, apps with Google play services should avoid IMEI collection as this is in violation of the Google Play policy.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="isCollect">boolean, false to opt-out.</param>
|
||||||
|
public void setCollectIMEI(bool isCollect)
|
||||||
|
{
|
||||||
|
#if !UNITY_EDITOR
|
||||||
|
appsFlyerAndroid.CallStatic("setCollectIMEI", isCollect);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Advertisers can wrap AppsFlyer OneLink within another Universal Link.
|
||||||
|
/// This Universal Link will invoke the app but any deep linking data will not propagate to AppsFlyer.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="urls">Array of urls.</param>
|
||||||
|
public void setResolveDeepLinkURLs(params string[] urls)
|
||||||
|
{
|
||||||
|
#if !UNITY_EDITOR
|
||||||
|
appsFlyerAndroid.CallStatic("setResolveDeepLinkURLs", (object)urls);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Advertisers can use this method to set vanity onelink domains.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="domains">Array of domains.</param>
|
||||||
|
public void setOneLinkCustomDomain(params string[] domains)
|
||||||
|
{
|
||||||
|
#if !UNITY_EDITOR
|
||||||
|
appsFlyerAndroid.CallStatic("setOneLinkCustomDomain", (object)domains);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Manually set that the application was updated.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="isUpdate">isUpdate boolean value.</param>
|
||||||
|
public void setIsUpdate(bool isUpdate)
|
||||||
|
{
|
||||||
|
#if !UNITY_EDITOR
|
||||||
|
appsFlyerAndroid.CallStatic("setIsUpdate", isUpdate);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Setting user local currency code for in-app purchases.
|
||||||
|
/// The currency code should be a 3 character ISO 4217 code. (default is USD).
|
||||||
|
/// You can set the currency code for all events by calling the following method.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="currencyCode">3 character ISO 4217 code.</param>
|
||||||
|
public void setCurrencyCode(string currencyCode)
|
||||||
|
{
|
||||||
|
#if !UNITY_EDITOR
|
||||||
|
appsFlyerAndroid.CallStatic("setCurrencyCode", currencyCode);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Manually record the location of the user.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="latitude">latitude as double.</param>
|
||||||
|
/// <param name="longitude">longitude as double.</param>
|
||||||
|
public void recordLocation(double latitude, double longitude)
|
||||||
|
{
|
||||||
|
#if !UNITY_EDITOR
|
||||||
|
appsFlyerAndroid.CallStatic("trackLocation", latitude, longitude);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Send an In-App Event.
|
||||||
|
/// In-App Events provide insight on what is happening in your app.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="eventName">Event Name as String.</param>
|
||||||
|
/// <param name="eventValues">Event Values as Dictionary.</param>
|
||||||
|
public void sendEvent(string eventName, Dictionary<string, string> eventValues)
|
||||||
|
{
|
||||||
|
sendEvent(eventName, eventValues, false, AppsFlyer.CallBackObjectName);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void sendEvent(string eventName, Dictionary<string, string> eventValues, bool shouldCallback, string callBackObjectName)
|
||||||
|
{
|
||||||
|
#if !UNITY_EDITOR
|
||||||
|
appsFlyerAndroid.CallStatic("trackEvent", eventName, convertDictionaryToJavaMap(eventValues), shouldCallback, callBackObjectName);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Anonymize user Data.
|
||||||
|
/// Use this API during the SDK Initialization to explicitly anonymize a user's installs, events and sessions.
|
||||||
|
/// Default is false.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="isDisabled">isDisabled boolean.</param>
|
||||||
|
public void anonymizeUser(bool isDisabled)
|
||||||
|
{
|
||||||
|
#if !UNITY_EDITOR
|
||||||
|
appsFlyerAndroid.CallStatic("setDeviceTrackingDisabled", isDisabled);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Calling enableTCFDataCollection(true) will enable collecting and sending any TCF related data.
|
||||||
|
/// Calling enableTCFDataCollection(false) will disable the collection of TCF related data and from sending it.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name = "shouldCollectTcfData" >should start TCF Data collection boolean.</param>
|
||||||
|
public void enableTCFDataCollection(bool shouldCollectTcfData)
|
||||||
|
{
|
||||||
|
#if !UNITY_EDITOR
|
||||||
|
appsFlyerAndroid.CallStatic("enableTCFDataCollection", shouldCollectTcfData);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Enable the collection of Facebook Deferred AppLinks.
|
||||||
|
/// Requires Facebook SDK and Facebook app on target/client device.
|
||||||
|
/// This API must be invoked prior to initializing the AppsFlyer SDK in order to function properly.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="isEnabled">should Facebook's deferred app links be processed by the AppsFlyer SDK.</param>
|
||||||
|
public void enableFacebookDeferredApplinks(bool isEnabled)
|
||||||
|
{
|
||||||
|
#if !UNITY_EDITOR
|
||||||
|
appsFlyerAndroid.CallStatic("enableFacebookDeferredApplinks", isEnabled);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Sets or updates the user consent data related to GDPR and DMA regulations for advertising and data usage purposes within the application.
|
||||||
|
/// call this method when GDPR user is true
|
||||||
|
/// </summary>
|
||||||
|
/// <param name = "hasConsentForDataUsage" >hasConsentForDataUsage boolean.</param>
|
||||||
|
/// <param name = "hasConsentForAdsPersonalization" >hasConsentForAdsPersonalization boolean.</param>
|
||||||
|
public void setConsentData(AppsFlyerConsent appsFlyerConsent)
|
||||||
|
{
|
||||||
|
#if !UNITY_EDITOR
|
||||||
|
string isUserSubjectToGDPR = appsFlyerConsent.isUserSubjectToGDPR?.ToString().ToLower() ?? "null";
|
||||||
|
string hasConsentForDataUsage = appsFlyerConsent.hasConsentForDataUsage?.ToString().ToLower() ?? "null";
|
||||||
|
string hasConsentForAdsPersonalization = appsFlyerConsent.hasConsentForAdsPersonalization?.ToString().ToLower() ?? "null";
|
||||||
|
string hasConsentForAdStorage = appsFlyerConsent.hasConsentForAdStorage?.ToString().ToLower() ?? "null";
|
||||||
|
|
||||||
|
appsFlyerAndroid.CallStatic("setConsentData", isUserSubjectToGDPR, hasConsentForDataUsage, hasConsentForAdsPersonalization, hasConsentForAdStorage);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Logs ad revenue data along with additional parameters if provided.
|
||||||
|
/// <param name = "adRevenueData" >instance of AFAdRevenueData containing ad revenue information.</param>
|
||||||
|
/// <param name = "additionalParameters" >An optional map of additional parameters to be logged with ad revenue data. This can be null if there are no additional parameters.</param>
|
||||||
|
public void logAdRevenue(AFAdRevenueData adRevenueData, Dictionary<string, string> additionalParameters)
|
||||||
|
{
|
||||||
|
#if !UNITY_EDITOR
|
||||||
|
appsFlyerAndroid.CallStatic("logAdRevenue", adRevenueData.monetizationNetwork, getMediationNetwork(adRevenueData.mediationNetwork), adRevenueData.currencyIso4217Code, adRevenueData.eventRevenue, convertDictionaryToJavaMap(additionalParameters));
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Restrict reengagement via deep-link to once per each unique deep-link.
|
||||||
|
/// Otherwise deep re-occurring deep-links will be permitted for non-singleTask Activities and deep-linking via AppsFlyer deep-links.
|
||||||
|
/// The default value is false.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="doConsume">doConsume boolean.</param>
|
||||||
|
public void setConsumeAFDeepLinks(bool doConsume)
|
||||||
|
{
|
||||||
|
#if !UNITY_EDITOR
|
||||||
|
appsFlyerAndroid.CallStatic("setConsumeAFDeepLinks", doConsume);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Specify the manufacturer or media source name to which the preinstall is attributed.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="mediaSource">Manufacturer or media source name for preinstall attribution.</param>
|
||||||
|
/// <param name="campaign">Campaign name for preinstall attribution.</param>
|
||||||
|
/// <param name="siteId">Site ID for preinstall attribution.</param>
|
||||||
|
public void setPreinstallAttribution(string mediaSource, string campaign, string siteId)
|
||||||
|
{
|
||||||
|
#if !UNITY_EDITOR
|
||||||
|
appsFlyerAndroid.CallStatic("setPreinstallAttribution", mediaSource, campaign, siteId);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Boolean indicator for preinstall by Manufacturer.
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>boolean isPreInstalledApp.</returns>
|
||||||
|
public bool isPreInstalledApp()
|
||||||
|
{
|
||||||
|
#if !UNITY_EDITOR
|
||||||
|
return appsFlyerAndroid.CallStatic<bool>("isPreInstalledApp");
|
||||||
|
#else
|
||||||
|
return false;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Get the Facebook attribution ID, if one exists.
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>string Facebook attribution ID.</returns>
|
||||||
|
public string getAttributionId()
|
||||||
|
{
|
||||||
|
#if !UNITY_EDITOR
|
||||||
|
return appsFlyerAndroid.CallStatic<string>("getAttributionId");
|
||||||
|
#else
|
||||||
|
return "";
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Get AppsFlyer's unique device ID is created for every new install of an app.
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>AppsFlyer's unique device ID.</returns>
|
||||||
|
public string getAppsFlyerId()
|
||||||
|
{
|
||||||
|
#if !UNITY_EDITOR
|
||||||
|
return appsFlyerAndroid.CallStatic<string>("getAppsFlyerId");
|
||||||
|
#else
|
||||||
|
return "";
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// [Deprecated] API for server verification of in-app purchases - please use V2 with AFPurchaseDetailsAndroid instead.
|
||||||
|
/// An af_purchase event with the relevant values will be automatically sent if the validation is successful.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="publicKey">License Key obtained from the Google Play Console.</param>
|
||||||
|
/// <param name="signature"><code>data.INAPP_DATA_SIGNATURE</code> from <code>onActivityResult(int requestCode, int resultCode, Intent data)</code></param>
|
||||||
|
/// <param name="purchaseData"><code>data.INAPP_PURCHASE_DATA</code> from <code>onActivityResult(int requestCode, int resultCode, Intent data)</code></param>
|
||||||
|
/// <param name="price">Purchase price, should be derived from <code>skuDetails.getStringArrayList("DETAILS_LIST")</code></param>
|
||||||
|
/// <param name="currency">Purchase currency, should be derived from <code>skuDetails.getStringArrayList("DETAILS_LIST")</code></param>
|
||||||
|
/// <param name="additionalParameters">additionalParameters Freehand parameters to be sent with the purchase (if validated).</param>
|
||||||
|
[System.Obsolete("This method is deprecated. Use validateAndSendInAppPurchase(AFPurchaseDetailsAndroid details, Dictionary<string, string> purchaseAdditionalDetails, MonoBehaviour gameObject) instead.")]
|
||||||
|
public void validateAndSendInAppPurchase(string publicKey, string signature, string purchaseData, string price, string currency, Dictionary<string, string> additionalParameters, MonoBehaviour gameObject)
|
||||||
|
{
|
||||||
|
#if !UNITY_EDITOR
|
||||||
|
appsFlyerAndroid.CallStatic("validateAndTrackInAppPurchase", publicKey, signature, purchaseData, price, currency, convertDictionaryToJavaMap(additionalParameters), gameObject ? gameObject.name : null);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// V2 - API for server verification of in-app purchases.
|
||||||
|
/// An af_purchase event with the relevant values will be automatically sent if the validation is successful.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="details">AFPurchaseDetailsAndroid instance.</param>
|
||||||
|
/// <param name="purchaseAdditionalDetails">purchaseAdditionalDetails Freehand parameters to be sent with the purchase (if validated).</param>
|
||||||
|
public void validateAndSendInAppPurchase(AFPurchaseDetailsAndroid details, Dictionary<string, string> purchaseAdditionalDetails, MonoBehaviour gameObject)
|
||||||
|
{
|
||||||
|
#if !UNITY_EDITOR
|
||||||
|
appsFlyerAndroid.CallStatic("validateAndTrackInAppPurchaseV2", (int)details.purchaseType, details.purchaseToken, details.productId, convertDictionaryToJavaMap(purchaseAdditionalDetails), gameObject ? gameObject.name : null);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Was the stopSDK(boolean) API set to true.
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>boolean isSDKStopped.</returns>
|
||||||
|
public bool isSDKStopped()
|
||||||
|
{
|
||||||
|
#if !UNITY_EDITOR
|
||||||
|
return appsFlyerAndroid.CallStatic<bool>("isTrackingStopped");
|
||||||
|
#else
|
||||||
|
return false;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Set a custom value for the minimum required time between sessions.
|
||||||
|
/// By default, at least 5 seconds must lapse between 2 app launches to count as separate 2 sessions.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="seconds">minimum time between 2 separate sessions in seconds.</param>
|
||||||
|
public void setMinTimeBetweenSessions(int seconds)
|
||||||
|
{
|
||||||
|
#if !UNITY_EDITOR
|
||||||
|
appsFlyerAndroid.CallStatic("setMinTimeBetweenSessions", seconds);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Set a custom host.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="hostPrefixName">Host prefix.</param>
|
||||||
|
/// <param name="hostName">Host name.</param>
|
||||||
|
public void setHost(string hostPrefixName, string hostName)
|
||||||
|
{
|
||||||
|
#if !UNITY_EDITOR
|
||||||
|
appsFlyerAndroid.CallStatic("setHost", hostPrefixName, hostName);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Get the host name.
|
||||||
|
/// Default value is "appsflyer.com".
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>Host name.</returns>
|
||||||
|
public string getHostName()
|
||||||
|
{
|
||||||
|
#if !UNITY_EDITOR
|
||||||
|
return appsFlyerAndroid.CallStatic<string>("getHostName");
|
||||||
|
#else
|
||||||
|
return "";
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Get the custom host prefix.
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>Host prefix.</returns>
|
||||||
|
public string getHostPrefix()
|
||||||
|
{
|
||||||
|
#if !UNITY_EDITOR
|
||||||
|
return appsFlyerAndroid.CallStatic<string>("getHostPrefix");
|
||||||
|
#else
|
||||||
|
return "";
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Used by advertisers to exclude all networks/integrated partners from getting data.
|
||||||
|
/// </summary>
|
||||||
|
public void setSharingFilterForAllPartners()
|
||||||
|
{
|
||||||
|
#if !UNITY_EDITOR
|
||||||
|
appsFlyerAndroid.CallStatic("setSharingFilterForAllPartners");
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Used by advertisers to set some (one or more) networks/integrated partners to exclude from getting data.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="partners">partners to exclude from getting data</param>
|
||||||
|
public void setSharingFilter(params string[] partners)
|
||||||
|
{
|
||||||
|
#if !UNITY_EDITOR
|
||||||
|
appsFlyerAndroid.CallStatic("setSharingFilter", (object)partners);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Lets you configure how which partners should the SDK exclude from data-sharing.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="partners">partners to exclude from getting data</param>
|
||||||
|
public static void setSharingFilterForPartners(params string[] partners)
|
||||||
|
{
|
||||||
|
#if !UNITY_EDITOR
|
||||||
|
appsFlyerAndroid.CallStatic("setSharingFilterForPartners", (object)partners);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Register a Conversion Data Listener.
|
||||||
|
/// Allows the developer to access the user attribution data in real-time for every new install, directly from the SDK level.
|
||||||
|
/// By doing this you can serve users with personalized content or send them to specific activities within the app,
|
||||||
|
/// which can greatly enhance their engagement with your app.
|
||||||
|
/// </summary>
|
||||||
|
public void getConversionData(string objectName)
|
||||||
|
{
|
||||||
|
#if !UNITY_EDITOR
|
||||||
|
appsFlyerAndroid.CallStatic("getConversionData", objectName);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Register a validation listener for the validateAndSendInAppPurchase API.
|
||||||
|
/// </summary>
|
||||||
|
public void initInAppPurchaseValidatorListener(MonoBehaviour gameObject)
|
||||||
|
{
|
||||||
|
#if !UNITY_EDITOR
|
||||||
|
appsFlyerAndroid.CallStatic("initInAppPurchaseValidatorListener", gameObject ? gameObject.name : null);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// setCollectOaid
|
||||||
|
/// You must include the appsflyer oaid library for this api to work.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="isCollect">isCollect oaid - set fasle to opt out</param>
|
||||||
|
public void setCollectOaid(bool isCollect)
|
||||||
|
{
|
||||||
|
#if !UNITY_EDITOR
|
||||||
|
appsFlyerAndroid.CallStatic("setCollectOaid", isCollect);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Use the following API to attribute the click and launch the app store's app page.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="promoted_app_id">promoted App ID</param>
|
||||||
|
/// <param name="campaign">cross promotion campaign</param>
|
||||||
|
/// <param name="userParams">additional user params</param>
|
||||||
|
public void attributeAndOpenStore(string promoted_app_id, string campaign, Dictionary<string, string> userParams, MonoBehaviour gameObject)
|
||||||
|
{
|
||||||
|
#if !UNITY_EDITOR
|
||||||
|
appsFlyerAndroid.CallStatic("attributeAndOpenStore", promoted_app_id, campaign, convertDictionaryToJavaMap(userParams));
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// To attribute an impression use the following API call.
|
||||||
|
/// Make sure to use the promoted App ID as it appears within the AppsFlyer dashboard.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="appID">promoted App ID.</param>
|
||||||
|
/// <param name="campaign">cross promotion campaign.</param>
|
||||||
|
/// <param name="parameters">parameters Dictionary.</param>
|
||||||
|
public void recordCrossPromoteImpression(string appID, string campaign, Dictionary<string, string> parameters)
|
||||||
|
{
|
||||||
|
#if !UNITY_EDITOR
|
||||||
|
appsFlyerAndroid.CallStatic("recordCrossPromoteImpression", appID, campaign, convertDictionaryToJavaMap(parameters));
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The LinkGenerator class builds the invite URL according to various setter methods which allow passing on additional information on the click.
|
||||||
|
/// See - https://support.appsflyer.com/hc/en-us/articles/115004480866-User-invite-attribution-
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="parameters">parameters Dictionary.</param>
|
||||||
|
public void generateUserInviteLink(Dictionary<string, string> parameters, MonoBehaviour gameObject)
|
||||||
|
{
|
||||||
|
#if !UNITY_EDITOR
|
||||||
|
appsFlyerAndroid.CallStatic("createOneLinkInviteListener", convertDictionaryToJavaMap(parameters), gameObject ? gameObject.name : null);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// To measure push notifications as part of a retargeting campaign.
|
||||||
|
/// </summary>
|
||||||
|
public void handlePushNotifications(){
|
||||||
|
#if !UNITY_EDITOR
|
||||||
|
appsFlyerAndroid.CallStatic("handlePushNotifications");
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Use this method if you’re integrating your app with push providers
|
||||||
|
/// that don’t use the default push notification JSON schema the SDK expects.
|
||||||
|
/// See docs for more info.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="paths">array of nested json path</param>
|
||||||
|
public void addPushNotificationDeepLinkPath(params string[] paths)
|
||||||
|
{
|
||||||
|
#if !UNITY_EDITOR
|
||||||
|
appsFlyerAndroid.CallStatic("addPushNotificationDeepLinkPath", (object)paths);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// subscribe to unified deep link callbacks
|
||||||
|
/// </summary>
|
||||||
|
public void subscribeForDeepLink(string objectName){
|
||||||
|
#if !UNITY_EDITOR
|
||||||
|
appsFlyerAndroid.CallStatic("subscribeForDeepLink", objectName);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Disables collection of various Advertising IDs by the SDK. This includes Google Advertising ID (GAID), OAID and Amazon Advertising ID (AAID)
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="disable">disable boolean.</param>
|
||||||
|
public void setDisableAdvertisingIdentifiers(bool disable)
|
||||||
|
{
|
||||||
|
#if !UNITY_EDITOR
|
||||||
|
appsFlyerAndroid.CallStatic("setDisableAdvertisingIdentifiers", disable);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Allows sending custom data for partner integration purposes.
|
||||||
|
/// </summary>
|
||||||
|
public void setPartnerData(string partnerId, Dictionary<string, string> partnerInfo)
|
||||||
|
{
|
||||||
|
#if !UNITY_EDITOR
|
||||||
|
appsFlyerAndroid.CallStatic("setPartnerData", partnerId, convertDictionaryToJavaMap(partnerInfo));
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Use to opt-out of collecting the network operator name (carrier) and sim operator name from the device.
|
||||||
|
/// </summary>
|
||||||
|
public void setDisableNetworkData(bool disable) {
|
||||||
|
#if !UNITY_EDITOR
|
||||||
|
appsFlyerAndroid.CallStatic("setDisableNetworkData", disable);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Internal Helper Method.
|
||||||
|
/// </summary>
|
||||||
|
private static AndroidJavaObject getEmailType(EmailCryptType cryptType)
|
||||||
|
{
|
||||||
|
AndroidJavaClass emailsCryptTypeEnum = new AndroidJavaClass("com.appsflyer.AppsFlyerProperties$EmailsCryptType");
|
||||||
|
AndroidJavaObject emailsCryptType;
|
||||||
|
|
||||||
|
switch (cryptType)
|
||||||
|
{
|
||||||
|
case EmailCryptType.EmailCryptTypeSHA256:
|
||||||
|
emailsCryptType = emailsCryptTypeEnum.GetStatic<AndroidJavaObject>("SHA256");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
emailsCryptType = emailsCryptTypeEnum.GetStatic<AndroidJavaObject>("NONE");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return emailsCryptType;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Internal Helper Method.
|
||||||
|
/// </summary>
|
||||||
|
private static AndroidJavaObject getMediationNetwork(MediationNetwork mediationNetwork)
|
||||||
|
{
|
||||||
|
AndroidJavaClass mediationNetworkEnumClass = new AndroidJavaClass("com.appsflyer.MediationNetwork");
|
||||||
|
AndroidJavaObject mediationNetworkObject;
|
||||||
|
|
||||||
|
switch (mediationNetwork)
|
||||||
|
{
|
||||||
|
case MediationNetwork.IronSource:
|
||||||
|
mediationNetworkObject = mediationNetworkEnumClass.GetStatic<AndroidJavaObject>("IRONSOURCE");
|
||||||
|
break;
|
||||||
|
case MediationNetwork.ApplovinMax:
|
||||||
|
mediationNetworkObject = mediationNetworkEnumClass.GetStatic<AndroidJavaObject>("APPLOVIN_MAX");
|
||||||
|
break;
|
||||||
|
case MediationNetwork.GoogleAdMob:
|
||||||
|
mediationNetworkObject = mediationNetworkEnumClass.GetStatic<AndroidJavaObject>("GOOGLE_ADMOB");
|
||||||
|
break;
|
||||||
|
case MediationNetwork.Fyber:
|
||||||
|
mediationNetworkObject = mediationNetworkEnumClass.GetStatic<AndroidJavaObject>("FYBER");
|
||||||
|
break;
|
||||||
|
case MediationNetwork.Appodeal:
|
||||||
|
mediationNetworkObject = mediationNetworkEnumClass.GetStatic<AndroidJavaObject>("APPODEAL");
|
||||||
|
break;
|
||||||
|
case MediationNetwork.Admost:
|
||||||
|
mediationNetworkObject = mediationNetworkEnumClass.GetStatic<AndroidJavaObject>("ADMOST");
|
||||||
|
break;
|
||||||
|
case MediationNetwork.Topon:
|
||||||
|
mediationNetworkObject = mediationNetworkEnumClass.GetStatic<AndroidJavaObject>("TOPON");
|
||||||
|
break;
|
||||||
|
case MediationNetwork.Tradplus:
|
||||||
|
mediationNetworkObject = mediationNetworkEnumClass.GetStatic<AndroidJavaObject>("TRADPLUS");
|
||||||
|
break;
|
||||||
|
case MediationNetwork.Yandex:
|
||||||
|
mediationNetworkObject = mediationNetworkEnumClass.GetStatic<AndroidJavaObject>("YANDEX");
|
||||||
|
break;
|
||||||
|
case MediationNetwork.ChartBoost:
|
||||||
|
mediationNetworkObject = mediationNetworkEnumClass.GetStatic<AndroidJavaObject>("CHARTBOOST");
|
||||||
|
break;
|
||||||
|
case MediationNetwork.Unity:
|
||||||
|
mediationNetworkObject = mediationNetworkEnumClass.GetStatic<AndroidJavaObject>("UNITY");
|
||||||
|
break;
|
||||||
|
case MediationNetwork.ToponPte:
|
||||||
|
mediationNetworkObject = mediationNetworkEnumClass.GetStatic<AndroidJavaObject>("TOPON_PTE");
|
||||||
|
break;
|
||||||
|
case MediationNetwork.Custom:
|
||||||
|
mediationNetworkObject = mediationNetworkEnumClass.GetStatic<AndroidJavaObject>("CUSTOM_MEDIATION");
|
||||||
|
break;
|
||||||
|
case MediationNetwork.DirectMonetization:
|
||||||
|
mediationNetworkObject = mediationNetworkEnumClass.GetStatic<AndroidJavaObject>("DIRECT_MONETIZATION_NETWORK");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
mediationNetworkObject = mediationNetworkEnumClass.GetStatic<AndroidJavaObject>("NONE");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return mediationNetworkObject;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Internal Helper Method.
|
||||||
|
/// </summary>
|
||||||
|
private static AndroidJavaObject convertDictionaryToJavaMap(Dictionary<string, string> dictionary)
|
||||||
|
{
|
||||||
|
AndroidJavaObject map = new AndroidJavaObject("java.util.HashMap");
|
||||||
|
IntPtr putMethod = AndroidJNIHelper.GetMethodID(map.GetRawClass(), "put", "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;");
|
||||||
|
jvalue[] val;
|
||||||
|
if (dictionary != null)
|
||||||
|
{
|
||||||
|
foreach (var entry in dictionary)
|
||||||
|
{
|
||||||
|
val = AndroidJNIHelper.CreateJNIArgArray(new object[] { entry.Key, entry.Value });
|
||||||
|
AndroidJNI.CallObjectMethod(map.GetRawObject(), putMethod,val);
|
||||||
|
AndroidJNI.DeleteLocalRef(val[0].l);
|
||||||
|
AndroidJNI.DeleteLocalRef(val[1].l);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return map;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
}
|
||||||
11
Assets/AppsFlyer/AppsFlyerAndroid.cs.meta
Normal file
11
Assets/AppsFlyer/AppsFlyerAndroid.cs.meta
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 172d18dd98e7e4ed3b30110568b0fae4
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
71
Assets/AppsFlyer/AppsFlyerConsent.cs
Normal file
71
Assets/AppsFlyer/AppsFlyerConsent.cs
Normal file
@@ -0,0 +1,71 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace AppsFlyerSDK
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
// Data class representing a user's consent for data processing in accordance with GDPR and DMA
|
||||||
|
// (Digital Markets Act) compliance, specifically regarding advertising preferences.
|
||||||
|
|
||||||
|
// This class should be used to notify and record the user's applicability
|
||||||
|
// under GDPR, their general consent to data usage, and their consent to personalized
|
||||||
|
// advertisements based on user data.
|
||||||
|
|
||||||
|
/// ## Properties:
|
||||||
|
/// - `isUserSubjectToGDPR` (optional) - Indicates whether GDPR regulations apply to the user.
|
||||||
|
/// This may also serve as a general compliance flag for other regional regulations.
|
||||||
|
/// - `hasConsentForDataUsage` (optional) - Indicates whether the user consents to the processing
|
||||||
|
/// of their data for advertising purposes.
|
||||||
|
/// - `hasConsentForAdsPersonalization` (optional) - Indicates whether the user consents to the
|
||||||
|
/// use of their data for personalized advertising.
|
||||||
|
/// - `hasConsentForAdStorage` (optional) - Indicates whether the user consents to ad-related storage access.
|
||||||
|
///
|
||||||
|
/// **Usage Example:**
|
||||||
|
/// ```csharp
|
||||||
|
/// var consent = new AppsFlyerConsent(
|
||||||
|
/// isUserSubjectToGDPR: true,
|
||||||
|
/// hasConsentForDataUsage: true,
|
||||||
|
/// hasConsentForAdsPersonalization: false,
|
||||||
|
/// hasConsentForAdStorage: true
|
||||||
|
/// );
|
||||||
|
/// **Deprecated APIs:**
|
||||||
|
/// - `ForGDPRUser(...)` and `ForNonGDPRUser(...)` should no longer be used.
|
||||||
|
/// - Use `new AppsFlyerConsent(...)` instead with relevant consent fields.
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
public class AppsFlyerConsent
|
||||||
|
{
|
||||||
|
public bool? isUserSubjectToGDPR { get; private set; }
|
||||||
|
public bool? hasConsentForDataUsage { get; private set; }
|
||||||
|
public bool? hasConsentForAdsPersonalization { get; private set; }
|
||||||
|
public bool? hasConsentForAdStorage { get; private set; }
|
||||||
|
|
||||||
|
public AppsFlyerConsent( bool? isUserSubjectToGDPR = null, bool? hasConsentForDataUsage = null, bool? hasConsentForAdsPersonalization = null, bool? hasConsentForAdStorage = null)
|
||||||
|
{
|
||||||
|
this.isUserSubjectToGDPR = isUserSubjectToGDPR;
|
||||||
|
this.hasConsentForDataUsage = hasConsentForDataUsage;
|
||||||
|
this.hasConsentForAdsPersonalization = hasConsentForAdsPersonalization;
|
||||||
|
this.hasConsentForAdStorage = hasConsentForAdStorage;
|
||||||
|
}
|
||||||
|
|
||||||
|
[Obsolete("Use the new constructor with optional booleans instead.")]
|
||||||
|
private AppsFlyerConsent(bool isGDPR, bool hasForDataUsage, bool hasForAdsPersonalization)
|
||||||
|
{
|
||||||
|
isUserSubjectToGDPR = isGDPR;
|
||||||
|
hasConsentForDataUsage = hasForDataUsage;
|
||||||
|
hasConsentForAdsPersonalization = hasForAdsPersonalization;
|
||||||
|
}
|
||||||
|
|
||||||
|
[Obsolete("Use new AppsFlyerConsent(...) instead.")]
|
||||||
|
public static AppsFlyerConsent ForGDPRUser(bool hasConsentForDataUsage, bool hasConsentForAdsPersonalization)
|
||||||
|
{
|
||||||
|
return new AppsFlyerConsent(true, hasConsentForDataUsage, hasConsentForAdsPersonalization);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Obsolete("Use new AppsFlyerConsent(...) instead.")]
|
||||||
|
public static AppsFlyerConsent ForNonGDPRUser()
|
||||||
|
{
|
||||||
|
return new AppsFlyerConsent(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
11
Assets/AppsFlyer/AppsFlyerConsent.cs.meta
Normal file
11
Assets/AppsFlyer/AppsFlyerConsent.cs.meta
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: a97c986fe4ee0461badf7042e08db3f3
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
218
Assets/AppsFlyer/AppsFlyerEventArgs.cs
Normal file
218
Assets/AppsFlyer/AppsFlyerEventArgs.cs
Normal file
@@ -0,0 +1,218 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace AppsFlyerSDK
|
||||||
|
{
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Event args for AppsFlyer requests.
|
||||||
|
/// Used for sessions and in-app events.
|
||||||
|
/// Used to handle post request logic.
|
||||||
|
///
|
||||||
|
/// Examples:
|
||||||
|
/// statusCode / errorDescription
|
||||||
|
///
|
||||||
|
/// 200 - null
|
||||||
|
///
|
||||||
|
/// 10 - "Event timeout. Check 'minTimeBetweenSessions' param"
|
||||||
|
/// 11 - "Skipping event because 'isStopTracking' enabled"
|
||||||
|
/// 40 - Network error: Error description comes from Android
|
||||||
|
/// 41 - "No dev key"
|
||||||
|
/// 50 - "Status code failure" + actual response code from the server
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
public class AppsFlyerRequestEventArgs : EventArgs
|
||||||
|
{
|
||||||
|
public AppsFlyerRequestEventArgs(int code, string description)
|
||||||
|
{
|
||||||
|
statusCode = code;
|
||||||
|
errorDescription = description;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int statusCode { get; }
|
||||||
|
public string errorDescription { get; }
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Event args for OnDeepLinkReceived.
|
||||||
|
/// Used to handle deep linking results.
|
||||||
|
/// </summary>
|
||||||
|
public class DeepLinkEventsArgs : EventArgs
|
||||||
|
{
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// DeepLink dictionary to get additional parameters
|
||||||
|
/// </summary>
|
||||||
|
public Dictionary<string, object> deepLink;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// DeepLink status: FOUND, NOT_FOUND, ERROR
|
||||||
|
/// </summary>
|
||||||
|
public DeepLinkStatus status { get; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// DeepLink error: TIMEOUT, NETWORK, HTTP_STATUS_CODE, UNEXPECTED
|
||||||
|
/// </summary>
|
||||||
|
public DeepLinkError error { get; }
|
||||||
|
|
||||||
|
public string getMatchType()
|
||||||
|
{
|
||||||
|
return getDeepLinkParameter("match_type");
|
||||||
|
}
|
||||||
|
|
||||||
|
public string getDeepLinkValue()
|
||||||
|
{
|
||||||
|
return getDeepLinkParameter("deep_link_value");
|
||||||
|
}
|
||||||
|
|
||||||
|
public string getClickHttpReferrer()
|
||||||
|
{
|
||||||
|
return getDeepLinkParameter("click_http_referrer");
|
||||||
|
}
|
||||||
|
|
||||||
|
public string getMediaSource()
|
||||||
|
{
|
||||||
|
return getDeepLinkParameter("media_source");
|
||||||
|
}
|
||||||
|
|
||||||
|
public string getCampaign()
|
||||||
|
{
|
||||||
|
return getDeepLinkParameter("campaign");
|
||||||
|
}
|
||||||
|
|
||||||
|
public string getCampaignId()
|
||||||
|
{
|
||||||
|
return getDeepLinkParameter("campaign_id");
|
||||||
|
}
|
||||||
|
|
||||||
|
public string getAfSub1()
|
||||||
|
{
|
||||||
|
return getDeepLinkParameter("af_sub1");
|
||||||
|
}
|
||||||
|
|
||||||
|
public string getAfSub2()
|
||||||
|
{
|
||||||
|
return getDeepLinkParameter("af_sub2");
|
||||||
|
}
|
||||||
|
|
||||||
|
public string getAfSub3()
|
||||||
|
{
|
||||||
|
return getDeepLinkParameter("af_sub3");
|
||||||
|
}
|
||||||
|
|
||||||
|
public string getAfSub4()
|
||||||
|
{
|
||||||
|
return getDeepLinkParameter("af_sub4");
|
||||||
|
}
|
||||||
|
|
||||||
|
public string getAfSub5()
|
||||||
|
{
|
||||||
|
return getDeepLinkParameter("af_sub5");
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool isDeferred()
|
||||||
|
{
|
||||||
|
if (deepLink != null && deepLink.ContainsKey("is_deferred"))
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
return (bool)deepLink["is_deferred"];
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
AppsFlyer.AFLog("DeepLinkEventsArgs.isDeferred", String.Format("{0} Exception caught.", e));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Dictionary<string, object> getDeepLinkDictionary()
|
||||||
|
{
|
||||||
|
return deepLink;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DeepLinkEventsArgs(string str)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Dictionary<string, object> dictionary = AppsFlyer.CallbackStringToDictionary(str);
|
||||||
|
|
||||||
|
string status = "";
|
||||||
|
string error = "";
|
||||||
|
|
||||||
|
|
||||||
|
if (dictionary.ContainsKey("status") && dictionary["status"] != null)
|
||||||
|
{
|
||||||
|
status = dictionary["status"].ToString();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dictionary.ContainsKey("error") && dictionary["error"] != null)
|
||||||
|
{
|
||||||
|
error = dictionary["error"].ToString();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dictionary.ContainsKey("deepLink") && dictionary["deepLink"] != null)
|
||||||
|
{
|
||||||
|
this.deepLink = AppsFlyer.CallbackStringToDictionary(dictionary["deepLink"].ToString());
|
||||||
|
}
|
||||||
|
if (dictionary.ContainsKey("is_deferred"))
|
||||||
|
{
|
||||||
|
this.deepLink["is_deferred"] = dictionary["is_deferred"];
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (status)
|
||||||
|
{
|
||||||
|
case "FOUND":
|
||||||
|
this.status = DeepLinkStatus.FOUND;
|
||||||
|
break;
|
||||||
|
case "NOT_FOUND":
|
||||||
|
this.status = DeepLinkStatus.NOT_FOUND;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
this.status = DeepLinkStatus.ERROR;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (error)
|
||||||
|
{
|
||||||
|
case "TIMEOUT":
|
||||||
|
this.error = DeepLinkError.TIMEOUT;
|
||||||
|
break;
|
||||||
|
case "NETWORK":
|
||||||
|
this.error = DeepLinkError.NETWORK;
|
||||||
|
break;
|
||||||
|
case "HTTP_STATUS_CODE":
|
||||||
|
this.error = DeepLinkError.HTTP_STATUS_CODE;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
this.error = DeepLinkError.UNEXPECTED;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
AppsFlyer.AFLog("DeepLinkEventsArgs.parseDeepLink", String.Format("{0} Exception caught.", e));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private string getDeepLinkParameter(string name)
|
||||||
|
{
|
||||||
|
if (deepLink != null && deepLink.ContainsKey(name) && deepLink[name] != null)
|
||||||
|
{
|
||||||
|
return deepLink[name].ToString();
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum DeepLinkStatus {
|
||||||
|
FOUND, NOT_FOUND, ERROR
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum DeepLinkError {
|
||||||
|
TIMEOUT, NETWORK, HTTP_STATUS_CODE, UNEXPECTED
|
||||||
|
}
|
||||||
|
}
|
||||||
11
Assets/AppsFlyer/AppsFlyerEventArgs.cs.meta
Normal file
11
Assets/AppsFlyer/AppsFlyerEventArgs.cs.meta
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: a0fc241ad5a9b43a7b461a6147dbc74c
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
52
Assets/AppsFlyer/AppsFlyerObject.prefab
Normal file
52
Assets/AppsFlyer/AppsFlyerObject.prefab
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!1 &7315102894599890749
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 6207133488976360133}
|
||||||
|
- component: {fileID: 4405976200006927252}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: AppsFlyerObject
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!4 &6207133488976360133
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 7315102894599890749}
|
||||||
|
serializedVersion: 2
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 0}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!114 &4405976200006927252
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 7315102894599890749}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 2a2ec6ba1ee8b48749524f015ed572a6, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
devKey:
|
||||||
|
appID: 6775403944
|
||||||
|
UWPAppID:
|
||||||
|
macOSAppID:
|
||||||
|
isDebug: 0
|
||||||
|
getConversionData: 1
|
||||||
7
Assets/AppsFlyer/AppsFlyerObject.prefab.meta
Normal file
7
Assets/AppsFlyer/AppsFlyerObject.prefab.meta
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 0bfe3b149145747cc92dc53bb4df4e9b
|
||||||
|
PrefabImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
70
Assets/AppsFlyer/AppsFlyerObjectScript.cs
Normal file
70
Assets/AppsFlyer/AppsFlyerObjectScript.cs
Normal file
@@ -0,0 +1,70 @@
|
|||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
using AppsFlyerSDK;
|
||||||
|
|
||||||
|
// This class is intended to be used the the AppsFlyerObject.prefab
|
||||||
|
|
||||||
|
public class AppsFlyerObjectScript : MonoBehaviour , IAppsFlyerConversionData
|
||||||
|
{
|
||||||
|
|
||||||
|
// These fields are set from the editor so do not modify!
|
||||||
|
//******************************//
|
||||||
|
public string devKey;
|
||||||
|
public string appID;
|
||||||
|
public string UWPAppID;
|
||||||
|
public string macOSAppID;
|
||||||
|
public bool isDebug;
|
||||||
|
public bool getConversionData;
|
||||||
|
//******************************//
|
||||||
|
|
||||||
|
|
||||||
|
void Start()
|
||||||
|
{
|
||||||
|
// These fields are set from the editor so do not modify!
|
||||||
|
//******************************//
|
||||||
|
AppsFlyer.setIsDebug(isDebug);
|
||||||
|
#if UNITY_WSA_10_0 && !UNITY_EDITOR
|
||||||
|
AppsFlyer.initSDK(devKey, UWPAppID, getConversionData ? this : null);
|
||||||
|
#elif UNITY_STANDALONE_OSX && !UNITY_EDITOR
|
||||||
|
AppsFlyer.initSDK(devKey, macOSAppID, getConversionData ? this : null);
|
||||||
|
#else
|
||||||
|
AppsFlyer.initSDK(devKey, appID, getConversionData ? this : null);
|
||||||
|
#endif
|
||||||
|
//******************************/
|
||||||
|
|
||||||
|
AppsFlyer.startSDK();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Update()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// Mark AppsFlyer CallBacks
|
||||||
|
public void onConversionDataSuccess(string conversionData)
|
||||||
|
{
|
||||||
|
AppsFlyer.AFLog("didReceiveConversionData", conversionData);
|
||||||
|
Dictionary<string, object> conversionDataDictionary = AppsFlyer.CallbackStringToDictionary(conversionData);
|
||||||
|
// add deferred deeplink logic here
|
||||||
|
}
|
||||||
|
|
||||||
|
public void onConversionDataFail(string error)
|
||||||
|
{
|
||||||
|
AppsFlyer.AFLog("didReceiveConversionDataWithError", error);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void onAppOpenAttribution(string attributionData)
|
||||||
|
{
|
||||||
|
AppsFlyer.AFLog("onAppOpenAttribution", attributionData);
|
||||||
|
Dictionary<string, object> attributionDataDictionary = AppsFlyer.CallbackStringToDictionary(attributionData);
|
||||||
|
// add direct deeplink logic here
|
||||||
|
}
|
||||||
|
|
||||||
|
public void onAppOpenAttributionFailure(string error)
|
||||||
|
{
|
||||||
|
AppsFlyer.AFLog("onAppOpenAttributionFailure", error);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
11
Assets/AppsFlyer/AppsFlyerObjectScript.cs.meta
Normal file
11
Assets/AppsFlyer/AppsFlyerObjectScript.cs.meta
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 2a2ec6ba1ee8b48749524f015ed572a6
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
426
Assets/AppsFlyer/AppsFlyerPurchaseConnector.cs
Normal file
426
Assets/AppsFlyer/AppsFlyerPurchaseConnector.cs
Normal file
@@ -0,0 +1,426 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
using UnityEngine;
|
||||||
|
using System;
|
||||||
|
|
||||||
|
namespace AppsFlyerSDK
|
||||||
|
{
|
||||||
|
|
||||||
|
public interface IAppsFlyerPurchaseRevenueDataSource
|
||||||
|
{
|
||||||
|
Dictionary<string, object> PurchaseRevenueAdditionalParametersForProducts(HashSet<object> products, HashSet<object> transactions);
|
||||||
|
}
|
||||||
|
|
||||||
|
public interface IAppsFlyerPurchaseRevenueDataSourceStoreKit2
|
||||||
|
{
|
||||||
|
Dictionary<string, object> PurchaseRevenueAdditionalParametersStoreKit2ForProducts(HashSet<object> products, HashSet<object> transactions);
|
||||||
|
}
|
||||||
|
|
||||||
|
public class AppsFlyerPurchaseRevenueBridge : MonoBehaviour
|
||||||
|
{
|
||||||
|
#if UNITY_IOS && !UNITY_EDITOR
|
||||||
|
[DllImport("__Internal")]
|
||||||
|
private static extern void RegisterUnityPurchaseRevenueParamsCallback(Func<string, string, string> callback);
|
||||||
|
|
||||||
|
[DllImport("__Internal")]
|
||||||
|
private static extern void RegisterUnityPurchaseRevenueParamsCallbackSK2(Func<string, string, string> callback);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
private static IAppsFlyerPurchaseRevenueDataSource _dataSource;
|
||||||
|
private static IAppsFlyerPurchaseRevenueDataSourceStoreKit2 _dataSourceSK2;
|
||||||
|
|
||||||
|
public static void RegisterDataSource(IAppsFlyerPurchaseRevenueDataSource dataSource)
|
||||||
|
{
|
||||||
|
_dataSource = dataSource;
|
||||||
|
#if UNITY_IOS && !UNITY_EDITOR
|
||||||
|
RegisterUnityPurchaseRevenueParamsCallback(GetAdditionalParameters);
|
||||||
|
#elif UNITY_ANDROID && !UNITY_EDITOR
|
||||||
|
using (AndroidJavaClass jc = new AndroidJavaClass("com.appsflyer.unity.PurchaseRevenueBridge"))
|
||||||
|
{
|
||||||
|
jc.CallStatic("setUnityBridge", new UnityPurchaseRevenueBridgeProxy());
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void RegisterDataSourceStoreKit2(IAppsFlyerPurchaseRevenueDataSourceStoreKit2 dataSource)
|
||||||
|
{
|
||||||
|
#if UNITY_IOS && !UNITY_EDITOR
|
||||||
|
_dataSourceSK2 = dataSource;
|
||||||
|
RegisterUnityPurchaseRevenueParamsCallbackSK2(GetAdditionalParametersSK2);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Dictionary<string, object> GetAdditionalParametersForAndroid(HashSet<object> products, HashSet<object> transactions)
|
||||||
|
{
|
||||||
|
return _dataSource?.PurchaseRevenueAdditionalParametersForProducts(products, transactions)
|
||||||
|
?? new Dictionary<string, object>();
|
||||||
|
}
|
||||||
|
|
||||||
|
#if UNITY_IOS && !UNITY_EDITOR
|
||||||
|
[AOT.MonoPInvokeCallback(typeof(Func<string, string, string>))]
|
||||||
|
public static string GetAdditionalParameters(string productsJson, string transactionsJson)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
HashSet<object> products = new HashSet<object>();
|
||||||
|
HashSet<object> transactions = new HashSet<object>();
|
||||||
|
|
||||||
|
if (!string.IsNullOrEmpty(productsJson))
|
||||||
|
{
|
||||||
|
var dict = AFMiniJSON.Json.Deserialize(productsJson) as Dictionary<string, object>;
|
||||||
|
if (dict != null)
|
||||||
|
{
|
||||||
|
if (dict.TryGetValue("products", out var productsObj) && productsObj is List<object> productList)
|
||||||
|
products = new HashSet<object>(productList);
|
||||||
|
|
||||||
|
if (dict.TryGetValue("transactions", out var transactionsObj) && transactionsObj is List<object> transactionList)
|
||||||
|
transactions = new HashSet<object>(transactionList);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var parameters = _dataSource?.PurchaseRevenueAdditionalParametersForProducts(products, transactions)
|
||||||
|
?? new Dictionary<string, object>();
|
||||||
|
return AFMiniJSON.Json.Serialize(parameters);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
Debug.LogError($"[AppsFlyer] Exception in GetAdditionalParameters: {e}");
|
||||||
|
return "{}";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if UNITY_IOS && !UNITY_EDITOR
|
||||||
|
[AOT.MonoPInvokeCallback(typeof(Func<string, string, string>))]
|
||||||
|
public static string GetAdditionalParametersSK2(string productsJson, string transactionsJson)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
HashSet<object> products = new HashSet<object>();
|
||||||
|
HashSet<object> transactions = new HashSet<object>();
|
||||||
|
|
||||||
|
if (!string.IsNullOrEmpty(productsJson))
|
||||||
|
{
|
||||||
|
var dict = AFMiniJSON.Json.Deserialize(productsJson) as Dictionary<string, object>;
|
||||||
|
if (dict != null && dict.TryGetValue("products", out var productsObj) && productsObj is List<object> productList)
|
||||||
|
products = new HashSet<object>(productList);
|
||||||
|
}
|
||||||
|
if (!string.IsNullOrEmpty(transactionsJson))
|
||||||
|
{
|
||||||
|
var dict = AFMiniJSON.Json.Deserialize(transactionsJson) as Dictionary<string, object>;
|
||||||
|
if (dict != null && dict.TryGetValue("transactions", out var transactionsObj) && transactionsObj is List<object> transactionList)
|
||||||
|
transactions = new HashSet<object>(transactionList);
|
||||||
|
}
|
||||||
|
|
||||||
|
var parameters = _dataSourceSK2?.PurchaseRevenueAdditionalParametersStoreKit2ForProducts(products, transactions)
|
||||||
|
?? new Dictionary<string, object>();
|
||||||
|
return AFMiniJSON.Json.Serialize(parameters);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
Debug.LogError($"[AppsFlyer] Exception in GetAdditionalParametersSK2: {e}");
|
||||||
|
return "{}";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
public class UnityPurchaseRevenueBridgeProxy : AndroidJavaProxy
|
||||||
|
{
|
||||||
|
public UnityPurchaseRevenueBridgeProxy() : base("com.appsflyer.unity.PurchaseRevenueBridge$UnityPurchaseRevenueBridge") { }
|
||||||
|
|
||||||
|
public string getAdditionalParameters(string productsJson, string transactionsJson)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// Create empty sets if JSON is null or empty
|
||||||
|
HashSet<object> products = new HashSet<object>();
|
||||||
|
HashSet<object> transactions = new HashSet<object>();
|
||||||
|
|
||||||
|
// Only try to parse if we have valid JSON
|
||||||
|
if (!string.IsNullOrEmpty(productsJson))
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// First try to parse as a simple array
|
||||||
|
var parsedProducts = AFMiniJSON.Json.Deserialize(productsJson);
|
||||||
|
if (parsedProducts is List<object> productList)
|
||||||
|
{
|
||||||
|
products = new HashSet<object>(productList);
|
||||||
|
}
|
||||||
|
else if (parsedProducts is Dictionary<string, object> dict)
|
||||||
|
{
|
||||||
|
if (dict.ContainsKey("events") && dict["events"] is List<object> eventsList)
|
||||||
|
{
|
||||||
|
products = new HashSet<object>(eventsList);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// If it's a dictionary but doesn't have events, add the whole dict
|
||||||
|
products.Add(dict);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
Debug.LogError($"Error parsing products JSON: {e.Message}\nJSON: {productsJson}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!string.IsNullOrEmpty(transactionsJson))
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// First try to parse as a simple array
|
||||||
|
var parsedTransactions = AFMiniJSON.Json.Deserialize(transactionsJson);
|
||||||
|
if (parsedTransactions is List<object> transactionList)
|
||||||
|
{
|
||||||
|
transactions = new HashSet<object>(transactionList);
|
||||||
|
}
|
||||||
|
else if (parsedTransactions is Dictionary<string, object> dict)
|
||||||
|
{
|
||||||
|
if (dict.ContainsKey("events") && dict["events"] is List<object> eventsList)
|
||||||
|
{
|
||||||
|
transactions = new HashSet<object>(eventsList);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// If it's a dictionary but doesn't have events, add the whole dict
|
||||||
|
transactions.Add(dict);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
Debug.LogError($"Error parsing transactions JSON: {e.Message}\nJSON: {transactionsJson}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var parameters = AppsFlyerPurchaseRevenueBridge.GetAdditionalParametersForAndroid(products, transactions);
|
||||||
|
return AFMiniJSON.Json.Serialize(parameters);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
Debug.LogError($"Error in getAdditionalParameters: {e.Message}\nProducts JSON: {productsJson}\nTransactions JSON: {transactionsJson}");
|
||||||
|
return "{}";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public class AppsFlyerPurchaseConnector : MonoBehaviour {
|
||||||
|
|
||||||
|
private static AppsFlyerPurchaseConnector instance;
|
||||||
|
private Dictionary<string, object> pendingParameters;
|
||||||
|
private Action<Dictionary<string, object>> pendingCallback;
|
||||||
|
|
||||||
|
public static AppsFlyerPurchaseConnector Instance
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (instance == null)
|
||||||
|
{
|
||||||
|
GameObject go = new GameObject("AppsFlyerPurchaseConnector");
|
||||||
|
instance = go.AddComponent<AppsFlyerPurchaseConnector>();
|
||||||
|
DontDestroyOnLoad(go);
|
||||||
|
}
|
||||||
|
return instance;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Awake()
|
||||||
|
{
|
||||||
|
if (instance == null)
|
||||||
|
{
|
||||||
|
instance = this;
|
||||||
|
DontDestroyOnLoad(gameObject);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Destroy(gameObject);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#if UNITY_ANDROID && !UNITY_EDITOR
|
||||||
|
private static AndroidJavaClass appsFlyerAndroidConnector = new AndroidJavaClass("com.appsflyer.unity.AppsFlyerAndroidWrapper");
|
||||||
|
#endif
|
||||||
|
|
||||||
|
public static void init(MonoBehaviour unityObject, Store s) {
|
||||||
|
#if UNITY_IOS && !UNITY_EDITOR
|
||||||
|
_initPurchaseConnector(unityObject.name);
|
||||||
|
#elif UNITY_ANDROID && !UNITY_EDITOR
|
||||||
|
int store = mapStoreToInt(s);
|
||||||
|
appsFlyerAndroidConnector.CallStatic("initPurchaseConnector", unityObject ? unityObject.name : null, store);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void build() {
|
||||||
|
#if UNITY_IOS && !UNITY_EDITOR
|
||||||
|
//not for iOS
|
||||||
|
#elif UNITY_ANDROID && !UNITY_EDITOR
|
||||||
|
appsFlyerAndroidConnector.CallStatic("build");
|
||||||
|
|
||||||
|
#else
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void startObservingTransactions() {
|
||||||
|
#if UNITY_IOS && !UNITY_EDITOR
|
||||||
|
_startObservingTransactions();
|
||||||
|
#elif UNITY_ANDROID && !UNITY_EDITOR
|
||||||
|
appsFlyerAndroidConnector.CallStatic("startObservingTransactions");
|
||||||
|
#else
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void stopObservingTransactions() {
|
||||||
|
#if UNITY_IOS && !UNITY_EDITOR
|
||||||
|
_stopObservingTransactions();
|
||||||
|
#elif UNITY_ANDROID && !UNITY_EDITOR
|
||||||
|
appsFlyerAndroidConnector.CallStatic("stopObservingTransactions");
|
||||||
|
#else
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void setIsSandbox(bool isSandbox) {
|
||||||
|
#if UNITY_IOS && !UNITY_EDITOR
|
||||||
|
_setIsSandbox(isSandbox);
|
||||||
|
#elif UNITY_ANDROID && !UNITY_EDITOR
|
||||||
|
appsFlyerAndroidConnector.CallStatic("setIsSandbox", isSandbox);
|
||||||
|
#else
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void setPurchaseRevenueValidationListeners(bool enableCallbacks) {
|
||||||
|
#if UNITY_IOS && !UNITY_EDITOR
|
||||||
|
_setPurchaseRevenueDelegate();
|
||||||
|
#elif UNITY_ANDROID && !UNITY_EDITOR
|
||||||
|
appsFlyerAndroidConnector.CallStatic("setPurchaseRevenueValidationListeners", enableCallbacks);
|
||||||
|
#else
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void setAutoLogPurchaseRevenue(params AppsFlyerAutoLogPurchaseRevenueOptions[] autoLogPurchaseRevenueOptions) {
|
||||||
|
#if UNITY_IOS && !UNITY_EDITOR
|
||||||
|
int option = 0;
|
||||||
|
foreach (AppsFlyerAutoLogPurchaseRevenueOptions op in autoLogPurchaseRevenueOptions) {
|
||||||
|
option = option | (int)op;
|
||||||
|
}
|
||||||
|
_setAutoLogPurchaseRevenue(option);
|
||||||
|
#elif UNITY_ANDROID && !UNITY_EDITOR
|
||||||
|
if (autoLogPurchaseRevenueOptions.Length == 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
foreach (AppsFlyerAutoLogPurchaseRevenueOptions op in autoLogPurchaseRevenueOptions) {
|
||||||
|
switch(op) {
|
||||||
|
case AppsFlyerAutoLogPurchaseRevenueOptions.AppsFlyerAutoLogPurchaseRevenueOptionsDisabled:
|
||||||
|
break;
|
||||||
|
case AppsFlyerAutoLogPurchaseRevenueOptions.AppsFlyerAutoLogPurchaseRevenueOptionsAutoRenewableSubscriptions:
|
||||||
|
appsFlyerAndroidConnector.CallStatic("setAutoLogSubscriptions", true);
|
||||||
|
break;
|
||||||
|
case AppsFlyerAutoLogPurchaseRevenueOptions.AppsFlyerAutoLogPurchaseRevenueOptionsInAppPurchases:
|
||||||
|
appsFlyerAndroidConnector.CallStatic("setAutoLogInApps", true);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void setPurchaseRevenueDataSource(IAppsFlyerPurchaseRevenueDataSource dataSource)
|
||||||
|
{
|
||||||
|
#if UNITY_IOS && !UNITY_EDITOR
|
||||||
|
|
||||||
|
if (dataSource != null)
|
||||||
|
{
|
||||||
|
_setPurchaseRevenueDataSource(dataSource.GetType().Name);
|
||||||
|
AppsFlyerPurchaseRevenueBridge.RegisterDataSource(dataSource);
|
||||||
|
}
|
||||||
|
#elif UNITY_ANDROID && !UNITY_EDITOR
|
||||||
|
if (dataSource != null)
|
||||||
|
{
|
||||||
|
AppsFlyerPurchaseRevenueBridge.RegisterDataSource(dataSource);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static void setPurchaseRevenueDataSourceStoreKit2(IAppsFlyerPurchaseRevenueDataSourceStoreKit2 dataSourceSK2)
|
||||||
|
{
|
||||||
|
#if UNITY_IOS && !UNITY_EDITOR
|
||||||
|
if (dataSourceSK2 != null)
|
||||||
|
{
|
||||||
|
AppsFlyerPurchaseRevenueBridge.RegisterDataSourceStoreKit2(dataSourceSK2);
|
||||||
|
_setPurchaseRevenueDataSource("AppsFlyerObjectScript_StoreKit2");
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private static int mapStoreToInt(Store s) {
|
||||||
|
switch(s) {
|
||||||
|
case(Store.GOOGLE):
|
||||||
|
return 0;
|
||||||
|
default:
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void setStoreKitVersion(StoreKitVersion storeKitVersion) {
|
||||||
|
#if UNITY_IOS && !UNITY_EDITOR
|
||||||
|
_setStoreKitVersion((int)storeKitVersion);
|
||||||
|
#elif UNITY_ANDROID && !UNITY_EDITOR
|
||||||
|
// Android doesn't use StoreKit
|
||||||
|
#else
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void logConsumableTransaction(string transactionJson) {
|
||||||
|
#if UNITY_IOS && !UNITY_EDITOR
|
||||||
|
_logConsumableTransaction(transactionJson);
|
||||||
|
#elif UNITY_ANDROID && !UNITY_EDITOR
|
||||||
|
// Android doesn't use StoreKit
|
||||||
|
#else
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
#if UNITY_IOS && !UNITY_EDITOR
|
||||||
|
|
||||||
|
[DllImport("__Internal")]
|
||||||
|
private static extern void _startObservingTransactions();
|
||||||
|
[DllImport("__Internal")]
|
||||||
|
private static extern void _stopObservingTransactions();
|
||||||
|
[DllImport("__Internal")]
|
||||||
|
private static extern void _setIsSandbox(bool isSandbox);
|
||||||
|
[DllImport("__Internal")]
|
||||||
|
private static extern void _setPurchaseRevenueDelegate();
|
||||||
|
[DllImport("__Internal")]
|
||||||
|
private static extern void _setPurchaseRevenueDataSource(string dataSourceName);
|
||||||
|
[DllImport("__Internal")]
|
||||||
|
private static extern void _setAutoLogPurchaseRevenue(int option);
|
||||||
|
[DllImport("__Internal")]
|
||||||
|
private static extern void _initPurchaseConnector(string objectName);
|
||||||
|
[DllImport("__Internal")]
|
||||||
|
private static extern void _setStoreKitVersion(int storeKitVersion);
|
||||||
|
[DllImport("__Internal")]
|
||||||
|
private static extern void _logConsumableTransaction(string transactionJson);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
public enum Store {
|
||||||
|
GOOGLE = 0
|
||||||
|
}
|
||||||
|
public enum AppsFlyerAutoLogPurchaseRevenueOptions
|
||||||
|
{
|
||||||
|
AppsFlyerAutoLogPurchaseRevenueOptionsDisabled = 0,
|
||||||
|
AppsFlyerAutoLogPurchaseRevenueOptionsAutoRenewableSubscriptions = 1 << 0,
|
||||||
|
AppsFlyerAutoLogPurchaseRevenueOptionsInAppPurchases = 1 << 1
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum StoreKitVersion {
|
||||||
|
SK1 = 0,
|
||||||
|
SK2 = 1
|
||||||
|
}
|
||||||
|
}
|
||||||
11
Assets/AppsFlyer/AppsFlyerPurchaseConnector.cs.meta
Normal file
11
Assets/AppsFlyer/AppsFlyerPurchaseConnector.cs.meta
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 0636ea07d370d437183f3762280c08ce
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
1021
Assets/AppsFlyer/AppsFlyeriOS.cs
Normal file
1021
Assets/AppsFlyer/AppsFlyeriOS.cs
Normal file
File diff suppressed because it is too large
Load Diff
11
Assets/AppsFlyer/AppsFlyeriOS.cs.meta
Normal file
11
Assets/AppsFlyer/AppsFlyeriOS.cs.meta
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: b34371b3cc09641ebb007ffc4e9500f0
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
8
Assets/AppsFlyer/Editor.meta
Normal file
8
Assets/AppsFlyer/Editor.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 9f84c02aa78da4ac9b444d98d97f7cc4
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
17
Assets/AppsFlyer/Editor/AppsFlyer.Editor.asmdef
Normal file
17
Assets/AppsFlyer/Editor/AppsFlyer.Editor.asmdef
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
{
|
||||||
|
"name": "AppsFlyer.Editor",
|
||||||
|
"references": [
|
||||||
|
"AppsFlyer"
|
||||||
|
],
|
||||||
|
"includePlatforms": [
|
||||||
|
"Editor"
|
||||||
|
],
|
||||||
|
"excludePlatforms": [],
|
||||||
|
"allowUnsafeCode": false,
|
||||||
|
"overrideReferences": false,
|
||||||
|
"precompiledReferences": [],
|
||||||
|
"autoReferenced": true,
|
||||||
|
"defineConstraints": [],
|
||||||
|
"versionDefines": [],
|
||||||
|
"noEngineReferences": false
|
||||||
|
}
|
||||||
7
Assets/AppsFlyer/Editor/AppsFlyer.Editor.asmdef.meta
Normal file
7
Assets/AppsFlyer/Editor/AppsFlyer.Editor.asmdef.meta
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: d008146f00dea44d38752b4289e5f65b
|
||||||
|
AssemblyDefinitionImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
15
Assets/AppsFlyer/Editor/AppsFlyerDependencies.xml
Normal file
15
Assets/AppsFlyer/Editor/AppsFlyerDependencies.xml
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
<dependencies>
|
||||||
|
|
||||||
|
<androidPackages>
|
||||||
|
<androidPackage spec="com.appsflyer:af-android-sdk:6.17.6"></androidPackage>
|
||||||
|
<androidPackage spec="com.appsflyer:unity-wrapper:6.17.91"></androidPackage>
|
||||||
|
<androidPackage spec="com.android.installreferrer:installreferrer:2.1"></androidPackage>
|
||||||
|
</androidPackages>
|
||||||
|
|
||||||
|
<iosPods>
|
||||||
|
<iosPod name="AppsFlyerFramework/Strict" version="6.17.9" minTargetSdk="12.0"></iosPod>
|
||||||
|
<iosPod name="PurchaseConnector/Strict" version="6.17.9" minTargetSdk="12.0"></iosPod>
|
||||||
|
</iosPods>
|
||||||
|
|
||||||
|
</dependencies>
|
||||||
7
Assets/AppsFlyer/Editor/AppsFlyerDependencies.xml.meta
Normal file
7
Assets/AppsFlyer/Editor/AppsFlyerDependencies.xml.meta
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: a03558dbbfeac45db9afe9e9c2df5a85
|
||||||
|
TextScriptImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
104
Assets/AppsFlyer/Editor/AppsFlyerObjectEditor.cs
Normal file
104
Assets/AppsFlyer/Editor/AppsFlyerObjectEditor.cs
Normal file
@@ -0,0 +1,104 @@
|
|||||||
|
using UnityEditor;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
|
||||||
|
[CustomEditor(typeof(AppsFlyerObjectScript))]
|
||||||
|
[CanEditMultipleObjects]
|
||||||
|
public class AppsFlyerObjectEditor : Editor
|
||||||
|
{
|
||||||
|
|
||||||
|
SerializedProperty devKey;
|
||||||
|
SerializedProperty appID;
|
||||||
|
SerializedProperty UWPAppID;
|
||||||
|
SerializedProperty macOSAppID;
|
||||||
|
SerializedProperty isDebug;
|
||||||
|
SerializedProperty getConversionData;
|
||||||
|
|
||||||
|
|
||||||
|
void OnEnable()
|
||||||
|
{
|
||||||
|
devKey = serializedObject.FindProperty("devKey");
|
||||||
|
appID = serializedObject.FindProperty("appID");
|
||||||
|
UWPAppID = serializedObject.FindProperty("UWPAppID");
|
||||||
|
macOSAppID = serializedObject.FindProperty("macOSAppID");
|
||||||
|
isDebug = serializedObject.FindProperty("isDebug");
|
||||||
|
getConversionData = serializedObject.FindProperty("getConversionData");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public override void OnInspectorGUI()
|
||||||
|
{
|
||||||
|
serializedObject.Update();
|
||||||
|
|
||||||
|
DrawLogo();
|
||||||
|
|
||||||
|
EditorGUILayout.Separator();
|
||||||
|
EditorGUILayout.HelpBox("Set your devKey and appID to init the AppsFlyer SDK and start tracking. You must modify these fields and provide:\ndevKey - Your application devKey provided by AppsFlyer.\nappId - For iOS only. Your iTunes Application ID.\nUWP app id - For UWP only. Your application app id \nMac OS app id - For MacOS app only.", MessageType.Info);
|
||||||
|
|
||||||
|
EditorGUILayout.PropertyField(devKey);
|
||||||
|
EditorGUILayout.PropertyField(appID);
|
||||||
|
EditorGUILayout.PropertyField(UWPAppID);
|
||||||
|
EditorGUILayout.PropertyField(macOSAppID);
|
||||||
|
EditorGUILayout.Separator();
|
||||||
|
EditorGUILayout.HelpBox("Enable get conversion data to allow your app to recive deeplinking callbacks", MessageType.None);
|
||||||
|
EditorGUILayout.PropertyField(getConversionData);
|
||||||
|
EditorGUILayout.Separator();
|
||||||
|
EditorGUILayout.HelpBox("Debugging should be restricted to development phase only.\n Do not distribute the app to app stores with debugging enabled", MessageType.Warning);
|
||||||
|
EditorGUILayout.PropertyField(isDebug);
|
||||||
|
EditorGUILayout.Separator();
|
||||||
|
|
||||||
|
EditorGUILayout.HelpBox("For more information on setting up AppsFlyer check out our relevant docs.", MessageType.None);
|
||||||
|
|
||||||
|
|
||||||
|
if (GUILayout.Button("AppsFlyer Unity Docs", new GUILayoutOption[] { GUILayout.Width(200) }))
|
||||||
|
{
|
||||||
|
Application.OpenURL("https://support.appsflyer.com/hc/en-us/articles/213766183-Unity-SDK-integration-for-developers");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (GUILayout.Button("AppsFlyer Android Docs", new GUILayoutOption[] { GUILayout.Width(200) }))
|
||||||
|
{
|
||||||
|
Application.OpenURL("https://support.appsflyer.com/hc/en-us/articles/207032126-Android-SDK-integration-for-developers");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (GUILayout.Button("AppsFlyer iOS Docs", new GUILayoutOption[] { GUILayout.Width(200) }))
|
||||||
|
{
|
||||||
|
Application.OpenURL("https://support.appsflyer.com/hc/en-us/articles/207032066-AppsFlyer-SDK-Integration-iOS");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (GUILayout.Button("AppsFlyer Deeplinking Docs", new GUILayoutOption[] { GUILayout.Width(200) }))
|
||||||
|
{
|
||||||
|
Application.OpenURL("https://support.appsflyer.com/hc/en-us/articles/208874366-OneLink-deep-linking-guide#Setups");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (GUILayout.Button("AppsFlyer Windows Docs", new GUILayoutOption[] { GUILayout.Width(200) }))
|
||||||
|
{
|
||||||
|
Application.OpenURL("https://support.appsflyer.com/hc/en-us/articles/207032026-Windows-and-Xbox-SDK-integration-for-developers");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
serializedObject.ApplyModifiedProperties();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void DrawLogo()
|
||||||
|
{
|
||||||
|
var guids = AssetDatabase.FindAssets("appsflyer_logo");
|
||||||
|
if (guids.Length == 0) return;
|
||||||
|
|
||||||
|
Texture logo = (Texture)AssetDatabase.LoadAssetAtPath(
|
||||||
|
AssetDatabase.GUIDToAssetPath(guids[0]),
|
||||||
|
typeof(Texture));
|
||||||
|
|
||||||
|
if (logo == null) return;
|
||||||
|
|
||||||
|
float maxWidth = Mathf.Min(200, EditorGUIUtility.currentViewWidth - 40);
|
||||||
|
float aspect = (float)logo.height / logo.width;
|
||||||
|
float height = maxWidth * aspect;
|
||||||
|
|
||||||
|
Rect rect = GUILayoutUtility.GetRect(maxWidth, height, GUILayout.ExpandWidth(false));
|
||||||
|
rect.x = (EditorGUIUtility.currentViewWidth - maxWidth) * 0.5f;
|
||||||
|
rect.width = maxWidth;
|
||||||
|
GUI.DrawTexture(rect, logo, ScaleMode.ScaleToFit);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
11
Assets/AppsFlyer/Editor/AppsFlyerObjectEditor.cs.meta
Normal file
11
Assets/AppsFlyer/Editor/AppsFlyerObjectEditor.cs.meta
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: d248a134cf494486fb1d6a2e95a05d87
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
BIN
Assets/AppsFlyer/Editor/appsflyer_logo.png
Normal file
BIN
Assets/AppsFlyer/Editor/appsflyer_logo.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 7.0 KiB |
92
Assets/AppsFlyer/Editor/appsflyer_logo.png.meta
Normal file
92
Assets/AppsFlyer/Editor/appsflyer_logo.png.meta
Normal file
@@ -0,0 +1,92 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: bc7fa5a6b64b944a4b2900fd877acb8b
|
||||||
|
TextureImporter:
|
||||||
|
internalIDToNameTable: []
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 11
|
||||||
|
mipmaps:
|
||||||
|
mipMapMode: 0
|
||||||
|
enableMipMap: 1
|
||||||
|
sRGBTexture: 1
|
||||||
|
linearTexture: 0
|
||||||
|
fadeOut: 0
|
||||||
|
borderMipMap: 0
|
||||||
|
mipMapsPreserveCoverage: 0
|
||||||
|
alphaTestReferenceValue: 0.5
|
||||||
|
mipMapFadeDistanceStart: 1
|
||||||
|
mipMapFadeDistanceEnd: 3
|
||||||
|
bumpmap:
|
||||||
|
convertToNormalMap: 0
|
||||||
|
externalNormalMap: 0
|
||||||
|
heightScale: 0.25
|
||||||
|
normalMapFilter: 0
|
||||||
|
isReadable: 0
|
||||||
|
streamingMipmaps: 0
|
||||||
|
streamingMipmapsPriority: 0
|
||||||
|
grayScaleToAlpha: 0
|
||||||
|
generateCubemap: 6
|
||||||
|
cubemapConvolution: 0
|
||||||
|
seamlessCubemap: 0
|
||||||
|
textureFormat: 1
|
||||||
|
maxTextureSize: 2048
|
||||||
|
textureSettings:
|
||||||
|
serializedVersion: 2
|
||||||
|
filterMode: -1
|
||||||
|
aniso: -1
|
||||||
|
mipBias: -100
|
||||||
|
wrapU: -1
|
||||||
|
wrapV: -1
|
||||||
|
wrapW: -1
|
||||||
|
nPOTScale: 1
|
||||||
|
lightmap: 0
|
||||||
|
compressionQuality: 50
|
||||||
|
spriteMode: 0
|
||||||
|
spriteExtrude: 1
|
||||||
|
spriteMeshType: 1
|
||||||
|
alignment: 0
|
||||||
|
spritePivot: {x: 0.5, y: 0.5}
|
||||||
|
spritePixelsToUnits: 100
|
||||||
|
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
spriteGenerateFallbackPhysicsShape: 1
|
||||||
|
alphaUsage: 1
|
||||||
|
alphaIsTransparency: 0
|
||||||
|
spriteTessellationDetail: -1
|
||||||
|
textureType: 0
|
||||||
|
textureShape: 1
|
||||||
|
singleChannelComponent: 0
|
||||||
|
maxTextureSizeSet: 0
|
||||||
|
compressionQualitySet: 0
|
||||||
|
textureFormatSet: 0
|
||||||
|
applyGammaDecoding: 0
|
||||||
|
platformSettings:
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: DefaultTexturePlatform
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
spriteSheet:
|
||||||
|
serializedVersion: 2
|
||||||
|
sprites: []
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID:
|
||||||
|
internalID: 0
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
secondaryTextures: []
|
||||||
|
spritePackingTag:
|
||||||
|
pSDRemoveMatte: 0
|
||||||
|
pSDShowRemoveMatteOption: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
31
Assets/AppsFlyer/IAppsFlyerAndroidBridge.cs
Normal file
31
Assets/AppsFlyer/IAppsFlyerAndroidBridge.cs
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace AppsFlyerSDK
|
||||||
|
{
|
||||||
|
|
||||||
|
public interface IAppsFlyerAndroidBridge : IAppsFlyerNativeBridge
|
||||||
|
{
|
||||||
|
void updateServerUninstallToken(string token);
|
||||||
|
void setImeiData(string imei);
|
||||||
|
void setAndroidIdData(string androidId);
|
||||||
|
void waitForCustomerUserId(bool wait);
|
||||||
|
void setCustomerIdAndStartSDK(string id);
|
||||||
|
string getOutOfStore();
|
||||||
|
void setOutOfStore(string sourceName);
|
||||||
|
void setCollectAndroidID(bool isCollect);
|
||||||
|
void setCollectIMEI(bool isCollect);
|
||||||
|
void setIsUpdate(bool isUpdate);
|
||||||
|
void setPreinstallAttribution(string mediaSource, string campaign, string siteId);
|
||||||
|
bool isPreInstalledApp();
|
||||||
|
string getAttributionId();
|
||||||
|
void handlePushNotifications();
|
||||||
|
void validateAndSendInAppPurchase(string publicKey, string signature, string purchaseData, string price, string currency, Dictionary<string, string> additionalParameters, MonoBehaviour gameObject);
|
||||||
|
void validateAndSendInAppPurchase(AFPurchaseDetailsAndroid details, Dictionary<string, string> purchaseAdditionalDetails, MonoBehaviour gameObject);
|
||||||
|
void setCollectOaid(bool isCollect);
|
||||||
|
void setDisableAdvertisingIdentifiers(bool disable);
|
||||||
|
void setDisableNetworkData(bool disable);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
11
Assets/AppsFlyer/IAppsFlyerAndroidBridge.cs.meta
Normal file
11
Assets/AppsFlyer/IAppsFlyerAndroidBridge.cs.meta
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: cdf9d1bc41a8244b3bc2d249fb6cd7aa
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
31
Assets/AppsFlyer/IAppsFlyerConversionData.cs
Normal file
31
Assets/AppsFlyer/IAppsFlyerConversionData.cs
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
namespace AppsFlyerSDK
|
||||||
|
{
|
||||||
|
public interface IAppsFlyerConversionData
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// `conversionData` contains information about install. Organic/non-organic, etc.
|
||||||
|
/// <see>https://support.appsflyer.com/hc/en-us/articles/360000726098-Conversion-Data-Scenarios#Introduction</see>
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="conversionData">JSON string of the returned conversion data.</param>
|
||||||
|
void onConversionDataSuccess(string conversionData);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Any errors that occurred during the conversion request.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="error">A string describing the error.</param>
|
||||||
|
void onConversionDataFail(string error);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// `attributionData` contains information about OneLink, deeplink.
|
||||||
|
/// <see>https://support.appsflyer.com/hc/en-us/articles/208874366-OneLink-Deep-Linking-Guide#Intro</see>
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="attributionData">JSON string of the returned deeplink data.</param>
|
||||||
|
void onAppOpenAttribution(string attributionData);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Any errors that occurred during the attribution request.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="error">A string describing the error.</param>
|
||||||
|
void onAppOpenAttributionFailure(string error);
|
||||||
|
}
|
||||||
|
}
|
||||||
11
Assets/AppsFlyer/IAppsFlyerConversionData.cs.meta
Normal file
11
Assets/AppsFlyer/IAppsFlyerConversionData.cs.meta
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: d2f1d4dadb7cb44628f25f1ffd8fc104
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user