Product and eligibility
Section titled “Product and eligibility”Which platforms are supported?
Section titled “Which platforms are supported?”Android, iOS, Node.js on Linux/Windows x64, Electron on Linux/Windows x64, Windows/.NET x64, and Linux native C ABI. macOS, Unity, React Native, Flutter, and browser-only applications are not supported by SDK 1.0.0.
Are packages publicly downloadable?
Section titled “Are packages publicly downloadable?”No. Registry access or versioned artifacts are supplied after onboarding. Public npm, Maven, NuGet, or Swift package commands will not resolve without that access.
Can P2PSDK run alongside ads?
Section titled “Can P2PSDK run alongside ads?”Yes at the application architecture level: it does not require a persistent ad UI. Commercial eligibility and product reward policy are confirmed during onboarding.
Can it coexist with a VPN or proxy SDK?
Section titled “Can it coexist with a VPN or proxy SDK?”Possibly, but overlapping network permissions, routing, or idle-capacity use can conflict. Declare existing networking SDKs before integration and test coexistence on every target OS.
Consent
Section titled “Consent”Can I show my own consent checkbox and pass true?
Section titled “Can I show my own consent checkbox and pass true?”Not on Android, iOS, WPF, or Electron. These wrappers require the SDK-owned consent flow. Boolean-only authorization is deprecated and insufficient for protected desktop wrappers.
What happens when the user declines?
Section titled “What happens when the user declines?”No SDK instance is created. Do not immediately reopen the same consent version or run a retry loop.
How does revoke differ from disconnect?
Section titled “How does revoke differ from disconnect?”Disconnect pauses a reusable instance. Successful revoke invalidates the scoped consent decision and closes the active instance. Failed revoke leaves the current state intact for retry.
Can I copy consent state between devices?
Section titled “Can I copy consent state between devices?”No. Accepted state is tied to the application API key, device identity, consent version, and verification context.
Lifecycle and connectivity
Section titled “Lifecycle and connectivity”Does successful connect() mean online?
Section titled “Does successful connect() mean online?”No. It means the supervisor started. Wait for connected or observe isOnline after the event.
Should my app implement reconnect?
Section titled “Should my app implement reconnect?”No connection retry loop is required. The SDK owns reconnect and policy behavior. Update UI and telemetry from disconnected/connected events.
Can I create multiple SDK instances?
Section titled “Can I create multiple SDK instances?”Create one instance per logical peer and give each one an explicit owner. Most applications need exactly one. Duplicate instances can complicate consent, identity, background sessions, and rewards.
What happens offline?
Section titled “What happens offline?”The SDK reports a disconnect reason, remains responsive, and can reconnect according to assigned policy. Eligible network participation resumes only after the connected event.
Background and performance
Section titled “Background and performance”Does the SDK survive app force-close or reboot?
Section titled “Does the SDK survive app force-close or reboot?”No wrapper adds force-close recovery or boot autostart. Android optional background mode runs through a foreground service while the process remains alive; Electron can keep its main process alive after windows close.
Does iOS run continuously in background?
Section titled “Does iOS run continuously in background?”No. Standard iOS suspension and termination rules apply.
Does the SDK prevent device sleep?
Section titled “Does the SDK prevent device sleep?”No. It does not add a sleep blocker. Battery policy can intentionally pause participation.
How should rewards be triggered?
Section titled “How should rewards be triggered?”Use your approved product and commercial policy. Do not grant rewards merely because consent was accepted or connect() returned; those states do not prove online participation.
Security and data
Section titled “Security and data”Is the application API key a private server secret?
Section titled “Is the application API key a private server secret?”It identifies the app integration and may be embedded by the app owner, but should not appear in logs. Runtime tokens, private signing keys, receipts, and backend credentials are separate and must never ship.
Can I log a consent receipt for debugging?
Section titled “Can I log a consent receipt for debugging?”No. Record the result status and sanitized error category, not the receipt or consent callback URL.
What user data does my application still own?
Section titled “What user data does my application still own?”Your application remains responsible for its reward records, telemetry, account data, privacy notices, and store declarations. P2PSDK integration does not replace those obligations.
Packaging and updates
Section titled “Packaging and updates”Can wrapper and native versions differ if ABI major matches?
Section titled “Can wrapper and native versions differ if ABI major matches?”No. ABI compatibility does not make arbitrary release combinations supported. Ship matching artifacts from one release.
How do I upgrade without losing consent?
Section titled “How do I upgrade without losing consent?”Preserve identity storage and the consent version unless onboarding explicitly coordinates a new disclosure. Test existing accepted, declined, and revoked installations.
What should I send to support?
Section titled “What should I send to support?”SDK version, platform, OS, architecture, wrapper/native filenames, consent status without receipt, structured error fields, disconnect reason, lifecycle order, and minimal reproduction steps. See Contact support.