Android SDK

Android SDK

Receive decision requests in your Android app

Download

Installation


  dependencies {
    implementation("network.noxy:android-sdk:2.1.0")
  }
  
Code

Quick Start


  import network.noxy.sdk.*
  import network.noxy.sdk.identity.*
  import network.noxy.sdk.network.NoxyDecisionChoice
  
  val identity = NoxyIdentity.Email(email = "you@example.com")
  // Or wallet: NoxyIdentity.Eoa(NoxyEoaWalletIdentity(address = "0x...", signer = { ... }))
  // Or phone: NoxyIdentity.Phone(phone = "+15551234567")
  // Or user_id: NoxyIdentity.UserId(userId = "internal-user-abc123")
  
  val client = createNoxyClient(
      context = context,
      identity = identity,
      network = NoxyNetworkOptions(
          appId = "your-app-id",
          relayUrl = "https://relay.noxy.network",
          appSigningSecret = "your-app-signing-secret",
      )
  )
  
  lifecycleScope.launch {
      client.initialize()
  }
  
  lifecycleScope.launch {
      client.on { relayMessageId, decision ->
          val title = decision["title"] as? String
          val summary = decision["summary"] as? String
          val decisionId = NoxyClient.resolveDecisionId(decision, relayMessageId)
              ?: return@on
          pendingDecisionId = decisionId
          // Show UI (e.g. dialog or full-screen Activity)
      }
  }
  
  var pendingDecisionId: String? = null

  fun onApproveOrRejectClick(approve: Boolean) {
      lifecycleScope.launch {
          val id = pendingDecisionId ?: return@launch
          client.sendDecisionOutcome(
              id,
              if (approve) NoxyDecisionChoice.Approve else NoxyDecisionChoice.Reject
          )
      }
  }
  
  lifecycleScope.launch {
      client.close()
  }