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..fb6851f80 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -20,7 +20,7 @@ Before creating bug reports, please check this list of steps to follow. #### How Do I Submit a Good Bug Report * **Use a clear and descriptive title** for the issue to identify the problem. -* **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. +* **Include Reproducibility** It is nearly always a good idea to include steps to reproduce 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/Documentation/menu_import_package.png b/Documentation/menu_import_package.png deleted file mode 100644 index 84a4623cf..000000000 Binary files a/Documentation/menu_import_package.png and /dev/null differ diff --git a/Documentation/menu_my_assets.png b/Documentation/menu_my_assets.png deleted file mode 100644 index d21324a3c..000000000 Binary files a/Documentation/menu_my_assets.png and /dev/null differ diff --git a/Documentation/menu_package_manager.png b/Documentation/menu_package_manager.png deleted file mode 100644 index 8866704ad..000000000 Binary files a/Documentation/menu_package_manager.png and /dev/null differ diff --git a/Documentation/outdated_callout.png b/Documentation/outdated_callout.png deleted file mode 100644 index 08097d73f..000000000 Binary files a/Documentation/outdated_callout.png and /dev/null differ diff --git a/Documentation/package_import.png b/Documentation/package_import.png deleted file mode 100644 index 6dfbf13b2..000000000 Binary files a/Documentation/package_import.png and /dev/null differ 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 33efc7628..a780d4ead 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ If you run into any challenges or have concerns, please contact our support team A free email, sms, push notification and in app messaging solution for mobile applications built through Unity. -[OneSignal](https://onesignal.com) provides a fully array of omni-channel messaging solutions across: +[OneSignal](https://onesignal.com) provides a full array of omni-channel messaging solutions across: - Push Notifications (mobile & web) - In App Messages @@ -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.android/package.json b/com.onesignal.unity.android/package.json index dc32ff727..4c1e77cd8 100644 --- a/com.onesignal.unity.android/package.json +++ b/com.onesignal.unity.android/package.json @@ -12,7 +12,6 @@ "notification-service", "notifications", "sdk", - "pushnotificaitions", "apns", "gcm", "android" 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 064ad176d..116f75b20 100644 --- a/com.onesignal.unity.core/package.json +++ b/com.onesignal.unity.core/package.json @@ -5,13 +5,13 @@ "unity": "2022.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", "notification-service", "notifications", "sdk", - "pushnotificaitions", "apns", "gcm" ], @@ -33,7 +33,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/com.onesignal.unity.ios/package.json b/com.onesignal.unity.ios/package.json index eca108b8a..1bc22e578 100644 --- a/com.onesignal.unity.ios/package.json +++ b/com.onesignal.unity.ios/package.json @@ -12,7 +12,6 @@ "notification-service", "notifications", "sdk", - "pushnotificaitions", "apns", "gcm", "ios" 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/Documentation/asset_listing.png b/examples/demo/Assets/OneSignal/Documentation/asset_listing.png similarity index 100% rename from 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/Documentation/ios_auto_sign.png b/examples/demo/Assets/OneSignal/Documentation/ios_auto_sign.png similarity index 100% rename from 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/Documentation/ios_extension_sign_and_groups.png b/examples/demo/Assets/OneSignal/Documentation/ios_extension_sign_and_groups.png similarity index 100% rename from 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/Documentation/ios_refresh_app_groups.png b/examples/demo/Assets/OneSignal/Documentation/ios_refresh_app_groups.png similarity index 100% rename from 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/Documentation/package_manager_tab.png b/examples/demo/Assets/OneSignal/Documentation/package_manager_tab.png similarity index 100% rename from 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/Documentation/registry_menu.png b/examples/demo/Assets/OneSignal/Documentation/registry_menu.png similarity index 100% rename from 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/Documentation/setup_window.png b/examples/demo/Assets/OneSignal/Documentation/setup_window.png similarity index 100% rename from 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/Documentation~/asset_listing.png b/examples/demo/Assets/OneSignal/Documentation~/asset_listing.png deleted file mode 100644 index afb8490f6..000000000 Binary files a/examples/demo/Assets/OneSignal/Documentation~/asset_listing.png and /dev/null differ diff --git a/examples/demo/Assets/OneSignal/Documentation~/ios_auto_sign.png b/examples/demo/Assets/OneSignal/Documentation~/ios_auto_sign.png deleted file mode 100644 index 1225b01d0..000000000 Binary files a/examples/demo/Assets/OneSignal/Documentation~/ios_auto_sign.png and /dev/null differ 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 deleted file mode 100644 index 8e76258ab..000000000 Binary files a/examples/demo/Assets/OneSignal/Documentation~/ios_extension_sign_and_groups.png and /dev/null differ diff --git a/examples/demo/Assets/OneSignal/Documentation~/ios_refresh_app_groups.png b/examples/demo/Assets/OneSignal/Documentation~/ios_refresh_app_groups.png deleted file mode 100644 index e06c52a5e..000000000 Binary files a/examples/demo/Assets/OneSignal/Documentation~/ios_refresh_app_groups.png and /dev/null differ diff --git a/examples/demo/Assets/OneSignal/Documentation~/menu_import_package.png b/examples/demo/Assets/OneSignal/Documentation~/menu_import_package.png deleted file mode 100644 index 84a4623cf..000000000 Binary files a/examples/demo/Assets/OneSignal/Documentation~/menu_import_package.png and /dev/null differ diff --git a/examples/demo/Assets/OneSignal/Documentation~/menu_my_assets.png b/examples/demo/Assets/OneSignal/Documentation~/menu_my_assets.png deleted file mode 100644 index d21324a3c..000000000 Binary files a/examples/demo/Assets/OneSignal/Documentation~/menu_my_assets.png and /dev/null differ diff --git a/examples/demo/Assets/OneSignal/Documentation~/menu_package_manager.png b/examples/demo/Assets/OneSignal/Documentation~/menu_package_manager.png deleted file mode 100644 index 8866704ad..000000000 Binary files a/examples/demo/Assets/OneSignal/Documentation~/menu_package_manager.png and /dev/null differ diff --git a/examples/demo/Assets/OneSignal/Documentation~/outdated_callout.png b/examples/demo/Assets/OneSignal/Documentation~/outdated_callout.png deleted file mode 100644 index 08097d73f..000000000 Binary files a/examples/demo/Assets/OneSignal/Documentation~/outdated_callout.png and /dev/null differ diff --git a/examples/demo/Assets/OneSignal/Documentation~/package_import.png b/examples/demo/Assets/OneSignal/Documentation~/package_import.png deleted file mode 100644 index 6dfbf13b2..000000000 Binary files a/examples/demo/Assets/OneSignal/Documentation~/package_import.png and /dev/null differ diff --git a/examples/demo/Assets/OneSignal/Documentation~/package_manager_tab.png b/examples/demo/Assets/OneSignal/Documentation~/package_manager_tab.png deleted file mode 100644 index 6ddc638ec..000000000 Binary files a/examples/demo/Assets/OneSignal/Documentation~/package_manager_tab.png and /dev/null differ diff --git a/examples/demo/Assets/OneSignal/Documentation~/registry_menu.png b/examples/demo/Assets/OneSignal/Documentation~/registry_menu.png deleted file mode 100644 index e9d1bf1eb..000000000 Binary files a/examples/demo/Assets/OneSignal/Documentation~/registry_menu.png and /dev/null differ diff --git a/examples/demo/Assets/OneSignal/Documentation~/setup_window.png b/examples/demo/Assets/OneSignal/Documentation~/setup_window.png deleted file mode 100644 index 1293f8512..000000000 Binary files a/examples/demo/Assets/OneSignal/Documentation~/setup_window.png and /dev/null differ 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 82cf4c524..7dd22685f 100644 --- a/examples/demo/Assets/OneSignal/Editor/OneSignalFileInventory.cs +++ b/examples/demo/Assets/OneSignal/Editor/OneSignalFileInventory.cs @@ -44,13 +44,26 @@ 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) ) - .Except(GeneratedDependencyPaths) + .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. /// https://docs.microsoft.com/en-us/dotnet/api/system.io.path.altdirectoryseparatorchar?view=net-5.0#examples @@ -59,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..c08c4be46 100644 --- a/examples/demo/Assets/OneSignal/Editor/Resources/OneSignalFileInventory.asset +++ b/examples/demo/Assets/OneSignal/Editor/Resources/OneSignalFileInventory.asset @@ -13,41 +13,22 @@ 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/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 +38,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 d47f06754..9509a814d 100644 --- a/examples/demo/Assets/OneSignal/README.md +++ b/examples/demo/Assets/OneSignal/README.md @@ -5,7 +5,7 @@ # OneSignal Unity SDK A free email, sms, push notification and in app messaging solution for mobile applications built through Unity. -[OneSignal](https://onesignal.com) provides a fully array of omni-channel messaging solutions across: +[OneSignal](https://onesignal.com) provides a full array of omni-channel messaging solutions across: - Push Notifications (mobile & web) - In App Messages @@ -36,8 +36,8 @@ And via many additional platforms. [Check them all out](https://documentation.on - Android Builds: Target API Level 33 or higher - iOS Builds: CocoaPods 1.11.3 or newer - In order to test push notifications you will need - - An Android 4.0.3 or newer device or emulator with "Google Play services" installed - - An iOS 9 or newer device (iPhone, iPad, or iPod Touch) + - An Android 7 or newer device or emulator with "Google Play Store (Services)" installed + - An iOS 11 or newer device (iPhone, iPad, or iPod Touch) ### Push Notification Credentials You must generate the appropriate credentials for the platform(s) you are releasing on: @@ -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/Assets/Resources/Theme.uss b/examples/demo/Assets/Resources/Theme.uss index 1282d5d44..a7e7fceda 100644 --- a/examples/demo/Assets/Resources/Theme.uss +++ b/examples/demo/Assets/Resources/Theme.uss @@ -13,12 +13,6 @@ --os-text-primary: #202124; --os-text-secondary: #757575; --os-text-hint: #9E9E9E; - --os-log-background: #1A1B1E; - --os-log-debug: #82AAFF; - --os-log-info: #C3E88D; - --os-log-warn: #FFCB6B; - --os-log-error: #FF5370; - --os-log-timestamp: #676E7B; --card-gap: 8px; } diff --git a/examples/demo/Assets/Scripts/Editor/BuildScript.cs b/examples/demo/Assets/Scripts/Editor/BuildScript.cs index 454ceb196..e2df5b0f6 100644 --- a/examples/demo/Assets/Scripts/Editor/BuildScript.cs +++ b/examples/demo/Assets/Scripts/Editor/BuildScript.cs @@ -13,7 +13,7 @@ public static class BuildScript /// /// Builds an Android APK using the architecture and scripting backend - /// pre-configured in ProjectSettings.asset by build_android.sh. + /// pre-configured in ProjectSettings.asset by run-android.sh. /// /// In Unity 6, only ARMv7 supports Mono; ARM64 requires IL2CPP. /// The shell script patches the correct values before launching Unity. diff --git a/examples/demo/Assets/StreamingAssets/SwiftPlugin.framework.meta b/examples/demo/Assets/StreamingAssets/SwiftPlugin.framework.meta deleted file mode 100644 index a7a224771..000000000 --- a/examples/demo/Assets/StreamingAssets/SwiftPlugin.framework.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: a3712c0920e69484ab6bf167fdfafd04 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/examples/demo/Assets/UI/Components.meta b/examples/demo/Assets/UI/Components.meta deleted file mode 100644 index 5e905cfcd..000000000 --- a/examples/demo/Assets/UI/Components.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 00537c3b1890b4e94a3e76fa108dd094 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/examples/demo/Assets/UI/Components/LogView.uss b/examples/demo/Assets/UI/Components/LogView.uss deleted file mode 100644 index 5f75e29d4..000000000 --- a/examples/demo/Assets/UI/Components/LogView.uss +++ /dev/null @@ -1,104 +0,0 @@ -.log-container { - background-color: #1A1B1E; - width: 100%; - border-bottom-width: 1px; - border-bottom-color: #333; -} - -.log-header { - flex-direction: row; - align-items: center; - justify-content: space-between; - padding: 12px 16px; -} - -.log-header-left { - flex-direction: row; - align-items: center; -} - -.log-header-right { - flex-direction: row; - align-items: center; -} - -.log-header-title { - font-size: 11px; - color: white; - -unity-font-style: bold; -} - -.log-header-count { - font-size: 11px; - color: #9E9E9E; - margin-left: 8px; -} - -.log-clear-button { - width: 24px; - height: 24px; - background-color: transparent; - border-width: 0; - color: #9E9E9E; - font-size: 18px; - -unity-font-definition: resource("MaterialIcons-Regular"); - -unity-text-align: middle-center; - padding: 0; -} - -.log-scroll { - height: 100px; -} - -.log-entry { - flex-direction: row; - padding: 1px 12px; - align-items: flex-start; -} - -.log-timestamp { - font-size: 11px; - color: #676E7B; - min-width: 70px; - margin-right: 4px; - -unity-font-definition: resource("DroidSansMono"); -} - -.log-level { - font-size: 11px; - min-width: 14px; - margin-right: 4px; - -unity-font-style: bold; - -unity-font-definition: resource("DroidSansMono"); -} - -.log-level-d { color: #82AAFF; } -.log-level-i { color: #C3E88D; } -.log-level-w { color: #FFCB6B; } -.log-level-e { color: #FF5370; } - -.log-message { - font-size: 11px; - color: white; - flex-grow: 1; - flex-shrink: 1; - white-space: nowrap; - -unity-font-definition: resource("DroidSansMono"); -} - -.log-empty { - font-size: 11px; - color: #9E9E9E; - -unity-text-align: middle-center; - padding: 8px; -} - -.log-scroll Scroller { - width: 0; - height: 0; - min-width: 0; - min-height: 0; - max-width: 0; - max-height: 0; - overflow: hidden; -} diff --git a/examples/demo/Assets/UI/Components/LogView.uss.meta b/examples/demo/Assets/UI/Components/LogView.uss.meta deleted file mode 100644 index b9913893a..000000000 --- a/examples/demo/Assets/UI/Components/LogView.uss.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: 8e458a22c72fd4e0a93bd3cce4a5de66 -ScriptedImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 2 - userData: - assetBundleName: - assetBundleVariant: - script: {fileID: 12385, guid: 0000000000000000e000000000000000, type: 0} - disableValidation: 0 - unsupportedSelectorAction: 0 diff --git a/examples/demo/Assets/UI/Dialogs.meta b/examples/demo/Assets/UI/Dialogs.meta deleted file mode 100644 index 38c2107e8..000000000 --- a/examples/demo/Assets/UI/Dialogs.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: dbf879b8fd5d140d9b8a90cbf862e0ad -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/examples/demo/Assets/UI/Screens.meta b/examples/demo/Assets/UI/Screens.meta deleted file mode 100644 index 5fb0d3cf0..000000000 --- a/examples/demo/Assets/UI/Screens.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 080bbaf7be0ea44bcadf6a3b0ce9993b -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/examples/demo/Assets/UI/Screens/HomeScreen.uxml b/examples/demo/Assets/UI/Screens/HomeScreen.uxml deleted file mode 100644 index 9006a458c..000000000 --- a/examples/demo/Assets/UI/Screens/HomeScreen.uxml +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/examples/demo/Assets/UI/Screens/HomeScreen.uxml.meta b/examples/demo/Assets/UI/Screens/HomeScreen.uxml.meta deleted file mode 100644 index 5c1b24d86..000000000 --- a/examples/demo/Assets/UI/Screens/HomeScreen.uxml.meta +++ /dev/null @@ -1,10 +0,0 @@ -fileFormatVersion: 2 -guid: a513ec7d0570b488d94d0f311f993676 -ScriptedImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 2 - userData: - assetBundleName: - assetBundleVariant: - script: {fileID: 13804, guid: 0000000000000000e000000000000000, type: 0} diff --git a/examples/demo/Assets/UI/Screens/SecondaryScreen.uxml b/examples/demo/Assets/UI/Screens/SecondaryScreen.uxml deleted file mode 100644 index 4c2342c67..000000000 --- a/examples/demo/Assets/UI/Screens/SecondaryScreen.uxml +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/examples/demo/Assets/UI/Screens/SecondaryScreen.uxml.meta b/examples/demo/Assets/UI/Screens/SecondaryScreen.uxml.meta deleted file mode 100644 index 001d8af4e..000000000 --- a/examples/demo/Assets/UI/Screens/SecondaryScreen.uxml.meta +++ /dev/null @@ -1,10 +0,0 @@ -fileFormatVersion: 2 -guid: e7089e10fc3d045069efa48ca66d57f6 -ScriptedImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 2 - userData: - assetBundleName: - assetBundleVariant: - script: {fileID: 13804, guid: 0000000000000000e000000000000000, type: 0} diff --git a/examples/demo/Assets/UI/Sections.meta b/examples/demo/Assets/UI/Sections.meta deleted file mode 100644 index ba6eb0b97..000000000 --- a/examples/demo/Assets/UI/Sections.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: bb199885e244c470c8fe93bd89d2fc3e -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/examples/demo/Assets/UI/Theme.meta b/examples/demo/Assets/UI/Theme.meta deleted file mode 100644 index f90afb388..000000000 --- a/examples/demo/Assets/UI/Theme.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: aa1683f9f941b4c448270b8eef836ced -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/examples/demo/Packages/packages-lock.json b/examples/demo/Packages/packages-lock.json index 984541678..686303652 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/ProjectSettings/ProjectSettings.asset b/examples/demo/ProjectSettings/ProjectSettings.asset index e6d9e7096..621d21089 100644 --- a/examples/demo/ProjectSettings/ProjectSettings.asset +++ b/examples/demo/ProjectSettings/ProjectSettings.asset @@ -826,14 +826,14 @@ PlayerSettings: editorAssembliesCompatibilityLevel: 2 m_RenderingPath: 1 m_MobileRenderingPath: 1 - metroPackageName: OneSignalExample + metroPackageName: OneSignalDemo metroPackageVersion: metroCertificatePath: metroCertificatePassword: metroCertificateSubject: metroCertificateIssuer: metroCertificateNotAfter: 0000000000000000 - metroApplicationDescription: OneSignalExample + metroApplicationDescription: OneSignal Demo wsaImages: {} metroTileShortName: metroTileShowName: 0 diff --git a/examples/demo/README.md b/examples/demo/README.md index f33ca45c0..0400adb24 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: @@ -61,6 +70,6 @@ Check your build profiles and make sure iOS platform is selected. Then configure your play settings and set `Target SDK` to `Simulator SDK` ![iOS Example 1](docs/ios-example-1.png) -Then click `Build and Run` and select a location for the apk bundle. Or click `Build` to use own simulator. +Then click `Build and Run` and select a location for the Xcode project. Or click `Build` to use your own simulator. -![iOS Example 1](docs/ios-example-2.png) +![iOS Example 2](docs/ios-example-2.png) diff --git a/examples/demo/run-android.sh b/examples/demo/run-android.sh index fe6bafdb4..670a4442f 100755 --- a/examples/demo/run-android.sh +++ b/examples/demo/run-android.sh @@ -2,7 +2,7 @@ # Build the OneSignal Unity demo APK and install it on a running emulator. # # Usage: -# ./build_android.sh [--no-install] [--install-only] +# ./run-android.sh [--no-install] [--install-only] set -eu SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"