Skip to main content

iOS

URL Scheme Configuration

Add your custom URL scheme in Project Settings:
  1. Go to Project SettingsPlatformsiOS
  2. Under Extra PList Data, add:
<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>mygame</string>
        </array>
    </dict>
</array>
The SDK handles deep links automatically. Ensure your redirect URIs match:
[/Script/ImmutableSDK.ImmutableSettings]
RedirectUri=mygame://callback
LogoutRedirectUri=mygame://logout

Build Settings

  1. Set Minimum iOS Version to 13.0 or higher
  2. Configure code signing in Project Settings → iOS
  3. Enable Generate dSYM bundle for crash reporting

iOS-Specific Notes

  • Login uses ASWebAuthenticationSession, which shows a system alert
  • Deep links use URL schemes (required for PKCE security)
  • Test on physical devices when possible

Android

Manifest Configuration

The SDK automatically merges required manifest entries. If you need custom configuration:
  1. Go to Project SettingsAndroid
  2. Enable Use Custom Manifest
  3. Add intent filters for deep linking:
<activity android:name="com.epicgames.unreal.GameActivity">
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data android:scheme="mygame" android:host="callback" />
    </intent-filter>
</activity>

Build Settings

  1. Set Minimum SDK Version to 24
  2. Set Target SDK Version to 33 or higher
  3. Enable Support arm64 for modern devices

Android-Specific Notes

  • Login uses Chrome Custom Tabs
  • Ensure Chrome is available on test devices
  • Test on physical devices for accurate authentication flow

Windows

Build Configuration

  1. Set target platform to Windows
  2. Configure packaging settings in Project Settings → Windows
  3. The SDK uses the embedded Chromium WebView

Desktop WebView

The SDK initializes a hidden WebView for authentication. This is handled automatically.

macOS

URL Scheme Configuration

Add to Info.plist via Project Settings:
  1. Go to Project SettingsPlatformsMac
  2. Under Extra PList Data, add URL scheme configuration (same as iOS)

Build Settings

  1. Set Minimum macOS Version to 10.15
  2. Configure code signing for distribution

Cross-Platform Code

Handle platform differences in C++:
void AMyController::Login()
{
    UImmutableSubsystem* Immutable = GetGameInstance()->GetSubsystem<UImmutableSubsystem>();
    
    #if PLATFORM_IOS
        // iOS-specific handling if needed
    #elif PLATFORM_ANDROID
        // Android-specific handling if needed
    #endif
    
    Immutable->Login(
        FImmutableLoginComplete::CreateUObject(this, &AMyController::OnLoginComplete),
        FImmutableLoginFailed::CreateUObject(this, &AMyController::OnLoginFailed)
    );
}

Platform Detection in Blueprints

Use the Get Platform Name node to branch based on platform:
Get Platform Name
├── Windows → Windows-specific logic
├── Mac → macOS-specific logic
├── IOS → iOS-specific logic
└── Android → Android-specific logic

Testing

PlatformRecommended Method
iOSPhysical device or Simulator
AndroidPhysical device or Emulator
WindowsEditor or packaged build
macOSEditor or packaged build
Always test authentication flows on target platforms. Editor behavior may differ from packaged builds.

Next Steps