Releases: Octopus-Community/octopus-sdk-unity
Release list
v1.14.0
API Changes
Breaking changes
Nothing. Every public C# symbol of 1.13.0 is still present with the same signature. The new parameters and overloads below are additive and source-compatible.
Non-breaking changes
New APIs
Icon overrides
OctopusSDK.SetIcons(OctopusIcons icons)replaces the icons of the native Octopus UI on Android and iOS. EachOctopusIconSlottakes anOctopusIcon(androidDrawableName, iOSResourceName), resolved the same way asOctopusLogo. Unset slots keep the native default, andSetIcons(null)restores them all. A few slots exist on one platform only and are ignored on the other; each slot's documentation says which.- The screen-state illustrations (empty lists, first-load errors) that the 1.14 native SDKs add are not exposed through this API yet.
// C# 7.3, the package's declared Unity floor
OctopusSDK.SetIcons(new OctopusIcons()
.Set(OctopusIconSlot.GroupsOpenList, new OctopusIcon("ic_my_groups", "MyGroupsIcon")));Guest profiles
OctopusProfile.IsGuesttells an anonymous guest apart from an authenticated user. In a forced-login community,OctopusSDK.CurrentProfilebecomes non-null again right afterDisconnectUser, as a guest. It matches iOSOctopusProfile.isGuestand Android'sisGuest. TheOctopusProfileconstructor gains an optionalisGuestparameter (defaultfalse).
Custom server on community switch
OctopusSDK.SwitchCommunity(string apiKey, ConnectionMode mode, string apiServerHost, int apiServerPort, Action onCompleted = null, Action<string> onError = null)switches community on a custom server. It is the switch counterpart ofInitialize'sapiServerHost/apiServerPort. The existing overload is unchanged and still targets production, so an app initialized against a custom host must pass that host again on every switch.
Member activity
OctopusSDK.OpenActivity(OctopusCommunityMemberId memberId, OctopusNavigationMode? navigationMode = null)opens another member's activity screen, by Octopus profile id (FromProfileId) or by your own user id (FromClientUserId).OpenActivity()still opens the connected user's activity.
Deprecated APIs
Nothing.
Other
- Comes with the 1.14 native SDKs, which add a Comments tab on profile and activity screens, a "who reacted" list, and empty, loading and error states on every list.
- iOS 1.14.0 ships a privacy manifest (
PrivacyInfo.xcprivacy). You may need to update the App Privacy section of your app's App Store Connect page so it matches the data the SDK declares. - Android 1.14.1 fixes a crash: stopping the SDK, switching community or initializing it again while it is still starting up no longer closes the app.
- The Octopus screens on Android now always show the status and navigation bars, even when the game runs fullscreen, as on iOS. Only the Octopus screen's own window changes. System-bar colors and icon contrast follow the Unity theme on both platforms, and Android app bars use the community palette.
- Android error reporting is clearer. Connection, reaction, entitlement and group failures return a readable message instead of an internal object dump.
ConnectUserreports a ban even when another error arrives with it. Community-data andResetfailures include the native error detail. Error codes and JSON shapes are unchanged. - The README is reorganized for a quick evaluation. The long-form integration reference now lives in
docs/integration-guide.md. - The example project gains Configuration and Account screens, a Unified Profile section, a persisted theme choice, rewritten scenario cards and display-rate rendering. None of these changes touch the package.
Native SDKs
- Android
1.14.1/ iOS1.14.0(seeUnityPackage/Editor/OctopusDependencies.xmlandUnityPackage/Editor/ruby/patch_xcode_proj.rb). Minimum versions are unchanged: Android minSdk 21, iOS 13.
Install
- UPM:
"com.octopuscommunity.octopus_sdk_for_unity": "https://github.com/Octopus-Community/octopus-sdk-unity.git?path=UnityPackage#v1.14.0". The#v1.14.0suffix pins this release, and the README documents both forms. Keep the External Dependency Manager for Unity alongside it: EDM4U is what brings the Android dependencies into your project. - Legacy
.unitypackage:OctopusCommunitySDK.unitypackageat the root ofmain.
Verification for this release
- Compile gate: 18/18 permutations.
- EditMode suite: 1473/1473 passed with Unity Editor 6000.3.3f1.
- On-device QA on Android and iOS, followed by an Android emulator smoke test (API 36) on the release build.
- iOS Xcode export built against
octopus-sdk-swift1.14.0. - The legacy
.unitypackagewas regenerated for 1.14.0 with Unity Editor 6000.3.3f1, but it was not import-tested in a fresh project before release. UPM remains the recommended install path.
Full Changelog: v1.13.0...v1.14.0
v1.13.0
API Changes
Breaking changes
Nothing. Every public C# symbol of 1.12.8 is still present with the same signature; no [Obsolete] was added and no serialized field of OctopusThemeSettings changed.
Non-breaking changes
New APIs
Connected profile and entitlements
The SDK exposes a snapshot of the connected user and lets the host refresh its entitlements.
OctopusSDK.CurrentProfile— the connectedOctopusProfile(null when nobody is connected).OctopusSDK.OnProfileChanged— fired whenever that snapshot changes.OctopusSDK.RefreshEntitlements(onSuccess, onError)— re-reads the user's entitlements, with a typed error.
Lifecycle
OctopusSDK.SwitchCommunity(...)/OctopusSDK.SwitchCommunityOctopusAuth(...)— move the running SDK to another community, with completion and error callbacks.OctopusSDK.Reset(),OctopusSDK.Stop(),OctopusSDK.Close()— clear the local state, stop the SDK, or close any Octopus screen currently presented over the game.
Community data
OctopusSDK.FetchCommunityData(...),OctopusSDK.StartObservingCommunityData(...)/StopObservingCommunityData(...)and theOctopusSDK.OnCommunityDataChangedevent — the community's counters and metadata, on Android, iOS and in the Editor Mock.OctopusCommunityMemberId—FromClientUserId(string)/FromProfileId(string), the member reference those calls take.
Client-object related posts
OctopusSDK.FetchOrCreateClientObjectRelatedPost(OctopusClientObject, ...)— fetch, or create on first call, the post attached to one of your own objects (a level, an item, a match), with typed errors,OctopusPostsnapshots and per-object observation.OctopusClientObject— the object's description (ObjectId,Text,CatchPhrase,ImagePath/ImageUrl,GroupId,ViewObjectButtonText, optionalSignBridgeShare) used when the post has to be created.
Groups
OctopusSDK.FollowGroup(...)/OctopusSDK.UnfollowGroup(...)with typed errors.OctopusGroup.CanAccess,OctopusGroup.CanCreateChildrenand theOctopusSDK.OnGroupAccessDeniedevent.
Navigation
OctopusSDK.OpenProfile(...),OctopusSDK.OpenActivity(...)— open a member's profile or activity from the game.- Optional
OctopusNavigationModeargument on the wholeOpen*family, and an interception callback for profile taps.
Reactions and user connection
OctopusSDK.SetReaction(...)— set or remove (null) a reaction, with typed errors.OctopusSDK.ConnectUser(...)now takes success and error callbacks; failures come back as a typedOctopusClientUserError.
Utilities
OctopusSDK.Version— the package version at runtime ("1.13.0"), so a host can display or log it.FormatOctopusCompactCount(long)— the same compact number formatting the SDK screens use (1.2K,3.4M).OctopusFont.FontWeight— optional weight on the font descriptors passed to the theme.- Debug configuration overrides and
OctopusSDK.DebugGetCommunityConfig()for development builds.
// C# 7.3 — the package's declared Unity floor
OctopusSDK.RefreshEntitlements(
onSuccess: () => Debug.Log("entitlements up to date"),
onError: error => Debug.LogWarning("refresh failed: " + error));Deprecated APIs
Nothing.
Other
- The example project was rebuilt around a searchable, sectioned QA Scenarios tab, a shared app bar, one place for sample colors and type sizes, and an About screen that states the sample's SDK and engine versions. None of it changes the package.
- The example project now renders the host-side profile page of the community-data scenario (a game screen fed by
OctopusSDK.FetchCommunityDatafor oneclientUserId), as the Android, Flutter and React Native samples do.
Native SDKs
- Android
1.13.4/ iOS1.13.2(seeUnityPackage/Editor/OctopusDependencies.xmlandpatch_xcode_proj.rb).
Known issues
- An iOS app exported by Unity 6000.3.x and built with Xcode 27 is refused at launch by iOS 27 (
UIScene life cycle is required for apps built with this SDK): Unity 6000.3's trampoline ships no scene manifest. The same project exported with Unity 6000.5 launches. This is a Unity limitation, not an SDK bug, but it is the first thing an Xcode 27 host meets.
Install
- UPM:
"com.octopuscommunity.octopus_sdk_for_unity": "https://github.com/Octopus-Community/octopus-sdk-unity.git?path=UnityPackage#v1.13.0"(the README documents both forms;#v1.13.0pins this release). - Legacy
.unitypackage: served frommain.
Verification for this release
- Compile gate: 18/18 permutations. EditMode suite: 1162/1162 passed on Unity Editor 6000.3.3f1.
- Android: debug APK of the example project checked on an Android 16 emulator (launch, SSO sign-in, community-data scenario including the host profile page, opening the community and returning to the game, Settings theme toggle, About reporting SDK 1.13.0 / Unity 6000.3.3f1).
- iOS: example project exported with Unity 6000.5.11f1 and built with Xcode 27, checked on an iOS 26.4 simulator (launch, SSO sign-in, community-data scenario including the host profile page, opening the community and returning to the game, Settings theme toggle, About reporting SDK 1.13.0 / Unity 6000.5.11f1); the 6000.3 + Xcode 27 export hits the known issue above.
- The legacy
OctopusCommunitySDK.unitypackagewas regenerated with Unity Editor 6000.3.3f1 and checked against the tree (419/419 paths), but was not import-tested in a scratch project; UPM remains the reference install path.
Full Changelog: v1.12.8...v1.13.0
v1.12.8
API Changes
Breaking changes
OctopusScreen.SettingsAboutremoved. The native "About the community" screen no longer exists (removed in Android 1.13.0 and iOS 1.13.0), and both native pins are now past those versions, so no platform emits the event any more. This is source-breaking only for code that names the member — typically acase OctopusScreen.SettingsAbout:branch in aswitchoverOctopusScreen, whether or not thatswitchhas adefault:. Delete the reference; nothing changes at runtime. A"SettingsAbout"token from an older native build still parses asOctopusScreen.Unknown. See MIGRATING.md.
// Before (1.12.7)
switch (evt.Screen)
{
case OctopusScreen.SettingsList: TrackScreen("octopus_settings"); break;
case OctopusScreen.SettingsAbout: TrackScreen("octopus_about"); break;
case OctopusScreen.SettingsAccount: TrackScreen("octopus_account"); break;
}
// After (1.12.8)
switch (evt.Screen)
{
case OctopusScreen.SettingsList: TrackScreen("octopus_settings"); break;
case OctopusScreen.SettingsAccount: TrackScreen("octopus_account"); break;
default: break;
}Non-breaking changes
New APIs
link and background theme colors
OctopusColorScheme gained two optional colors, matching what both native SDKs already accept: link paints the URLs rendered inside posts and comments, background paints every community screen. Omit one, or pass Color.clear, and the native SDK keeps its own default for that slot. Existing four-argument new OctopusColorScheme(primary, primaryLow, primaryHigh, onPrimary) calls compile and behave exactly as before. Both are also exposed in Octopus SDK > Theme Configuration under Optional, each behind its own checkbox, with a separate value per appearance through the light and dark schemes.
OctopusSDK.SetTheme(
colorScheme: new OctopusColorScheme(
primary: new Color32(255, 0, 0, 255),
primaryLow: new Color32(255, 179, 179, 255),
primaryHigh: new Color32(204, 0, 0, 255),
onPrimary: new Color32(255, 255, 255, 255),
link: new Color32(0, 102, 204, 255),
background: new Color32(250, 250, 250, 255)
)
);Deprecated APIs
Nothing
Other
- A theme color left unset now keeps the native default instead of being applied as transparent.
Color.clear— an unticked checkbox in Theme Configuration, orColor.clearpassed toOctopusColorScheme— is the "not set" sentinel for every color of the scheme, on both platforms. A scheme that enables only some of the four primary colors now mixes your colors with the native ones; a scheme with all four enabled behaves exactly as before. - iOS builds compile again on Unity 6000.5. An iOS export from Unity 6000.5.x failed in Xcode with
use of undeclared identifier 'UnityWillResume'(inOctopusUnityPause.mm), because 6000.5 replaced the trampoline's pause functions withUnitySetPlayerPause. The package now supports both trampolines; exports from earlier Unity versions are unchanged. Android was never affected. - iOS: a prefilled post no longer needs text or an image.
OctopusSDK.OpenCreatePostwith only a topic (and/or a CTA) now opens the editor on the preselected group on iOS too, as Android already did. A blankOpenCreatePost()still opens the plain editor. One native difference remains: a post created from a topic-only prefill is attributed as prefilled from client on iOS and as a user post on Android; a CTA-only prefill is prefilled from client on both. - iOS:
OctopusScreen.OtherUserPosts(withScreenDisplayedEvent.ProfileId) is now reported on iOS as well as Android.OctopusScreen.Activityis still Android-only: the iOS SDK has no matching event on 1.13.2. - The community UI on iOS now ships 24 locales (right-to-left ones included), asks for explicit terms acceptance where the community requires it, paints links and the community background with their dedicated colors, and builds with Xcode 27.
- Push Notifications sample, Android: a notification payload carrying only the legacy
message_idextra no longer re-opens the Octopus screen every time the game regains focus. - The example project's generated Android dependency files now match the Android 1.13.4 pin (the example only — a host's EDM4U resolve always read the package's
OctopusDependencies.xml). - The README documents a tag-pinned UPM URL (
?path=UnityPackage#vX.Y.Z) next to the unpinned one. - Example project: the QA Scenarios list opens a real screen for
connection,customEventsandlocale, driven by single-tap presets with a live result panel. Sample only — no package API changed.
Native SDKs
- Android
1.13.4/ iOS1.13.2(seeUnityPackage/Editor/OctopusDependencies.xmlandpatch_xcode_proj.rb). The iOS pin moves from 1.12.6 to 1.13.2; Android is unchanged. The unified-profile APIs added by iOS 1.13.0 are not surfaced by this package yet. Full native notes: Android, iOS.
Install
- UPM:
"com.octopuscommunity.octopus_sdk_for_unity": "https://github.com/Octopus-Community/octopus-sdk-unity.git?path=UnityPackage#v1.12.8"(the README documents both forms;#v1.12.8pins this release). Re-export for iOS after updating so the Xcode post-process writes the 1.13.2 SwiftPM pin. - Legacy
.unitypackage: served frommain. Regenerated for this version with Unity Editor 6000.3.3f1 (build_legacy_package.sh), not import-tested in a scratch project; UPM remains the reference install path.
Verification for this release
- Compile gate
ci/compile-check/compile-check.sh:compile check passed (18/18 permutations). - EditMode test suite, run with Unity 6000.3.3f1 (
-runTests -testPlatform EditMode): 146 passed, 0 failed. - On-device QA from Unity builds of the sample project at the release commit:
- Android (release AAB → universal APK, emulator API 36): SDK init, native feed open and back, the three QA scenario screens with a preset each, custom theme primary color applied, no fatal exception in logcat.
- iOS: iOS export from Unity 6000.5.11f1 (the version the report came from) →
xcodebuild -sdk iphoneos -configuration ReleaseBUILD SUCCEEDED,OctopusUnityPause.mmcompiled against the 6000.5 trampoline (UnityInternalInterface.hpresent) with no warning. Runtime smoke on an iOS 18.6 simulator (Unity 6000.3.3f1 export): SDK init, native community feed opened from the example, app backgrounded and foregrounded (the pause/resume path), feed closed back to Unity — same process throughout, no crash report. No physical iPhone was available.
- The legacy
.unitypackagewas regenerated from this tree with the Editor; it was not import-tested in a scratch project. - This SDK is published from a codebase that has not yet been standardised and cleaned up like the Android, Flutter and React Native ones, and without a general QA pass — it is not guaranteed to work to the same level.
Full Changelog: v1.12.7...v1.12.8
v1.12.7
API Changes
Breaking changes
Nothing
Non-breaking changes
New APIs
OctopusScreen.OtherUserPosts(withScreenDisplayedEvent.ProfileId) andOctopusScreen.Activity, reported by Android 1.13+ when another member's posts list or the activity center is displayed.
Deprecated APIs
Nothing
Other
- Android: opening the community no longer crashes when Android restores it in a fresh process. When the OS recreated
OctopusUIActivityafter the game's process had been killed in the background, before the game had calledOctopusSDK.Initializeagain, the app died withUninitializedPropertyAccessException: lateinit property koinApp has not been initialized. The activity now detects the uninitialised SDK, logs a warning, hands the user back to the game's launcher activity and finishes. (OCT-1785) - Android: Guava is now kept by the bridge's consumer ProGuard/R8 rules in minified host apps. gRPC reaches
com.google.common.**at runtime; a minified Unity host crashed atOctopusSDK.InitializewithNoSuchMethodError: Strings.isNullOrEmpty(GrpcUtil.getFlag) followed byNoClassDefFoundError: io.grpc.LoadBalancerRegistry. The rules ship in the AAR — nothing to add on the app side. (OCT-1784) - Push Notifications sample: Android notifications are now displayed out of the box. Octopus pushes reach Android as data-only FCM messages that neither the OS nor the Firebase Unity plugin renders. The sample now ships
Plugins/Android/OctopusMessagingService.java(extends the plugin'sListenerService, posts the notification, hands the tap back to the game) andPlugins/Android/OctopusPushSample.androidlib(registers it ahead of the plugin's default service); the C# sample reads the tap from the launch intent as well as from the runtime callback. README rewritten around the shipped files. - The package compiles again on Unity versions below 2021.2, as
package.json(2019.4 floor) declares: two C# 9 / C# 8 constructs were rewritten to C# 7.3 syntax, and the CI compile gate now pinsLangVersionto that floor. - The three UPM samples (
UnityPackage/Samples~/) are now included in the published package; earlier releases of this mirror omitted the folder, so Import in the Package Manager returned nothing. - Android no longer emits
OctopusScreen.SettingsAbout(the native "About the community" screen was removed in Android 1.13.0). The enum member is kept: iOS still reports it.
Native SDKs
- Android
1.13.4/ iOS1.12.6(seeUnityPackage/Editor/OctopusDependencies.xmlandpatch_xcode_proj.rb). The Android pin moves from 1.12.1 to 1.13.4, which carries the native side of both crash fixes above.
Install
- UPM:
"com.octopuscommunity.octopus_sdk_for_unity": "https://github.com/Octopus-Community/octopus-sdk-unity.git?path=UnityPackage#v1.12.7"(the README documents the unpinned form;#v1.12.7pins this release). Re-run the External Dependency Manager resolve after updating so the Android SDK moves to 1.13.4. - Legacy
.unitypackage: served frommain. This one is generated from the package tree by a script and not import-tested in an Editor; UPM is the reference install path for this release.
Verification for this release
- Compile gate
ci/compile-check/compile-check.sh:compile check passed (18/18 permutations). - EditMode test suite: run with Unity 6000.3.3f1 (
-runTests -testPlatform EditMode): 97 passed, 0 failed. - On-device QA from Unity builds of the sample project (Unity 6000.3.3f1, release commit):
- Android (minified release APK, R8 on, emulators API 35/36): SDK init, community feed and screens, theme,
OpenScreen, session events. Both crash fixes exercised directly: the R8 mapping keepscom.google.common.*/io.grpc.*and init runs with noNoSuchMethodError/NoClassDefFoundError; killing the game process while the Octopus screen is in front and restoringOctopusUIActivityalone returns to the game with the documentedOctopusForUnitywarning instead of crashing. - iOS (simulator, iPhone 16 / iOS 18.6, native SDK 1.12.6 unchanged): init, opening and closing the community screen,
SessionStarted/SessionStoppedevents. No crash. - Not exercised: end-to-end push delivery (the sample's Android notification service was verified to be packaged and registered, not fed a real push).
- Android (minified release APK, R8 on, emulators API 35/36): SDK init, community feed and screens, theme,
AndroidBridge/rebuilt with./build.shagainst Android 1.13.4; nothing automated compiles it.- The legacy
.unitypackagewas checked against the package tree (Scripts/build_legacy_package_nounity.py --check: MATCH); it was not import-tested in an Editor. - This SDK is published from a codebase that has not yet been standardised and cleaned up like the Android, Flutter and React Native ones, and without a general QA pass — it is not guaranteed to work to the same level.
Full Changelog: v1.12.6...v1.12.7
v1.12.6
v1.12.5
Added
- Forced community orientation. New
OctopusThemeSettings.ForcedOrientation(None/Portrait/Landscape), also exposed under a Behavior tab in Octopus SDK > Theme Configuration. Locks the native Octopus community UI to a fixed orientation independent of the game — e.g. a portrait community inside a landscape game — and restores the game's orientation when the community closes. Defaults toNone(follows the game/device). Fully contained in the Unity bridge; no upstream native SDK change. On iOS the app-level orientation mask is widened only while the community is shown; on Android the community activity's orientation is set. Platform notes: iOS requires iOS 16+ (uses the publicrequestGeometryUpdateAPI — no private-API rotation hacks; ignored below 16, community follows the game). Android 8.0 / API 26 cannot lock a translucent activity, so it opens unlocked on that version only.
v1.12.4
Added
- iOS: native SDK bumped to 1.12.6. Android pin (1.12.1) unchanged.
Fixed
OctopusSDK.ConnectUseracceptsnullfornickname,bio,picture.- Android: Octopus UI now draws edge-to-edge under the display cutout in every orientation.
See CHANGELOG.md for details.
v1.12.3
Octopus SDK for Unity 1.12.3
iOS native SDK bumped to 1.12.5. Android pin (1.12.1) unchanged.
Fixed
- iOS: bumped the native SDK to 1.12.5, which fixes a spurious error alert ("We are trying to retrieve your data. Please try again in a few moments.") that could appear on the first post in SSO / bridge-share communities even though the post was published successfully. iOS now aligns with Android and no longer surfaces this transient, self-healing connection error. No API or behavior change.
Docs
- Added
SECURITY.md(security policy / disclosure) andMIGRATING.md(migration guide).
v1.12.2
Octopus SDK for Unity 1.12.2
Native SDKs upgraded to Android 1.12.1 / iOS 1.12.4.
Added
- Real-time event stream — OctopusSDK.OnOctopusEvent delivers a typed stream of community events (post/comment/reply created, content deleted, reaction modified,
poll voted, group follow changed, gamification points gained/removed, screen displayed, post/comment/translation clicks, profile modified, session start/stop) on
both iOS and Android. See OctopusEvent for the full catalogue. Handlers fire on a background thread, in order — do thread-safe/backend work directly, and use
OctopusMainThread.Post(...) for Unity-side work.- Android-only fields (the iOS SDK lacks them): ProfileReportedEvent, ContentDeletedEvent.ParentId, ContentReportedEvent.ContentKind. Report Reasons are raw
platform tokens.
- Android-only fields (the iOS SDK lacks them): ProfileReportedEvent, ContentDeletedEvent.ParentId, ContentReportedEvent.ContentKind. Report Reasons are raw
- Bridge Share image signing — OctopusPrefilledPost.SignBridgeShare authorises a prefilled-share image in a community that restricts member pictures. The SDK
computes a content fingerprint and calls your callback; your backend returns a short-lived HS256 JWT (bridge_fingerprint claim). Fires on both platforms, only when
the share carries an image and the community gates pictures. Runs on a background thread — use loop-independent I/O and never ship your signing secret in the app. - Custom API endpoint — OctopusSDK.Initialize now accepts an optional gRPC server host/port (apiServerHost, apiServerPort) Traffic is always over TLS.
- iOS game-loop suspension — the Unity game loop is now suspended while the Octopus UI is open (matching Android), firing OnApplicationPause / OnApplicationFocus.
Events and mid-session token refresh keep working via a loop-independent native channel.
Changed
- Android URL interception — NavigateToUrlHandler is now resolved synchronously the moment a URL is tapped. HandledByOctopus opens the system browser while keeping
the Octopus screen open; only HandledByApp brings your app to the foreground. The handler runs off Unity's main thread — keep it to a fast routing decision.
Fixed
- iOS: native SDK bumped to 1.12.4, restoring compilation under Xcode 27 / Swift 6.4. No API or behavior change.
- Android: mid-session token-refresh stall when the Octopus UI was open.
- Android: reusing the Octopus screen for a follow-up Open* call now re-reads the requested destination (via onNewIntent) instead of briefly showing the previous
screen.
v1.12.1
Octopus SDK for Unity 1.12.1
A wrapper-only release: Editor Mock Mode for in-Editor iteration and testing, plus iOS/Android navigation and link-interception fixes. Native SDKs remain at 1.12.0.
Added
- Editor Mock Mode — the SDK now runs in the Unity Editor without a device build. Async calls (
ConnectUser/DisconnectUser, group sync/fetch) resolve instead of hanging, an
in-Editor overlay shows the simulated screen, andOctopusSDK.Mockexposes a recorded call log plus drivers (EmitNotSeenCount,EmitLoginRequired,EmitNavigateToClientObject,
EmitGroupsChanged,EmitModifyUser) for manual iteration and automated EditMode tests. Toggle at runtime withOctopusSDK.Mock.Enabled/OctopusSDK.Mock.ShowOverlay(or an optional
OctopusMockSettingsasset); on by default in the Editor and fully compiled out of device builds. - Prefilled posts can include a call-to-action button via
OctopusPrefilledPost.CtaLabel/OctopusPrefilledPost.CtaUrl(both required, otherwise the CTA is omitted). OctopusSDK.NavigateToUrlHandlerto intercept CTA/link taps inside Octopus and return aUrlOpeningStrategy(HandledByAppto handle it yourself,HandledByOctopusto let Octopus
open it). When unset, Octopus opens every URL as before.OctopusSDK.OnNavigateToClientObjectevent, raised when a user taps a CTA on a post linked to one of your own objects (article, product…); the argument is theclientObjectId.
Fixed
- iOS: opening the main feed (
Open()/OpenPost("")) right afterOpenCreatePostcould re-show the post composer instead of the feed; each navigation call now resets to the
requested screen. - Android: CTA/link tap interception (
NavigateToUrlHandler) andOnNavigateToClientObjectnow fire immediately and bring your app to the foreground, instead of only running after
the user manually closed the Octopus UI.
Installation
UPM (recommended): add to Packages/manifest.json:
"com.octopuscommunity.octopus_sdk_for_unity": "https://github.com/Octopus-Community/octopus-sdk-unity.git?path=UnityPackage"
Legacy: download OctopusCommunitySDK.unitypackage from the assets below (also requires the [External Dependency Manager](https://github.com/googlesamples/unity-jar-resolver)).
Full Changelog: https://github.com/Octopus-Community/octopus-sdk-unity/compare/v1.12.0...v1.12.1