Skip to content

Releases: Octopus-Community/octopus-sdk-unity

v1.14.0

Choose a tag to compare

@ThomasGorisse ThomasGorisse released this 28 Sep 14:35

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. Each OctopusIconSlot takes an OctopusIcon(androidDrawableName, iOSResourceName), resolved the same way as OctopusLogo. Unset slots keep the native default, and SetIcons(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.IsGuest tells an anonymous guest apart from an authenticated user. In a forced-login community, OctopusSDK.CurrentProfile becomes non-null again right after DisconnectUser, as a guest. It matches iOS OctopusProfile.isGuest and Android's isGuest. The OctopusProfile constructor gains an optional isGuest parameter (default false).

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 of Initialize's apiServerHost / 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. ConnectUser reports a ban even when another error arrives with it. Community-data and Reset failures 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 / iOS 1.14.0 (see UnityPackage/Editor/OctopusDependencies.xml and UnityPackage/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.0 suffix 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.unitypackage at the root of main.

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-swift 1.14.0.
  • The legacy .unitypackage was 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

Choose a tag to compare

@ThomasGorisse ThomasGorisse released this 17 Sep 11:05
015dedc

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 connected OctopusProfile (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 the OctopusSDK.OnCommunityDataChanged event — 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, OctopusPost snapshots and per-object observation.
  • OctopusClientObject — the object's description (ObjectId, Text, CatchPhrase, ImagePath / ImageUrl, GroupId, ViewObjectButtonText, optional SignBridgeShare) used when the post has to be created.

Groups

  • OctopusSDK.FollowGroup(...) / OctopusSDK.UnfollowGroup(...) with typed errors.
  • OctopusGroup.CanAccess, OctopusGroup.CanCreateChildren and the OctopusSDK.OnGroupAccessDenied event.

Navigation

  • OctopusSDK.OpenProfile(...), OctopusSDK.OpenActivity(...) — open a member's profile or activity from the game.
  • Optional OctopusNavigationMode argument on the whole Open* 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 typed OctopusClientUserError.

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.FetchCommunityData for one clientUserId), as the Android, Flutter and React Native samples do.

Native SDKs

  • Android 1.13.4 / iOS 1.13.2 (see UnityPackage/Editor/OctopusDependencies.xml and patch_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.0 pins this release).
  • Legacy .unitypackage: served from main.

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.unitypackage was 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

Choose a tag to compare

@ThomasGorisse ThomasGorisse released this 08 Sep 13:51
eb41c74

API Changes

Breaking changes

  • OctopusScreen.SettingsAbout removed. 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 a case OctopusScreen.SettingsAbout: branch in a switch over OctopusScreen, whether or not that switch has a default:. Delete the reference; nothing changes at runtime. A "SettingsAbout" token from an older native build still parses as OctopusScreen.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, or Color.clear passed to OctopusColorScheme — 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' (in OctopusUnityPause.mm), because 6000.5 replaced the trampoline's pause functions with UnitySetPlayerPause. 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.OpenCreatePost with only a topic (and/or a CTA) now opens the editor on the preselected group on iOS too, as Android already did. A blank OpenCreatePost() 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 (with ScreenDisplayedEvent.ProfileId) is now reported on iOS as well as Android. OctopusScreen.Activity is 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_id extra 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, customEvents and locale, driven by single-tap presets with a live result panel. Sample only — no package API changed.

Native SDKs

  • Android 1.13.4 / iOS 1.13.2 (see UnityPackage/Editor/OctopusDependencies.xml and patch_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.8 pins this release). Re-export for iOS after updating so the Xcode post-process writes the 1.13.2 SwiftPM pin.
  • Legacy .unitypackage: served from main. 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 Release BUILD SUCCEEDED, OctopusUnityPause.mm compiled against the 6000.5 trampoline (UnityInternalInterface.h present) 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 .unitypackage was 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

Choose a tag to compare

@ThomasGorisse ThomasGorisse released this 05 Sep 10:36

API Changes

Breaking changes

Nothing

Non-breaking changes

New APIs

  • OctopusScreen.OtherUserPosts (with ScreenDisplayedEvent.ProfileId) and OctopusScreen.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 OctopusUIActivity after the game's process had been killed in the background, before the game had called OctopusSDK.Initialize again, the app died with UninitializedPropertyAccessException: 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 at OctopusSDK.Initialize with NoSuchMethodError: Strings.isNullOrEmpty (GrpcUtil.getFlag) followed by NoClassDefFoundError: 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's ListenerService, posts the notification, hands the tap back to the game) and Plugins/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 pins LangVersion to 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 / iOS 1.12.6 (see UnityPackage/Editor/OctopusDependencies.xml and patch_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.7 pins this release). Re-run the External Dependency Manager resolve after updating so the Android SDK moves to 1.13.4.
  • Legacy .unitypackage: served from main. 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 keeps com.google.common.* / io.grpc.* and init runs with no NoSuchMethodError / NoClassDefFoundError; killing the game process while the Octopus screen is in front and restoring OctopusUIActivity alone returns to the game with the documented OctopusForUnity warning instead of crashing.
    • iOS (simulator, iPhone 16 / iOS 18.6, native SDK 1.12.6 unchanged): init, opening and closing the community screen, SessionStarted / SessionStopped events. 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).
  • AndroidBridge/ rebuilt with ./build.sh against Android 1.13.4; nothing automated compiles it.
  • The legacy .unitypackage was 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

Choose a tag to compare

@cmosa cmosa released this 22 Jul 14:23

What's Changed

  • Version 1.12.6 — Community access control (A/B testing) by @cmosa in #8

Full Changelog: v1.12.5...v1.12.6

v1.12.5

Choose a tag to compare

@cmosa cmosa released this 15 Jul 09:32

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 to None (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 public requestGeometryUpdate API — 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

Choose a tag to compare

@cmosa cmosa released this 09 Jul 14:08

Added

  • iOS: native SDK bumped to 1.12.6. Android pin (1.12.1) unchanged.

Fixed

  • OctopusSDK.ConnectUser accepts null for nickname, 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

Choose a tag to compare

@cmosa cmosa released this 06 Jul 16:42

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) and MIGRATING.md (migration guide).

v1.12.2

Choose a tag to compare

@cmosa cmosa released this 29 Jun 10:34
1303edb

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.
  • 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

Choose a tag to compare

@cmosa cmosa released this 11 Jun 08:38

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, and OctopusSDK.Mock exposes a recorded call log plus drivers (EmitNotSeenCount, EmitLoginRequired, EmitNavigateToClientObject,
    EmitGroupsChanged, EmitModifyUser) for manual iteration and automated EditMode tests. Toggle at runtime with OctopusSDK.Mock.Enabled / OctopusSDK.Mock.ShowOverlay (or an optional
    OctopusMockSettings asset); 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.NavigateToUrlHandler to intercept CTA/link taps inside Octopus and return a UrlOpeningStrategy (HandledByApp to handle it yourself, HandledByOctopus to let Octopus
    open it). When unset, Octopus opens every URL as before.
  • OctopusSDK.OnNavigateToClientObject event, raised when a user taps a CTA on a post linked to one of your own objects (article, product…); the argument is the clientObjectId.

Fixed

  • iOS: opening the main feed (Open() / OpenPost("")) right after OpenCreatePost could re-show the post composer instead of the feed; each navigation call now resets to the
    requested screen.
  • Android: CTA/link tap interception (NavigateToUrlHandler) and OnNavigateToClientObject now 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