@boostbossai/lumi-mobile
v0.3.0
Published
Lumi for Mobile App runtime SDK — Boost Boss's ad placements for React Native (Expo + bare).
Maintainers
Readme
@boostbossai/lumi-mobile
Lumi for Mobile App runtime SDK — Boost Boss's ad placements for React Native (Expo + bare).
Most publishers install this through the CLI rather than by hand:
npx @boostbossai/install-mobile pub_xxxKeep reading if you want to wire it manually.
Install
npm install @boostbossai/lumi-mobile
# Expo iOS: prebuild then run normally.
# Bare RN iOS: cd ios && pod installPeer deps: react >=18, react-native >=0.74.
Manual wire-up
import { LumiProvider } from '@boostbossai/lumi-mobile';
export default function App() {
return (
<LumiProvider publisherId="pub_a8x2k9f9">
{/* your app */}
</LumiProvider>
);
}That's it. <BottomBanner /> auto-mounts at the screen bottom and starts
fetching ads on first render. <SplashSponsor /> auto-mounts on cold
start (once per app launch, module-level flag prevents re-show across
re-mounts). Both follow the Publisher Agreement §4.1
auto-placement default; opt out with disableBottomBanner /
disableSplashSponsor props on <LumiProvider>.
Opt-in placements
The placements below render only when you mount them — they need a publisher trigger point (a screen, a button tap, a level-end). Auto-mount doesn't apply because there's no reliable global signal for "now is the moment to show a rewarded video."
import {
RewardedVideo,
InlineNativeBanner,
FullScreenInterstitial,
} from '@boostbossai/lumi-mobile';
// Rewarded — real full-screen video player. Install expo-av for native
// playback; without it, falls back to a sponsored card + wall-clock timer.
<RewardedVideo
rewardAmount={10}
rewardUnit="credits"
onReward={({ amount, unit }) => giveUserCredits(amount)}
onSkip={() => {/* user dismissed early — no reward */}}
/>
// Inline — drop into a feed.
<InlineNativeBanner />
// Full-screen — show on level-end, etc.
<FullScreenInterstitial
visible={showInterstitial}
onClose={() => setShowInterstitial(false)}
/>Placements & RPM
| Placement | RPM | | ------------------------ | ----------- | | Sponsored citation | ~$4.50 | | Suggested chip | ~$4.50 | | Inline sponsored card | ~$6.50 | | Loading-state ad | ~$7.00 | | Pre-roll video | ~$11.00 | | Rewarded video | ~$35.00 | | Bottom banner | ~$6.50 | | Inline native banner | ~$7.50 | | Full-screen interstitial | ~$18.00 | | Splash sponsor | ~$15.00 |
v0 caveats
- Session UUID uses
Math.random(). Upgrade toexpo-crypto(Expo) orreact-native-get-random-values(bare) when stricter uniqueness matters. <RewardedVideo>and<PreRollVideo>useexpo-avfor real native video playback when installed (expo install expo-av). It is an optional peer dep — without it, both placements render a sponsored-card fallback. The fallback still fires impressions and resolvesonReward/onComplete, just without a real video frame.- TSX ships as-is; your bundler (Metro / Babel) handles transpilation.
License
MIT
