diff --git a/.github/scripts/validate-unity-distribution.py b/.github/scripts/validate-unity-distribution.py new file mode 100644 index 000000000..ea116b562 --- /dev/null +++ b/.github/scripts/validate-unity-distribution.py @@ -0,0 +1,119 @@ +#!/usr/bin/env python3 + +import json +import re +import sys +from pathlib import Path + + +ROOT = Path(__file__).resolve().parents[2] +DEMO = ROOT / "examples/demo" +BOOTSTRAP = ROOT / "examples/demo/Assets/OneSignal" +SAMPLE = ROOT / "com.onesignal.unity.core/Samples~" +INVENTORY = BOOTSTRAP / "Editor/Resources/OneSignalFileInventory.asset" + +EXCLUDED_PREFIXES = ( + "Assets/OneSignal/Attribution", + "Assets/OneSignal/Example", +) +EXCLUDED_FILES = { + "Assets/OneSignal/Editor/OneSignalAndroidDependencies.xml", + "Assets/OneSignal/Editor/OneSignalAndroidDependencies.xml.meta", + "Assets/OneSignal/Editor/OneSignaliOSDependencies.xml", + "Assets/OneSignal/Editor/OneSignaliOSDependencies.xml.meta", +} +REQUIRED_SAMPLE_GUIDS = { + "OneSignal.UnityPackage.Example.asmdef.meta": "a28dab59edddfb3448f1fd9318f85c32", + "OneSignalExampleBehaviour.cs.meta": "1a40a711031e4cb8b9b3f674dda19d55", + "OneSignalExampleScene.unity.meta": "54284d014d2241544a24b57b13c09ac8", + "INCONSOLATA-VARIABLEFONT_WDTH,WGHT.TTF.meta": "792110c4f5f19e64196eb25f41c0b783", +} + + +def fail(message: str) -> None: + print(f"Unity distribution validation failed: {message}", file=sys.stderr) + raise SystemExit(1) + + +def is_distributed(path: str) -> bool: + if path in EXCLUDED_FILES or path.endswith("/.DS_Store"): + return False + return not any( + path == prefix + or path == f"{prefix}.meta" + or path.startswith(f"{prefix}/") + for prefix in EXCLUDED_PREFIXES + ) + + +def validate_inventory() -> None: + actual = sorted( + path.relative_to(DEMO).as_posix() + for path in BOOTSTRAP.rglob("*") + if path.is_file() and is_distributed(path.relative_to(DEMO).as_posix()) + ) + recorded = re.findall(r"^\s*-\s+(Assets/OneSignal/.+)$", INVENTORY.read_text(), re.MULTILINE) + + if actual != recorded: + missing = sorted(set(actual) - set(recorded)) + stale = sorted(set(recorded) - set(actual)) + fail( + "file inventory is out of date" + + (f"; missing: {', '.join(missing)}" if missing else "") + + (f"; stale: {', '.join(stale)}" if stale else "") + ) + + +def validate_sample() -> None: + for filename, expected_guid in REQUIRED_SAMPLE_GUIDS.items(): + path = SAMPLE / filename + if not path.is_file(): + fail(f"sample is missing {path.relative_to(ROOT)}") + match = re.search(r"^guid:\s*(\w+)$", path.read_text(), re.MULTILINE) + if match is None or match.group(1) != expected_guid: + fail(f"{path.relative_to(ROOT)} does not preserve GUID {expected_guid}") + + scene = (SAMPLE / "OneSignalExampleScene.unity").read_text() + if "OneSignalSDK.OneSignalExampleBehaviour" in scene: + fail("sample scene contains stale OneSignalExampleBehaviour type references") + if "OneSignalExampleBehaviour, OneSignal.UnityPackage.Example" not in scene: + fail("sample scene does not contain OneSignalExampleBehaviour button bindings") + behaviour = (SAMPLE / "OneSignalExampleBehaviour.cs").read_text() + if "ExitLiveActivityAsync" in scene or "LiveActivities.ExitAsync" in behaviour: + fail("sample exposes the deprecated Live Activities exit API") + + asmdef = json.loads((SAMPLE / "OneSignal.UnityPackage.Example.asmdef").read_text()) + required_references = { + "OneSignal.Core", + "UnityEngine.UI", + "UnityEngine.JSONSerializeModule", + } + if not required_references.issubset(asmdef["references"]): + fail("sample assembly is missing required references") + + package = json.loads((ROOT / "com.onesignal.unity.core/package.json").read_text()) + if not any(sample.get("path") == "Samples~" for sample in package.get("samples", [])): + fail("core package does not register Samples~") + if not any( + version.get("name") == "com.onesignal.unity.core" + and version.get("expression") == package["version"] + and version.get("define") == "ONE_SIGNAL_INSTALLED" + for version in asmdef.get("versionDefines", []) + ): + fail("sample version define does not match the core package version") + + +def main() -> None: + if (BOOTSTRAP / "Example").exists() or (BOOTSTRAP / "Example.meta").exists(): + fail("empty legacy Asset Store Example path still exists") + if (BOOTSTRAP / "Documentation~").exists(): + fail("Documentation~ is hidden from Unity and cannot be exported") + if not (BOOTSTRAP / "Documentation").is_dir(): + fail("exportable bootstrap documentation is missing") + validate_inventory() + validate_sample() + print("Unity distribution layout is valid.") + + +if __name__ == "__main__": + main() diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8a4a528ee..3143f8122 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -22,3 +22,6 @@ jobs: - name: Check formatting run: csharpier check . + + - name: Validate Unity distribution layout + run: python3 .github/scripts/validate-unity-distribution.py diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 2cb1412b0..34db30566 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -23,4 +23,4 @@ Before creating bug reports, please check this list of steps to follow. * **Include Reproducibility** It is nearly always a good idea to include steps to reproduct the issue. If you cannot reliably reproduce the issue yourself, that's ok, but reproducible steps help best. * **Describe your environment**, tell us what version of the Unity OneSignal SDK you are using, what platforms the issue occurs on (android/iOS), related code samples, and so on. * **Include a Stack Trace** If your issue involves a crash/exception, ***PLEASE*** post the stack trace to help us identify the root issue. -* **Include an Example Project** This isn't required, but if you want your issue fixed quickly, it's often a good idea to include an example project as a zip and include it with the issue. You can also download the Demo project (included in the `/OneSignalExample` folder of this repo) and set up an example project with this code as a starting point. +* **Include an Example Project** This isn't required, but if you want your issue fixed quickly, it's often a good idea to include an example project as a zip and include it with the issue. You can also use the Demo project in [`examples/demo`](examples/demo) as a starting point. diff --git a/MIGRATION_GUIDE_v3_to_v5.md b/MIGRATION_GUIDE_v3_to_v5.md index 43998ac76..ff782740f 100644 --- a/MIGRATION_GUIDE_v3_to_v5.md +++ b/MIGRATION_GUIDE_v3_to_v5.md @@ -289,7 +289,7 @@ The debug namespace is accessible via `OneSignal.Debug` and provides access to d # Troubleshooting ## Android ``` -Assets/OneSignal/Example/OneSignalExampleBehaviou.cs: error CS0246: The type or namespace name '...' could not be found (are you missing a using directive or an assembly reference?) +Assets/Samples/OneSignal Unity SDK - Core//Full Usage/OneSignalExampleBehaviour.cs: error CS0246: The type or namespace name '...' could not be found (are you missing a using directive or an assembly reference?) ``` ``` diff --git a/README.md b/README.md index 2b14740c3..85f815d22 100644 --- a/README.md +++ b/README.md @@ -76,7 +76,7 @@ There are two methods of installation available for the OneSignal Unity SDK: 2. Find the package waiting for you to download by clicking **Open in Unity** from that same page. This will open the Unity Editor and its Package Manager window. 3. On the SDK's listing in the Editor click the **Download** button. When it finishes click **Import**. - ![onesignal unity sdk in my assets](Documentation/asset_listing.png) + ![onesignal unity sdk in my assets](examples/demo/Assets/OneSignal/Documentation/asset_listing.png) 4. A prompt to import all of the files of the OneSignal Unity SDK will appear. Click **Import** to continue and compile the scripts into your project. 5. Navigate to **Window > OneSignal SDK Setup** (or follow the popup if upgrading) in the Unity Editor which will bring up a window with some final steps which need @@ -84,7 +84,7 @@ There are two methods of installation available for the OneSignal Unity SDK: > *Depending on your project configuration and if you are upgrading from a previous version, some of these steps may already be marked as "completed"* - ![sdk setup steps window](Documentation/setup_window.png) + ![sdk setup steps window](examples/demo/Assets/OneSignal/Documentation/setup_window.png) 6. After importing the packages Unity will notify you that a new registry has been added and the **OneSignal SDK Setup** window will have refreshed with a few additional steps. Following these will finalize your installation of the OneSignal Unity SDK. @@ -95,7 +95,7 @@ There are two methods of installation available for the OneSignal Unity SDK: 1. From within the Unity Editor navigate to **Edit > Project Settings** and then to the **Package Manager** settings tab. - ![unity registry manager](Documentation/package_manager_tab.png) + ![unity registry manager](examples/demo/Assets/OneSignal/Documentation/package_manager_tab.png) 2. Create a *New Scoped Registry* by entering ``` @@ -111,7 +111,7 @@ There are two methods of installation available for the OneSignal Unity SDK: > *Depending on your project configuration and if you are upgrading from a previous version, some of these steps may already be marked as "completed"* - ![my registries menu selection](Documentation/registry_menu.png) + ![my registries menu selection](examples/demo/Assets/OneSignal/Documentation/registry_menu.png) @@ -122,16 +122,16 @@ After building in Unity and exporting the XCode project follow these steps: 2. Click on the **Unity-iPhone** project and its similarly named target and select the **Signing & Capabilities** tab. 3. From here check **Automatically manage signing**, on the prompt click **Enable Automatic**, and select your **Team**. - ![automatically manage signing](Documentation/ios_auto_sign.png) + ![automatically manage signing](examples/demo/Assets/OneSignal/Documentation/ios_auto_sign.png) 4. Scroll down to **App Groups** and click on the refresh button. > NOTE: You may have to press this a few times as it will ask you for each signing type. - ![refresh app groups](Documentation/ios_refresh_app_groups.png) + ![refresh app groups](examples/demo/Assets/OneSignal/Documentation/ios_refresh_app_groups.png) 5. Repeat the same steps above but for the **OneSignalNotificationServiceExtension** target this time. - ![extension signing and groups](Documentation/ios_extension_sign_and_groups.png) + ![extension signing and groups](examples/demo/Assets/OneSignal/Documentation/ios_extension_sign_and_groups.png) 6. **App Groups** should now be provisioned for you going forward for your iOS bundle id, even on clean builds. @@ -168,8 +168,7 @@ With the location module disabled, Android resolves OneSignal's native modules w When toggling the flag, clear stale native outputs (the generated Xcode project, CocoaPods/Gradle caches, and prior `Build/` artifacts) so a previously linked location module isn't reused. ## Usage -You can find a complete implementation in our included [example MonoBehaviour](OneSignalExample/Assets/OneSignal/Example/OneSignalExampleBehaviour.cs). Additionally we have included a -[sample scene](OneSignalExample/Assets/OneSignal/Example/OneSignalExampleScene.unity) which you can run to test out the SDK. +For a compact implementation of the major SDK features, open **Window > Package Manager**, select **OneSignal Unity SDK - Core**, and import the **Full Usage** sample. The sample requires Unity UI (`com.unity.ugui`). The repository's complete development demo is available in [`examples/demo`](examples/demo). ### Initialization #### Prefab diff --git a/com.onesignal.unity.core/Samples~/INCONSOLATA-VARIABLEFONT_WDTH,WGHT.TTF b/com.onesignal.unity.core/Samples~/INCONSOLATA-VARIABLEFONT_WDTH,WGHT.TTF new file mode 100644 index 000000000..20251d93e Binary files /dev/null and b/com.onesignal.unity.core/Samples~/INCONSOLATA-VARIABLEFONT_WDTH,WGHT.TTF differ diff --git a/com.onesignal.unity.core/Samples~/INCONSOLATA-VARIABLEFONT_WDTH,WGHT.TTF.meta b/com.onesignal.unity.core/Samples~/INCONSOLATA-VARIABLEFONT_WDTH,WGHT.TTF.meta new file mode 100644 index 000000000..f590cd0ea --- /dev/null +++ b/com.onesignal.unity.core/Samples~/INCONSOLATA-VARIABLEFONT_WDTH,WGHT.TTF.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: 792110c4f5f19e64196eb25f41c0b783 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Inconsolata + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.onesignal.unity.core/Samples~/OneSignal.UnityPackage.Example.asmdef b/com.onesignal.unity.core/Samples~/OneSignal.UnityPackage.Example.asmdef new file mode 100644 index 000000000..2a99eb209 --- /dev/null +++ b/com.onesignal.unity.core/Samples~/OneSignal.UnityPackage.Example.asmdef @@ -0,0 +1,28 @@ +{ + "name": "OneSignal.UnityPackage.Example", + "rootNamespace": "", + "references": [ + "OneSignal.Core", + "UnityEngine.UI", + "UnityEngine.JSONSerializeModule" + ], + "includePlatforms": [ + "Android", + "Editor", + "iOS" + ], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [ + { + "name": "com.onesignal.unity.core", + "expression": "5.3.0", + "define": "ONE_SIGNAL_INSTALLED" + } + ], + "noEngineReferences": false +} diff --git a/com.onesignal.unity.core/Samples~/OneSignal.UnityPackage.Example.asmdef.meta b/com.onesignal.unity.core/Samples~/OneSignal.UnityPackage.Example.asmdef.meta new file mode 100644 index 000000000..6166f1b59 --- /dev/null +++ b/com.onesignal.unity.core/Samples~/OneSignal.UnityPackage.Example.asmdef.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: a28dab59edddfb3448f1fd9318f85c32 +timeCreated: 1625590596 diff --git a/com.onesignal.unity.core/Samples~/OneSignalExampleBehaviour.cs b/com.onesignal.unity.core/Samples~/OneSignalExampleBehaviour.cs index 5198ab7f9..76c50ed4b 100644 --- a/com.onesignal.unity.core/Samples~/OneSignalExampleBehaviour.cs +++ b/com.onesignal.unity.core/Samples~/OneSignalExampleBehaviour.cs @@ -537,18 +537,6 @@ public async void EnterLiveActivityAsync() _log("Live Activity enter failed"); } - public async void ExitLiveActivityAsync() - { - _log($"Exiting Live Activity with id: {liveActivityId} and awaiting result..."); - - var result = await OneSignal.LiveActivities.ExitAsync(liveActivityId); - - if (result) - _log("Live Activity exit success"); - else - _log("Live Activity exit failed"); - } - public void SetPushToStartToken() { _log( diff --git a/com.onesignal.unity.core/Samples~/OneSignalExampleBehaviour.cs.meta b/com.onesignal.unity.core/Samples~/OneSignalExampleBehaviour.cs.meta new file mode 100644 index 000000000..3d520bfc3 --- /dev/null +++ b/com.onesignal.unity.core/Samples~/OneSignalExampleBehaviour.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 1a40a711031e4cb8b9b3f674dda19d55 +timeCreated: 1633405839 diff --git a/com.onesignal.unity.core/Samples~/OneSignalExampleScene.unity b/com.onesignal.unity.core/Samples~/OneSignalExampleScene.unity index fe91ab5ba..b8cc66d03 100644 --- a/com.onesignal.unity.core/Samples~/OneSignalExampleScene.unity +++ b/com.onesignal.unity.core/Samples~/OneSignalExampleScene.unity @@ -760,7 +760,7 @@ MonoBehaviour: m_PersistentCalls: m_Calls: - m_Target: {fileID: 307684281} - m_TargetAssemblyTypeName: OneSignalSDK.OneSignalExampleBehaviour, OneSignal.UnityPackage.Example + m_TargetAssemblyTypeName: OneSignalExampleBehaviour, OneSignal.UnityPackage.Example m_MethodName: RemoveTag m_Mode: 1 m_Arguments: @@ -1226,7 +1226,7 @@ MonoBehaviour: m_PersistentCalls: m_Calls: - m_Target: {fileID: 307684281} - m_TargetAssemblyTypeName: OneSignalSDK.OneSignalExampleBehaviour, OneSignal.UnityPackage.Example + m_TargetAssemblyTypeName: OneSignalExampleBehaviour, OneSignal.UnityPackage.Example m_MethodName: SetTriggerKey m_Mode: 0 m_Arguments: @@ -3255,7 +3255,6 @@ RectTransform: m_Children: - {fileID: 291492897} - {fileID: 1225464264} - - {fileID: 729372536} m_Father: {fileID: 1969667766} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} @@ -4030,7 +4029,7 @@ MonoBehaviour: m_PersistentCalls: m_Calls: - m_Target: {fileID: 307684281} - m_TargetAssemblyTypeName: OneSignalSDK.OneSignalExampleBehaviour, OneSignal.UnityPackage.Example + m_TargetAssemblyTypeName: OneSignalExampleBehaviour, OneSignal.UnityPackage.Example m_MethodName: SetAlertLevel m_Mode: 1 m_Arguments: @@ -5481,7 +5480,7 @@ MonoBehaviour: m_PersistentCalls: m_Calls: - m_Target: {fileID: 307684281} - m_TargetAssemblyTypeName: OneSignalSDK.OneSignalExampleBehaviour, OneSignal.UnityPackage.Example + m_TargetAssemblyTypeName: OneSignalExampleBehaviour, OneSignal.UnityPackage.Example m_MethodName: PromptForPush m_Mode: 1 m_Arguments: @@ -5788,139 +5787,6 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 697472630} m_CullTransparentMesh: 1 ---- !u!1 &729372535 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 729372536} - - component: {fileID: 729372539} - - component: {fileID: 729372538} - - component: {fileID: 729372537} - m_Layer: 5 - m_Name: button_exitLiveActivity - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &729372536 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 729372535} - 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: - - {fileID: 1430329922} - m_Father: {fileID: 348492214} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &729372537 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 729372535} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Navigation: - m_Mode: 3 - m_WrapAround: 0 - m_SelectOnUp: {fileID: 0} - m_SelectOnDown: {fileID: 0} - m_SelectOnLeft: {fileID: 0} - m_SelectOnRight: {fileID: 0} - m_Transition: 1 - m_Colors: - m_NormalColor: {r: 1, g: 1, b: 1, a: 1} - m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} - m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} - m_ColorMultiplier: 1 - m_FadeDuration: 0.1 - m_SpriteState: - m_HighlightedSprite: {fileID: 0} - m_PressedSprite: {fileID: 0} - m_SelectedSprite: {fileID: 0} - m_DisabledSprite: {fileID: 0} - m_AnimationTriggers: - m_NormalTrigger: Normal - m_HighlightedTrigger: Highlighted - m_PressedTrigger: Pressed - m_SelectedTrigger: Selected - m_DisabledTrigger: Disabled - m_Interactable: 1 - m_TargetGraphic: {fileID: 729372538} - m_OnClick: - m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 307684281} - m_TargetAssemblyTypeName: OneSignalExampleBehaviour, OneSignal.UnityPackage.Example - m_MethodName: ExitLiveActivityAsync - m_Mode: 1 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 1 ---- !u!114 &729372538 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 729372535} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!222 &729372539 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 729372535} - m_CullTransparentMesh: 1 --- !u!1 &731561686 GameObject: m_ObjectHideFlags: 0 @@ -6005,7 +5871,7 @@ MonoBehaviour: m_PersistentCalls: m_Calls: - m_Target: {fileID: 307684281} - m_TargetAssemblyTypeName: OneSignalSDK.OneSignalExampleBehaviour, OneSignal.UnityPackage.Example + m_TargetAssemblyTypeName: OneSignalExampleBehaviour, OneSignal.UnityPackage.Example m_MethodName: PromptLocation m_Mode: 1 m_Arguments: @@ -6296,7 +6162,7 @@ MonoBehaviour: m_PersistentCalls: m_Calls: - m_Target: {fileID: 307684281} - m_TargetAssemblyTypeName: OneSignalSDK.OneSignalExampleBehaviour, OneSignal.UnityPackage.Example + m_TargetAssemblyTypeName: OneSignalExampleBehaviour, OneSignal.UnityPackage.Example m_MethodName: ToggleShareLocation m_Mode: 1 m_Arguments: @@ -7483,7 +7349,7 @@ MonoBehaviour: m_PersistentCalls: m_Calls: - m_Target: {fileID: 307684281} - m_TargetAssemblyTypeName: OneSignalSDK.OneSignalExampleBehaviour, OneSignal.UnityPackage.Example + m_TargetAssemblyTypeName: OneSignalExampleBehaviour, OneSignal.UnityPackage.Example m_MethodName: SetTagKey m_Mode: 0 m_Arguments: @@ -8851,7 +8717,7 @@ MonoBehaviour: m_PersistentCalls: m_Calls: - m_Target: {fileID: 307684281} - m_TargetAssemblyTypeName: OneSignalSDK.OneSignalExampleBehaviour, OneSignal.UnityPackage.Example + m_TargetAssemblyTypeName: OneSignalExampleBehaviour, OneSignal.UnityPackage.Example m_MethodName: SetTriggerValue m_Mode: 0 m_Arguments: @@ -9010,7 +8876,7 @@ MonoBehaviour: m_PersistentCalls: m_Calls: - m_Target: {fileID: 307684281} - m_TargetAssemblyTypeName: OneSignalSDK.OneSignalExampleBehaviour, OneSignal.UnityPackage.Example + m_TargetAssemblyTypeName: OneSignalExampleBehaviour, OneSignal.UnityPackage.Example m_MethodName: SetEmailString m_Mode: 0 m_Arguments: @@ -11015,7 +10881,7 @@ MonoBehaviour: m_PersistentCalls: m_Calls: - m_Target: {fileID: 307684281} - m_TargetAssemblyTypeName: OneSignalSDK.OneSignalExampleBehaviour, OneSignal.UnityPackage.Example + m_TargetAssemblyTypeName: OneSignalExampleBehaviour, OneSignal.UnityPackage.Example m_MethodName: SetTagValue m_Mode: 0 m_Arguments: @@ -11395,7 +11261,7 @@ MonoBehaviour: m_PersistentCalls: m_Calls: - m_Target: {fileID: 307684281} - m_TargetAssemblyTypeName: OneSignalSDK.OneSignalExampleBehaviour, OneSignal.UnityPackage.Example + m_TargetAssemblyTypeName: OneSignalExampleBehaviour, OneSignal.UnityPackage.Example m_MethodName: SetOutcomeKey m_Mode: 0 m_Arguments: @@ -11905,7 +11771,7 @@ MonoBehaviour: m_PersistentCalls: m_Calls: - m_Target: {fileID: 307684281} - m_TargetAssemblyTypeName: OneSignalSDK.OneSignalExampleBehaviour, OneSignal.UnityPackage.Example + m_TargetAssemblyTypeName: OneSignalExampleBehaviour, OneSignal.UnityPackage.Example m_MethodName: SetOutcomeValue m_Mode: 0 m_Arguments: @@ -12222,7 +12088,7 @@ MonoBehaviour: m_PersistentCalls: m_Calls: - m_Target: {fileID: 307684281} - m_TargetAssemblyTypeName: OneSignalSDK.OneSignalExampleBehaviour, OneSignal.UnityPackage.Example + m_TargetAssemblyTypeName: OneSignalExampleBehaviour, OneSignal.UnityPackage.Example m_MethodName: SetExternalIdString m_Mode: 0 m_Arguments: @@ -13458,7 +13324,7 @@ MonoBehaviour: m_PersistentCalls: m_Calls: - m_Target: {fileID: 307684281} - m_TargetAssemblyTypeName: OneSignalSDK.OneSignalExampleBehaviour, OneSignal.UnityPackage.Example + m_TargetAssemblyTypeName: OneSignalExampleBehaviour, OneSignal.UnityPackage.Example m_MethodName: RemoveTrigger m_Mode: 1 m_Arguments: @@ -13728,85 +13594,6 @@ MonoBehaviour: m_ChildScaleWidth: 0 m_ChildScaleHeight: 0 m_ReverseArrangement: 0 ---- !u!1 &1430329921 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1430329922} - - component: {fileID: 1430329924} - - component: {fileID: 1430329923} - m_Layer: 5 - m_Name: Text - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1430329922 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1430329921} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.9, y: 0.9, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 729372536} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &1430329923 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1430329921} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 14 - m_FontStyle: 0 - m_BestFit: 1 - m_MinSize: 10 - m_MaxSize: 40 - m_Alignment: 4 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 0 - m_VerticalOverflow: 0 - m_LineSpacing: 1 - m_Text: Exit Live Activity ---- !u!222 &1430329924 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1430329921} - m_CullTransparentMesh: 1 --- !u!1 &1433158545 GameObject: m_ObjectHideFlags: 0 @@ -14565,7 +14352,7 @@ MonoBehaviour: m_PersistentCalls: m_Calls: - m_Target: {fileID: 307684281} - m_TargetAssemblyTypeName: OneSignalSDK.OneSignalExampleBehaviour, OneSignal.UnityPackage.Example + m_TargetAssemblyTypeName: OneSignalExampleBehaviour, OneSignal.UnityPackage.Example m_MethodName: SetPhoneNumberString m_Mode: 0 m_Arguments: @@ -15920,7 +15707,7 @@ MonoBehaviour: m_PersistentCalls: m_Calls: - m_Target: {fileID: 307684281} - m_TargetAssemblyTypeName: OneSignalSDK.OneSignalExampleBehaviour, OneSignal.UnityPackage.Example + m_TargetAssemblyTypeName: OneSignalExampleBehaviour, OneSignal.UnityPackage.Example m_MethodName: SetLogLevel m_Mode: 1 m_Arguments: @@ -16718,7 +16505,7 @@ MonoBehaviour: m_PersistentCalls: m_Calls: - m_Target: {fileID: 307684281} - m_TargetAssemblyTypeName: OneSignalSDK.OneSignalExampleBehaviour, OneSignal.UnityPackage.Example + m_TargetAssemblyTypeName: OneSignalExampleBehaviour, OneSignal.UnityPackage.Example m_MethodName: ClearPush m_Mode: 1 m_Arguments: diff --git a/com.onesignal.unity.core/Samples~/OneSignalExampleScene.unity.meta b/com.onesignal.unity.core/Samples~/OneSignalExampleScene.unity.meta new file mode 100644 index 000000000..bb1fc560c --- /dev/null +++ b/com.onesignal.unity.core/Samples~/OneSignalExampleScene.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 54284d014d2241544a24b57b13c09ac8 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.onesignal.unity.core/package.json b/com.onesignal.unity.core/package.json index f93ae5ae7..8912054f1 100644 --- a/com.onesignal.unity.core/package.json +++ b/com.onesignal.unity.core/package.json @@ -5,6 +5,7 @@ "unity": "2021.3", "description": "OneSignal is the market leader in customer engagement, powering mobile push, web push, email, and in-app messages.", "dependencies": { + "com.unity.modules.jsonserialize": "1.0.0" }, "keywords": [ "push-notifications", @@ -33,7 +34,7 @@ "samples": [ { "displayName": "Full Usage", - "description": "An example monobehaviour which implements all of the major OneSignal features.", + "description": "A uGUI sample scene implementing the major OneSignal features. Requires com.unity.ugui.", "path": "Samples~" } ] diff --git a/examples/demo/.gitignore b/examples/demo/.gitignore index c737feee4..03ca2260e 100644 --- a/examples/demo/.gitignore +++ b/examples/demo/.gitignore @@ -75,3 +75,9 @@ Assets/StreamingAssets/.env.meta *.backup2 *.backup2.meta +# Generated by External Dependency Manager for Unity +/Assets/Plugins/Android/*.aar +/Assets/Plugins/Android/*.aar.meta +/Assets/Plugins/Android/*.jar +/Assets/Plugins/Android/*.jar.meta + diff --git a/examples/demo/Assets/OneSignal/Example.meta b/examples/demo/Assets/OneSignal/Documentation.meta similarity index 77% rename from examples/demo/Assets/OneSignal/Example.meta rename to examples/demo/Assets/OneSignal/Documentation.meta index 2760a1d0f..a6a6f312a 100644 --- a/examples/demo/Assets/OneSignal/Example.meta +++ b/examples/demo/Assets/OneSignal/Documentation.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: aa4bb34c9775d884fb45ff1c57a868e8 +guid: 6f0d0fbd33b464cc792eea02b602c95e folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/examples/demo/Assets/OneSignal/Documentation~/asset_listing.png b/examples/demo/Assets/OneSignal/Documentation/asset_listing.png similarity index 100% rename from examples/demo/Assets/OneSignal/Documentation~/asset_listing.png rename to examples/demo/Assets/OneSignal/Documentation/asset_listing.png diff --git a/examples/demo/Assets/OneSignal/Documentation/asset_listing.png.meta b/examples/demo/Assets/OneSignal/Documentation/asset_listing.png.meta new file mode 100644 index 000000000..c702a58e0 --- /dev/null +++ b/examples/demo/Assets/OneSignal/Documentation/asset_listing.png.meta @@ -0,0 +1,143 @@ +fileFormatVersion: 2 +guid: dd4b8121406594bde94b745ad433288a +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + 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 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + 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 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: iOS + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/examples/demo/Assets/OneSignal/Documentation~/ios_auto_sign.png b/examples/demo/Assets/OneSignal/Documentation/ios_auto_sign.png similarity index 100% rename from examples/demo/Assets/OneSignal/Documentation~/ios_auto_sign.png rename to examples/demo/Assets/OneSignal/Documentation/ios_auto_sign.png diff --git a/examples/demo/Assets/OneSignal/Documentation/ios_auto_sign.png.meta b/examples/demo/Assets/OneSignal/Documentation/ios_auto_sign.png.meta new file mode 100644 index 000000000..8563c4781 --- /dev/null +++ b/examples/demo/Assets/OneSignal/Documentation/ios_auto_sign.png.meta @@ -0,0 +1,143 @@ +fileFormatVersion: 2 +guid: 7f31e9b212d504402bc3fea93c72d605 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + 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 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + 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 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: iOS + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/examples/demo/Assets/OneSignal/Documentation~/ios_extension_sign_and_groups.png b/examples/demo/Assets/OneSignal/Documentation/ios_extension_sign_and_groups.png similarity index 100% rename from examples/demo/Assets/OneSignal/Documentation~/ios_extension_sign_and_groups.png rename to examples/demo/Assets/OneSignal/Documentation/ios_extension_sign_and_groups.png diff --git a/examples/demo/Assets/OneSignal/Documentation/ios_extension_sign_and_groups.png.meta b/examples/demo/Assets/OneSignal/Documentation/ios_extension_sign_and_groups.png.meta new file mode 100644 index 000000000..2f3f6ad44 --- /dev/null +++ b/examples/demo/Assets/OneSignal/Documentation/ios_extension_sign_and_groups.png.meta @@ -0,0 +1,143 @@ +fileFormatVersion: 2 +guid: f819ed3de42ea4343be0715454b8c6a4 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + 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 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + 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 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: iOS + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/examples/demo/Assets/OneSignal/Documentation~/ios_refresh_app_groups.png b/examples/demo/Assets/OneSignal/Documentation/ios_refresh_app_groups.png similarity index 100% rename from examples/demo/Assets/OneSignal/Documentation~/ios_refresh_app_groups.png rename to examples/demo/Assets/OneSignal/Documentation/ios_refresh_app_groups.png diff --git a/examples/demo/Assets/OneSignal/Documentation/ios_refresh_app_groups.png.meta b/examples/demo/Assets/OneSignal/Documentation/ios_refresh_app_groups.png.meta new file mode 100644 index 000000000..632736f4b --- /dev/null +++ b/examples/demo/Assets/OneSignal/Documentation/ios_refresh_app_groups.png.meta @@ -0,0 +1,143 @@ +fileFormatVersion: 2 +guid: 56854e94666b04ac580410eeb4e6e6fa +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + 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 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + 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 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: iOS + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/examples/demo/Assets/OneSignal/Documentation~/menu_import_package.png b/examples/demo/Assets/OneSignal/Documentation/menu_import_package.png similarity index 100% rename from examples/demo/Assets/OneSignal/Documentation~/menu_import_package.png rename to examples/demo/Assets/OneSignal/Documentation/menu_import_package.png diff --git a/examples/demo/Assets/OneSignal/Documentation/menu_import_package.png.meta b/examples/demo/Assets/OneSignal/Documentation/menu_import_package.png.meta new file mode 100644 index 000000000..9bb2eb367 --- /dev/null +++ b/examples/demo/Assets/OneSignal/Documentation/menu_import_package.png.meta @@ -0,0 +1,143 @@ +fileFormatVersion: 2 +guid: f91ce4fc81bfd422eb0f859abdc91095 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + 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 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + 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 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: iOS + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/examples/demo/Assets/OneSignal/Documentation~/menu_my_assets.png b/examples/demo/Assets/OneSignal/Documentation/menu_my_assets.png similarity index 100% rename from examples/demo/Assets/OneSignal/Documentation~/menu_my_assets.png rename to examples/demo/Assets/OneSignal/Documentation/menu_my_assets.png diff --git a/examples/demo/Assets/OneSignal/Documentation/menu_my_assets.png.meta b/examples/demo/Assets/OneSignal/Documentation/menu_my_assets.png.meta new file mode 100644 index 000000000..3a213aa34 --- /dev/null +++ b/examples/demo/Assets/OneSignal/Documentation/menu_my_assets.png.meta @@ -0,0 +1,143 @@ +fileFormatVersion: 2 +guid: 7612ec0d1c6f4421ebb5a39757e30999 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + 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 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + 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 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: iOS + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/examples/demo/Assets/OneSignal/Documentation~/menu_package_manager.png b/examples/demo/Assets/OneSignal/Documentation/menu_package_manager.png similarity index 100% rename from examples/demo/Assets/OneSignal/Documentation~/menu_package_manager.png rename to examples/demo/Assets/OneSignal/Documentation/menu_package_manager.png diff --git a/examples/demo/Assets/OneSignal/Documentation/menu_package_manager.png.meta b/examples/demo/Assets/OneSignal/Documentation/menu_package_manager.png.meta new file mode 100644 index 000000000..4cf44b2fa --- /dev/null +++ b/examples/demo/Assets/OneSignal/Documentation/menu_package_manager.png.meta @@ -0,0 +1,143 @@ +fileFormatVersion: 2 +guid: 423bd33b363524f0483b865a9d1e12f2 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + 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 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + 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 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: iOS + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/examples/demo/Assets/OneSignal/Documentation~/outdated_callout.png b/examples/demo/Assets/OneSignal/Documentation/outdated_callout.png similarity index 100% rename from examples/demo/Assets/OneSignal/Documentation~/outdated_callout.png rename to examples/demo/Assets/OneSignal/Documentation/outdated_callout.png diff --git a/examples/demo/Assets/OneSignal/Documentation/outdated_callout.png.meta b/examples/demo/Assets/OneSignal/Documentation/outdated_callout.png.meta new file mode 100644 index 000000000..e120610ed --- /dev/null +++ b/examples/demo/Assets/OneSignal/Documentation/outdated_callout.png.meta @@ -0,0 +1,143 @@ +fileFormatVersion: 2 +guid: 0b539d269e19d4ee3aa5a5b780f45368 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + 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 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + 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 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: iOS + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/examples/demo/Assets/OneSignal/Documentation~/package_import.png b/examples/demo/Assets/OneSignal/Documentation/package_import.png similarity index 100% rename from examples/demo/Assets/OneSignal/Documentation~/package_import.png rename to examples/demo/Assets/OneSignal/Documentation/package_import.png diff --git a/examples/demo/Assets/OneSignal/Documentation/package_import.png.meta b/examples/demo/Assets/OneSignal/Documentation/package_import.png.meta new file mode 100644 index 000000000..781e188f5 --- /dev/null +++ b/examples/demo/Assets/OneSignal/Documentation/package_import.png.meta @@ -0,0 +1,143 @@ +fileFormatVersion: 2 +guid: bad4a5df004a4434e932a1728459374e +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + 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 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + 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 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: iOS + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/examples/demo/Assets/OneSignal/Documentation~/package_manager_tab.png b/examples/demo/Assets/OneSignal/Documentation/package_manager_tab.png similarity index 100% rename from examples/demo/Assets/OneSignal/Documentation~/package_manager_tab.png rename to examples/demo/Assets/OneSignal/Documentation/package_manager_tab.png diff --git a/examples/demo/Assets/OneSignal/Documentation/package_manager_tab.png.meta b/examples/demo/Assets/OneSignal/Documentation/package_manager_tab.png.meta new file mode 100644 index 000000000..4bd2220de --- /dev/null +++ b/examples/demo/Assets/OneSignal/Documentation/package_manager_tab.png.meta @@ -0,0 +1,143 @@ +fileFormatVersion: 2 +guid: 6940cce8f93034cb4b9ca11f58a368d5 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + 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 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + 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 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: iOS + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/examples/demo/Assets/OneSignal/Documentation~/registry_menu.png b/examples/demo/Assets/OneSignal/Documentation/registry_menu.png similarity index 100% rename from examples/demo/Assets/OneSignal/Documentation~/registry_menu.png rename to examples/demo/Assets/OneSignal/Documentation/registry_menu.png diff --git a/examples/demo/Assets/OneSignal/Documentation/registry_menu.png.meta b/examples/demo/Assets/OneSignal/Documentation/registry_menu.png.meta new file mode 100644 index 000000000..389e97d66 --- /dev/null +++ b/examples/demo/Assets/OneSignal/Documentation/registry_menu.png.meta @@ -0,0 +1,143 @@ +fileFormatVersion: 2 +guid: 05f3f40b31a8d4ecbac5a7829e76b8eb +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + 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 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + 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 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: iOS + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/examples/demo/Assets/OneSignal/Documentation~/setup_window.png b/examples/demo/Assets/OneSignal/Documentation/setup_window.png similarity index 100% rename from examples/demo/Assets/OneSignal/Documentation~/setup_window.png rename to examples/demo/Assets/OneSignal/Documentation/setup_window.png diff --git a/examples/demo/Assets/OneSignal/Documentation/setup_window.png.meta b/examples/demo/Assets/OneSignal/Documentation/setup_window.png.meta new file mode 100644 index 000000000..ea3f0d815 --- /dev/null +++ b/examples/demo/Assets/OneSignal/Documentation/setup_window.png.meta @@ -0,0 +1,143 @@ +fileFormatVersion: 2 +guid: b0284171cf7ba49618cc4c7e0454eb4e +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + 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 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + 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 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: iOS + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/examples/demo/Assets/OneSignal/Editor/OneSignalBootstrapper.cs b/examples/demo/Assets/OneSignal/Editor/OneSignalBootstrapper.cs index 240291528..ced308887 100644 --- a/examples/demo/Assets/OneSignal/Editor/OneSignalBootstrapper.cs +++ b/examples/demo/Assets/OneSignal/Editor/OneSignalBootstrapper.cs @@ -61,7 +61,7 @@ private static void _checkForLegacy() if (inventory == null) return; // error - var currentPaths = OneSignalFileInventory.GetCurrentPaths(); + var currentPaths = OneSignalFileInventory.GetDistributedPaths(); var diff = currentPaths.Except(inventory.DistributedPaths); if (diff.Any()) diff --git a/examples/demo/Assets/OneSignal/Editor/OneSignalFileInventory.cs b/examples/demo/Assets/OneSignal/Editor/OneSignalFileInventory.cs index 578cf5853..9cebda2fc 100644 --- a/examples/demo/Assets/OneSignal/Editor/OneSignalFileInventory.cs +++ b/examples/demo/Assets/OneSignal/Editor/OneSignalFileInventory.cs @@ -44,10 +44,25 @@ internal sealed class OneSignalFileInventory : ScriptableObject /// /// Array of current paths within the OneSignal directory /// - public static string[] GetCurrentPaths() => + public static string[] GetDistributedPaths() => ConvertPathsToUnix( Directory.GetFiles(PackageAssetsPath, "*", SearchOption.AllDirectories) - ); + ) + .Where(IsDistributedPath) + .OrderBy(path => path, System.StringComparer.Ordinal) + .ToArray(); + + public static bool IsDistributedPath(string path) + { + var unixPath = ConvertPathToUnix(path); + + return !ExcludedPaths.Any(excludedPath => + unixPath == excludedPath + || unixPath == excludedPath + ".meta" + || unixPath.StartsWith(excludedPath + "/") + ) + && !unixPath.EndsWith("/.DS_Store"); + } /// /// Makes sure are using forward slash to be Unix compatible. @@ -57,18 +72,23 @@ public static string[] GetCurrentPaths() => /// paths with / as the directory separator public static string[] ConvertPathsToUnix(string[] paths) { - if (Path.DirectorySeparatorChar == Path.AltDirectorySeparatorChar) - return paths; - - var fixedPaths = paths.Select(path => - path.Replace(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar) - ); - - return fixedPaths.ToArray(); + return paths.Select(ConvertPathToUnix).ToArray(); } + private static string ConvertPathToUnix(string path) => + path.Replace(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar); + public const string AssetName = "OneSignalFileInventory.asset"; public static readonly string PackageAssetsPath = Path.Combine("Assets", "OneSignal"); + private static readonly string[] ExcludedPaths = ConvertPathsToUnix( + new[] + { + Path.Combine(PackageAssetsPath, "Attribution"), + Path.Combine(PackageAssetsPath, "Example"), + Path.Combine(PackageAssetsPath, "Editor", "OneSignalAndroidDependencies.xml"), + Path.Combine(PackageAssetsPath, "Editor", "OneSignaliOSDependencies.xml"), + } + ); public static readonly string EditorResourcesPath = Path.Combine( PackageAssetsPath, "Editor", diff --git a/examples/demo/Assets/OneSignal/Editor/Resources/OneSignalFileInventory.asset b/examples/demo/Assets/OneSignal/Editor/Resources/OneSignalFileInventory.asset index 165300740..858eed10d 100644 --- a/examples/demo/Assets/OneSignal/Editor/Resources/OneSignalFileInventory.asset +++ b/examples/demo/Assets/OneSignal/Editor/Resources/OneSignalFileInventory.asset @@ -13,41 +13,32 @@ MonoBehaviour: m_Name: OneSignalFileInventory m_EditorClassIdentifier: DistributedPaths: - - Assets/OneSignal/Attribution.meta - - Assets/OneSignal/CHANGELOG.md - - Assets/OneSignal/CHANGELOG.md.meta + - Assets/OneSignal/Documentation.meta + - Assets/OneSignal/Documentation/asset_listing.png + - Assets/OneSignal/Documentation/asset_listing.png.meta + - Assets/OneSignal/Documentation/ios_auto_sign.png + - Assets/OneSignal/Documentation/ios_auto_sign.png.meta + - Assets/OneSignal/Documentation/ios_extension_sign_and_groups.png + - Assets/OneSignal/Documentation/ios_extension_sign_and_groups.png.meta + - Assets/OneSignal/Documentation/ios_refresh_app_groups.png + - Assets/OneSignal/Documentation/ios_refresh_app_groups.png.meta + - Assets/OneSignal/Documentation/menu_import_package.png + - Assets/OneSignal/Documentation/menu_import_package.png.meta + - Assets/OneSignal/Documentation/menu_my_assets.png + - Assets/OneSignal/Documentation/menu_my_assets.png.meta + - Assets/OneSignal/Documentation/menu_package_manager.png + - Assets/OneSignal/Documentation/menu_package_manager.png.meta + - Assets/OneSignal/Documentation/outdated_callout.png + - Assets/OneSignal/Documentation/outdated_callout.png.meta + - Assets/OneSignal/Documentation/package_import.png + - Assets/OneSignal/Documentation/package_import.png.meta + - Assets/OneSignal/Documentation/package_manager_tab.png + - Assets/OneSignal/Documentation/package_manager_tab.png.meta + - Assets/OneSignal/Documentation/registry_menu.png + - Assets/OneSignal/Documentation/registry_menu.png.meta + - Assets/OneSignal/Documentation/setup_window.png + - Assets/OneSignal/Documentation/setup_window.png.meta - Assets/OneSignal/Editor.meta - - Assets/OneSignal/Example.meta - - Assets/OneSignal/LICENSE.md - - Assets/OneSignal/LICENSE.md.meta - - Assets/OneSignal/MIGRATION_GUIDE_v2_to_v3.md - - Assets/OneSignal/MIGRATION_GUIDE_v2_to_v3.md.meta - - Assets/OneSignal/MIGRATION_GUIDE_v3_to_v5.md - - Assets/OneSignal/MIGRATION_GUIDE_v3_to_v5.md.meta - - Assets/OneSignal/README.md - - Assets/OneSignal/README.md.meta - - Assets/OneSignal/VERSION - - Assets/OneSignal/VERSION.meta - - Assets/OneSignal/link.xml - - Assets/OneSignal/link.xml.meta - - Assets/OneSignal/Attribution/OneSignal.UnityPackage.Attribution.asmdef - - Assets/OneSignal/Attribution/OneSignal.UnityPackage.Attribution.asmdef.meta - - Assets/OneSignal/Attribution/OneSignalVSAttribution.cs - - Assets/OneSignal/Attribution/OneSignalVSAttribution.cs.meta - - Assets/OneSignal/Attribution/VSAttribution.cs - - Assets/OneSignal/Attribution/VSAttribution.cs.meta - - Assets/OneSignal/Documentation~/asset_listing.png - - Assets/OneSignal/Documentation~/ios_auto_sign.png - - Assets/OneSignal/Documentation~/ios_extension_sign_and_groups.png - - Assets/OneSignal/Documentation~/ios_refresh_app_groups.png - - Assets/OneSignal/Documentation~/menu_import_package.png - - Assets/OneSignal/Documentation~/menu_my_assets.png - - Assets/OneSignal/Documentation~/menu_package_manager.png - - Assets/OneSignal/Documentation~/outdated_callout.png - - Assets/OneSignal/Documentation~/package_import.png - - Assets/OneSignal/Documentation~/package_manager_tab.png - - Assets/OneSignal/Documentation~/registry_menu.png - - Assets/OneSignal/Documentation~/setup_window.png - Assets/OneSignal/Editor/AssemblyInfo.cs - Assets/OneSignal/Editor/AssemblyInfo.cs.meta - Assets/OneSignal/Editor/OneSignal.UnityPackage.Editor.asmdef @@ -57,35 +48,39 @@ MonoBehaviour: - Assets/OneSignal/Editor/OneSignalFileInventory.cs - Assets/OneSignal/Editor/OneSignalFileInventory.cs.meta - Assets/OneSignal/Editor/PackageManagement.meta - - Assets/OneSignal/Editor/Resources.meta - - Assets/OneSignal/Editor/Setup.meta - - Assets/OneSignal/Editor/SetupSteps.meta - - Assets/OneSignal/Editor/Utilities.meta - Assets/OneSignal/Editor/PackageManagement/Dependency.cs - Assets/OneSignal/Editor/PackageManagement/Dependency.cs.meta - Assets/OneSignal/Editor/PackageManagement/Manifest.cs - Assets/OneSignal/Editor/PackageManagement/Manifest.cs.meta - Assets/OneSignal/Editor/PackageManagement/ScopeRegistry.cs - Assets/OneSignal/Editor/PackageManagement/ScopeRegistry.cs.meta + - Assets/OneSignal/Editor/Resources.meta - Assets/OneSignal/Editor/Resources/OneSignalFileInventory.asset - Assets/OneSignal/Editor/Resources/OneSignalFileInventory.asset.meta + - Assets/OneSignal/Editor/Setup.meta - Assets/OneSignal/Editor/Setup/OneSignalSetupStep.cs - Assets/OneSignal/Editor/Setup/OneSignalSetupStep.cs.meta - Assets/OneSignal/Editor/Setup/OneSignalSetupWindow.cs - Assets/OneSignal/Editor/Setup/OneSignalSetupWindow.cs.meta + - Assets/OneSignal/Editor/SetupSteps.meta - Assets/OneSignal/Editor/SetupSteps/CleanUpLegacyStep.cs - Assets/OneSignal/Editor/SetupSteps/CleanUpLegacyStep.cs.meta - Assets/OneSignal/Editor/SetupSteps/ImportPackagesStep.cs - Assets/OneSignal/Editor/SetupSteps/ImportPackagesStep.cs.meta + - Assets/OneSignal/Editor/Utilities.meta - Assets/OneSignal/Editor/Utilities/MiniJSON.cs - Assets/OneSignal/Editor/Utilities/MiniJSON.cs.meta - Assets/OneSignal/Editor/Utilities/ReflectionHelpers.cs - Assets/OneSignal/Editor/Utilities/ReflectionHelpers.cs.meta - - Assets/OneSignal/Example/INCONSOLATA-VARIABLEFONT_WDTH,WGHT.TTF - - Assets/OneSignal/Example/INCONSOLATA-VARIABLEFONT_WDTH,WGHT.TTF.meta - - Assets/OneSignal/Example/OneSignal.UnityPackage.Example.asmdef - - Assets/OneSignal/Example/OneSignal.UnityPackage.Example.asmdef.meta - - Assets/OneSignal/Example/OneSignalExampleBehaviour.cs - - Assets/OneSignal/Example/OneSignalExampleBehaviour.cs.meta - - Assets/OneSignal/Example/OneSignalExampleScene.unity - - Assets/OneSignal/Example/OneSignalExampleScene.unity.meta + - Assets/OneSignal/LICENSE.md + - Assets/OneSignal/LICENSE.md.meta + - Assets/OneSignal/MIGRATION_GUIDE_v2_to_v3.md + - Assets/OneSignal/MIGRATION_GUIDE_v2_to_v3.md.meta + - Assets/OneSignal/MIGRATION_GUIDE_v3_to_v5.md + - Assets/OneSignal/MIGRATION_GUIDE_v3_to_v5.md.meta + - Assets/OneSignal/README.md + - Assets/OneSignal/README.md.meta + - Assets/OneSignal/VERSION + - Assets/OneSignal/VERSION.meta + - Assets/OneSignal/link.xml + - Assets/OneSignal/link.xml.meta diff --git a/examples/demo/Assets/OneSignal/Editor/SetupSteps/CleanUpLegacyStep.cs b/examples/demo/Assets/OneSignal/Editor/SetupSteps/CleanUpLegacyStep.cs index 63489d01d..cc55b77ed 100644 --- a/examples/demo/Assets/OneSignal/Editor/SetupSteps/CleanUpLegacyStep.cs +++ b/examples/demo/Assets/OneSignal/Editor/SetupSteps/CleanUpLegacyStep.cs @@ -77,7 +77,7 @@ private IEnumerable _getDiff() if (_inventory == null) return null; // error - var currentPaths = OneSignalFileInventory.GetCurrentPaths(); + var currentPaths = OneSignalFileInventory.GetDistributedPaths(); return currentPaths.Except(_inventory.DistributedPaths); } diff --git a/examples/demo/Assets/OneSignal/MIGRATION_GUIDE_v3_to_v5.md b/examples/demo/Assets/OneSignal/MIGRATION_GUIDE_v3_to_v5.md index 114507c69..469054975 100644 --- a/examples/demo/Assets/OneSignal/MIGRATION_GUIDE_v3_to_v5.md +++ b/examples/demo/Assets/OneSignal/MIGRATION_GUIDE_v3_to_v5.md @@ -260,7 +260,7 @@ The debug namespace is accessible via `OneSignal.Debug` and provides access to d # Troubleshooting ## Android ``` -Assets/OneSignal/Example/OneSignalExampleBehaviou.cs: error CS0246: The type or namespace name '...' could not be found (are you missing a using directive or an assembly reference?) +Assets/Samples/OneSignal Unity SDK - Core//Full Usage/OneSignalExampleBehaviour.cs: error CS0246: The type or namespace name '...' could not be found (are you missing a using directive or an assembly reference?) ``` ``` diff --git a/examples/demo/Assets/OneSignal/README.md b/examples/demo/Assets/OneSignal/README.md index eeebf702c..edb6b63e5 100644 --- a/examples/demo/Assets/OneSignal/README.md +++ b/examples/demo/Assets/OneSignal/README.md @@ -136,8 +136,7 @@ with your own. There is a complete guide for this [in the plugin's README](com.o [Customize Notification Icons](https://documentation.onesignal.com/docs/customize-notification-icons) page for additional details. ## Usage -You can find a complete implementation in our included [example MonoBehaviour](OneSignalExample/Assets/OneSignal/Example/OneSignalExampleBehaviour.cs). Additionally we have included a -[sample scene](OneSignalExample/Assets/OneSignal/Example/OneSignalExampleScene.unity) which you can run to test out the SDK. +For a compact implementation of the major SDK features, open **Window > Package Manager**, select **OneSignal Unity SDK - Core**, and import the **Full Usage** sample. The sample requires Unity UI (`com.unity.ugui`). Contributors can find the complete development demo in the repository's `examples/demo` directory. ### Initialization #### Prefab diff --git a/examples/demo/Assets/OneSignalPackager/Editor/OneSignalDistributionValidator.cs b/examples/demo/Assets/OneSignalPackager/Editor/OneSignalDistributionValidator.cs new file mode 100644 index 000000000..0b77e6fa0 --- /dev/null +++ b/examples/demo/Assets/OneSignalPackager/Editor/OneSignalDistributionValidator.cs @@ -0,0 +1,121 @@ +/* + * Modified MIT License + * + * Copyright 2023 OneSignal + * + * 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: + * + * 1. The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * 2. All copies of substantial portions of the Software may only be used in connection + * with services provided by OneSignal. + * + * 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.IO; +using System.Linq; +using UnityEditor; +using UnityEngine; + +namespace OneSignalSDK +{ + public static class OneSignalDistributionValidator + { + [MenuItem("OneSignal/Validate Distribution Layout", false, 101)] + public static void Validate() + { + ValidateInventory(); + ValidateSample(); + Debug.Log("[OneSignalDistributionValidator] Distribution layout is valid."); + } + + internal static string[] ValidateInventory() + { + var inventory = AssetDatabase.LoadAssetAtPath( + OneSignalFileInventory.AssetPath + ); + if (inventory == null) + throw new InvalidOperationException( + $"Missing inventory at {OneSignalFileInventory.AssetPath}." + ); + + var actualPaths = OneSignalFileInventory.GetDistributedPaths(); + var recordedPaths = inventory.DistributedPaths ?? Array.Empty(); + if (!actualPaths.SequenceEqual(recordedPaths)) + { + var missing = actualPaths.Except(recordedPaths); + var stale = recordedPaths.Except(actualPaths); + throw new InvalidOperationException( + "OneSignal file inventory is out of date." + + FormatPaths(" Missing", missing) + + FormatPaths(" Stale", stale) + + " Run OneSignal/Generate File Inventory and commit the result." + ); + } + + var unimportedPaths = actualPaths.Where(path => + !path.EndsWith(".meta") && AssetDatabase.LoadMainAssetAtPath(path) == null + ); + if (unimportedPaths.Any()) + throw new InvalidOperationException( + "Some distributed files cannot be exported by Unity." + + FormatPaths(" Unimported", unimportedPaths) + ); + + return actualPaths; + } + + private static void ValidateSample() + { + var repositoryRoot = Path.GetFullPath( + Path.Combine(Application.dataPath, "..", "..", "..") + ); + var samplePath = Path.Combine(repositoryRoot, "com.onesignal.unity.core", "Samples~"); + var requiredFiles = new[] + { + "INCONSOLATA-VARIABLEFONT_WDTH,WGHT.TTF", + "INCONSOLATA-VARIABLEFONT_WDTH,WGHT.TTF.meta", + "OneSignal.UnityPackage.Example.asmdef", + "OneSignal.UnityPackage.Example.asmdef.meta", + "OneSignalExampleBehaviour.cs", + "OneSignalExampleBehaviour.cs.meta", + "OneSignalExampleScene.unity", + "OneSignalExampleScene.unity.meta", + }; + var missingFiles = requiredFiles.Where(file => + !File.Exists(Path.Combine(samplePath, file)) + ); + if (missingFiles.Any()) + throw new InvalidOperationException( + "The Full Usage sample is incomplete." + + FormatPaths(" Missing", missingFiles) + ); + + var scene = File.ReadAllText(Path.Combine(samplePath, "OneSignalExampleScene.unity")); + if (scene.Contains("OneSignalSDK.OneSignalExampleBehaviour")) + throw new InvalidOperationException( + "The Full Usage sample scene contains stale OneSignalExampleBehaviour references." + ); + } + + private static string FormatPaths(string label, System.Collections.Generic.IEnumerable paths) + { + var pathList = paths.ToArray(); + return pathList.Length == 0 ? string.Empty : $"{label}: {string.Join(", ", pathList)}."; + } + } +} diff --git a/examples/demo/Assets/OneSignalPackager/Editor/OneSignalDistributionValidator.cs.meta b/examples/demo/Assets/OneSignalPackager/Editor/OneSignalDistributionValidator.cs.meta new file mode 100644 index 000000000..f12142089 --- /dev/null +++ b/examples/demo/Assets/OneSignalPackager/Editor/OneSignalDistributionValidator.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: f1a4db1343324e83aa4d08b04817eb67 diff --git a/examples/demo/Assets/OneSignalPackager/Editor/OneSignalFileInventoryGenerator.cs b/examples/demo/Assets/OneSignalPackager/Editor/OneSignalFileInventoryGenerator.cs index 507a0b2fb..db469ca5a 100644 --- a/examples/demo/Assets/OneSignalPackager/Editor/OneSignalFileInventoryGenerator.cs +++ b/examples/demo/Assets/OneSignalPackager/Editor/OneSignalFileInventoryGenerator.cs @@ -42,11 +42,19 @@ public static class OneSignalFileInventoryGenerator [MenuItem("OneSignal/Generate File Inventory", false, 100)] public static void GenerateInventory() { - var inventory = ScriptableObject.CreateInstance(); - inventory.DistributedPaths = OneSignalFileInventory.GetCurrentPaths(); - Directory.CreateDirectory(OneSignalFileInventory.EditorResourcesPath); - AssetDatabase.CreateAsset(inventory, OneSignalFileInventory.AssetPath); + var inventory = AssetDatabase.LoadAssetAtPath( + OneSignalFileInventory.AssetPath + ); + if (inventory == null) + { + inventory = ScriptableObject.CreateInstance(); + AssetDatabase.CreateAsset(inventory, OneSignalFileInventory.AssetPath); + } + + inventory.DistributedPaths = OneSignalFileInventory.GetDistributedPaths(); + EditorUtility.SetDirty(inventory); + AssetDatabase.SaveAssets(); } } } diff --git a/examples/demo/Assets/OneSignalPackager/Editor/OneSignalPackagePublisher.cs b/examples/demo/Assets/OneSignalPackager/Editor/OneSignalPackagePublisher.cs index b6630d245..ee01ceab0 100644 --- a/examples/demo/Assets/OneSignalPackager/Editor/OneSignalPackagePublisher.cs +++ b/examples/demo/Assets/OneSignalPackager/Editor/OneSignalPackagePublisher.cs @@ -47,12 +47,24 @@ public static void ExportUnityPackage() { UnityEngine.Debug.Log($"[OneSignalPackagePublisher] start exporting package"); AssetDatabase.Refresh(); + var inventoryPaths = OneSignalDistributionValidator.ValidateInventory(); + var filePaths = inventoryPaths + .Where(path => !path.EndsWith(".meta")) + .Concat( + inventoryPaths + .Where(path => + path.EndsWith(".meta") + && Directory.Exists(path.Substring(0, path.Length - 5)) + ) + .Select(path => path.Substring(0, path.Length - 5)) + ) + .Distinct() + .ToArray(); var packageVersion = File.ReadAllText(VersionFilePath); var packageName = $"OneSignal-v{packageVersion}.unitypackage"; UnityEngine.Debug.Log($"[OneSignalPackagePublisher] package name: {packageName}"); - string[] filePaths = _filePaths(); UnityEngine.Debug.Log( $"[OneSignalPackagePublisher] Found {filePaths.Length} files/directories to include:" ); @@ -64,34 +76,11 @@ public static void ExportUnityPackage() AssetDatabase.ExportPackage( filePaths, packageName, - ExportPackageOptions.Recurse | ExportPackageOptions.IncludeDependencies + ExportPackageOptions.IncludeDependencies ); } private static readonly string PackagePath = Path.Combine("Assets", "OneSignal"); private static readonly string VersionFilePath = Path.Combine(PackagePath, "VERSION"); - - private static readonly string[] Exclusions = - { - Path.Combine(PackagePath, "Attribution"), - ".DS_Store", - }; - - private static string[] _filePaths() - { - var files = Directory.GetFileSystemEntries(PackagePath); - UnityEngine.Debug.Log( - $"[OneSignalPackagePublisher] Getting file paths from: {PackagePath}" - ); - var pathsToInclude = files.Where(file => - { - if (file.EndsWith(".meta")) - file = file.Substring(0, file.Length - 5); - - return !Exclusions.Contains(file); - }); - - return pathsToInclude.ToArray(); - } } } diff --git a/examples/demo/Packages/packages-lock.json b/examples/demo/Packages/packages-lock.json index 5ea253b10..0375c29ed 100644 --- a/examples/demo/Packages/packages-lock.json +++ b/examples/demo/Packages/packages-lock.json @@ -12,7 +12,9 @@ "version": "file:../../../com.onesignal.unity.core", "depth": 0, "source": "local", - "dependencies": {} + "dependencies": { + "com.unity.modules.jsonserialize": "1.0.0" + } }, "com.onesignal.unity.ios": { "version": "file:../../../com.onesignal.unity.ios", diff --git a/examples/demo/README.md b/examples/demo/README.md index d66c70702..ea9bab89c 100644 --- a/examples/demo/README.md +++ b/examples/demo/README.md @@ -8,6 +8,15 @@ To upload or update the package on the Unity Asset Store, install the [Asset Sto ![Unity Version](docs/unity-version.png) +The Asset Store package is a bootstrapper, not the full demo or the UPM sample. Before publishing: + +1. Select **OneSignal > Generate File Inventory**. +2. Select **OneSignal > Validate Distribution Layout** and commit the regenerated inventory. +3. Select **OneSignal > ExportUnityPackage**. +4. Inspect the exported `.unitypackage` before upload. It must contain only the bootstrap content under `Assets/OneSignal`; it must not contain `Example`, `Attribution`, packager tooling, demo assets, generated dependency XML files, or `StreamingAssets/.env`. + +The canonical user sample is the **Full Usage** sample in `com.onesignal.unity.core/Samples~`. The complete demo in this directory is for repository development and testing only. + ## Command Line You can build and install without opening the Unity editor by using the provided scripts. Have an emulator/simulator booted first, then run: