Skip to main content

Local Offer

The Local Offer DPApp provides location-based deals and discounts, allowing users to discover, browse, and redeem exclusive local offers, dining deals, and lifestyle experiences directly within your host app.

User flow

The Local Offer journey is shown from left to right.

Landing
Local Offer flow step 1
Location search
Local Offer flow step 2
Resource list
Local Offer flow step 3
Resource detail
Local Offer flow step 4
Checkout
Local Offer flow step 5
Order result
Local Offer flow step 6

Routes & Parameters

Pages are opened by the host app via DPSDK.open(appId: "localOffer", ...) (iOS) or DPSDK.getDPApp("localOffer").open(...) (Android), or navigated internally. Only the pages below can be opened via the SDK — other pages (e.g. Resource detail, Order summary, Location search) are internal flow pages reached from within the app.

PAGE NAMEPATHQuery parametersDescription
Landinglocal-offer/landingHome page for discovering local offers, dining deals and lifestyle experiences
Order detaillocal-offer/order-detailorder_noOrder details & management

Parameters

System parameters

These parameters are required and must always be included when opening the Local Offer DPApp.

ParameterTypeRequiredDescriptionExample
languagestringtrueUI language of the app; supported values: en-US (English, United States) (default: en-US)en-US
tenant_codestringtrueTenant code used for tenant isolation and validating the tenant configuration on the DP Platform0494
action_typestringtrueAccess mode of the session; supported value: operateoperate
channelstringfalseDistribution channel identifier of the host app, used for channel-level configuration and analytics, e.g. standard, eBridge (default: standard)standard
pro_codestringtrueProduct code that determines which product the checkout flow lands on (ISC product)ISC0494000001
modulestringtrueBusiness module identifier used for module-level routing and configuration (8 for Local Offer)8

ℹ️ Parameter naming varies by category: this app uses pro_code for the product code. See System parameters for the full list.

Page parameters

These parameters are only needed when the corresponding page is opened directly.

Order detail (local-offer/order-detail)

ParameterTypeRequiredDescriptionExample
order_nostringtrueOrder number of the offer order, required to load the order details when the page is opened directlyISC20260730BG67X97

Prerequisites

  • A registered clientId from the DP Platform — contact us to get one
  • The localOffer appId configured under your client
  • DP Hybrid SDK integrated into your host app

iOS

Open the Local Offer DPApp from any UIViewController:

Swift
// From any UIViewController
DPSDK.open(appId: "localOffer", from: self)

To open a specific page directly (e.g. landing or order detail), pass the page path and its query parameters in the params dictionary:

Swift
// Open the landing page (default)
DPSDK.open(appId: "localOffer", from: self)

// Open the landing page directly
DPSDK.open(
appId: "localOffer",
params: [
"path": "local-offer/landing",
"tenant_code": "0494",
"action_type": "operate",
"module": "8",
"language": "en-US",
"pro_code": "ISC0494000001",
],
from: self
)

// Open the order detail page directly
DPSDK.open(
appId: "localOffer",
params: [
"path": "local-offer/order-detail",
"tenant_code": "0494",
"action_type": "operate",
"module": "8",
"language": "en-US",
"pro_code": "ISC0494000001",
"order_no": "ISC20260730BG67X97",
],
from: self
)

Note: the system parameters above are required whenever a page is opened directly. Page-specific parameters (e.g. order_no, code, resource_id) are appended only for the pages that need them (see Page parameters).

Android

Open the Local Offer DPApp from any Activity or Fragment:

Kotlin
// From any Activity or Fragment
DPSDK.getDPApp("localOffer").open(this)

To open a specific page directly (e.g. landing or order detail), pass the page path to open() and set the query parameters via setExtraUrlParams:

Kotlin
// Open the landing page (default)
DPSDK.getDPApp("localOffer").open(this)

// Open the landing page directly
val dpApp = DPSDK.getDPApp("localOffer")
dpApp.setDPAppConfig(
DPAppConfig.Builder()
.setExtraUrlParams(
hashMapOf(
"tenant_code" to "0494",
"action_type" to "operate",
"module" to "8",
"language" to "en-US",
"pro_code" to "ISC0494000001",
)
)
.build()
).open(this, "local-offer/landing")

// Open the order detail page directly
val orderDpApp = DPSDK.getDPApp("localOffer")
orderDpApp.setDPAppConfig(
DPAppConfig.Builder()
.setExtraUrlParams(
hashMapOf(
"tenant_code" to "0494",
"action_type" to "operate",
"module" to "8",
"language" to "en-US",
"pro_code" to "ISC0494000001",
"order_no" to "ISC20260730BG67X97",
)
)
.build()
).open(this, "local-offer/order-detail")

Note: the system parameters above are required whenever a page is opened directly. Page-specific parameters (e.g. order_no, code, resource_id) are appended only for the pages that need them (see Page parameters).

Handling order results

When a booking is placed or an order detail is opened, the host app can listen for URL changes to react to the result (e.g. refresh its own order list after a successful booking). See DPApp URL Listener for the full API.

Swift
// iOS
DPApp.delegate = self

extension ViewController: DPAppCustomDelegate {
func didDPAppChangeUrlEvent(DPApp: DPApp, url: URL) {
// url.path contains the DPApp page path, e.g. "local-offer/order-detail"
}
}
Kotlin
// Android
val dpApp = DPSDK.getDPApp("localOffer")
dpApp.setUrlChangeListener { activity, url ->
// url?.path contains the DPApp page path, e.g. "local-offer/order-detail"
}.open(this)

Reference