すべてのネイティブ機能。 SDKはひとつ。

71個の機能があり、そのうち61個は実際のスマホのデモアプリで動きます。

  • プッシュ通知新着
  • アプリ内購入
  • スマホ標準の画面切り替え
  • モーダルシート新着
  • Face IDでサインイン
  • QRスキャナー新着
  • 共有シート新着
  • Appleでサインイン新着
  • 現在地の追跡新着
  • 写真の選択新着
  • ディープリンク新着
  • アプリのバッジ新着
  • 共有の受け取り新着
  • サインイン情報の保存新着
  • 連絡先新着
  • 健康データ新着
  • 音声プレーヤー新着
  • 音声録音新着
  • 日時の選択新着
  • 評価のお願い新着
  • トラッキングの確認新着
  • NFCスキャン新着

各機能の資料とライブデモ。

型定義とドキュメントが揃い、iOSでもAndroidでも同じように使えます。いつものJavaScriptから呼び出せます。

カメラとメディア

写真撮影、写真一覧からの選択、録音。

音声と動画の再生

スマホ標準の操作画面でメディアを再生し、音声はバックグラウンドでも。

生体認証でサインイン

今の認証のまま、Face IDや指紋でサインイン。

サインイン情報の保存

端末に保存した認証情報で、次回も利用者を認識。

アプリ内購入

両ストアでデジタル商品を販売。レシートはサーバー側で検証。

プッシュ通知

バックエンドからOneSignal経由で対象を絞ってプッシュ通知。

位置情報

端末本来の精度で位置を取得。

実行時の権限

端末の権限をスムーズに求め、状態を確認。

ディープリンク

アプリを開くリンク。未インストールならストアを経由してアプリへ。

スマホ標準の共有機能

スマホ標準の共有シート。テキスト、リンク、画像、ファイルに対応。

スマホ標準のUIとフィードバック

JavaScriptからバナー、読み込み表示、スマホ標準の画面要素を操作。

端末とライフサイクル

OS、アプリのバージョン、前面とバックグラウンドへの切り替えイベント。

デプロイのたびに、すべてのアプリに反映。

ウェブ、iOS、Android。アプリを更新しない利用者も、最新のデプロイ内容を使います。

従来は変更ごとに三度公開し、審査を待ちます。BDKなら一度のデプロイです。

アイコンやネイティブ機能の変更には、ストア向けビルドが必要です。

アプリ審査での扱い

AIが接続する様子を見る。

いつもの開発ツールを選んでください。読み込む資料、書き込むファイル、反応するスマホ。これが連携の全体です。

acme-storefront
PreviewCode
Publish

環境変数の認証情報を使い、リンク先の投稿を開くプッシュ通知をサーバーから送ってください

server/onesignal-pushを読む
server/notifications/sendReply.ts+12

環境変数の認証情報でサーバーからディープリンクを送信

環境変数の認証情報を使い、サーバーからのみプッシュ通知を送信します。通知から投稿42を開けます。

Ask Lovable...
Build
acme-storefront.lovable.app
server/notifications/sendReply.ts+12
1import { sendPushNotification } from "@thebdk/native/server/onesignal";2 3const result = await sendPushNotification({4  message: "New reply on your post",5  title: "Inbox",6  subtitle: "From @jess",7  imageUrl: "https://cdn.example.com/preview.png",8  onLoadUrl: "https://app.example.com/posts/42",9  urlParams: [{ key: "ref", value: "push" }],10  data: { postId: 42, kind: "reply" },11  subscriptionIds: ["a1b2c3d4-1111-2222-3333-444455556666"]12});
指示文の全文
このアプリに@thebdk/nativeを組み込んでください。デプロイ後、BDKでパッケージ化したネイティブアプリ内でサイトが動くときにはカメラとFace IDを使え、通常のウェブアプリはブラウザで引き続き動くようにします。

まずhttps://docs.thebdk.com/llms-full.txtと、追加する各機能のページを読んでください。資料に載っているヘルパー名、イベント名、オプションキーだけを使い、APIを作り出さないでください。

次に:
1. @thebdk/nativeパッケージを追加します。
2. ブラウザで安全に読み込む形で、src/lib/bdk.tsに共有クライアントを作成します:
   import { createBdkNative } from "@thebdk/native/browser";
   export const bdk = createBdkNative();
3. 型付きで名前空間別のヘルパーだけを使って機能を作ります:bdk.media.*、bdk.ui.*、
   bdk.navigation.*、bdk.iap.*、bdk.auth.*、bdk.location.*、bdk.device.*、bdk.share.*、
   bdk.permissions.*。
4. 利用者が操作する機能を呼び出す前にbdk.on(event, cb)で購読します。結果は
   戻り値のPromiseではなくイベントで届きます。
5. ブラウザでは呼び出しは実行されず、triggered: falseを返します。
   !result.triggeredで分岐し、実際に動くウェブ用の代替動作を残してください。Lovableのプレビューとウェブの
   ビルドの両方が引き続き動くようにします。これをスキップやnot_nativeと説明せず、
   ウェブUIでネイティブイベントを待たないでください。
6. @thebdk/native/server/*の機能はすべてバックエンド専用です。認証情報は環境変数から
   読み込み、クライアントのコードにキーやサーバー用の読み込みを入れないでください。

iOSやAndroidのアプリ作成、サイトのアプリ化、ビルドへの署名、ストアへの提出、プレビューでのネイティブ動作確認を完了したと主張しないでください。

最後に、変更したファイル、追加したウェブ用の代替動作、次の引き継ぎを示してください。このアプリをURLに公開し、thebdk.comでそのURLを接続して、BDKがiOSとAndroidのビルドをパッケージ化して署名します。その後、BDKでパッケージ化したアプリ内でネイティブ機能をテストします。

BDKでパッケージ化したアプリで実行中

カメラとFace IDを追加します。ウェブのプレビューは代替動作で引き続き動きます。

  • 共有クライアントはひとつ。npm install @thebdk/nativeを一度読み込み、ほかは変更しません。
  • 結果はイベントで届きます。指示文は、呼び出す前にbdk.on(…)で購読するようエージェントに伝えます。
  • ブラウザでも動きます。アプリ外では呼び出しは実行されず、ウェブサイトは引き続き使えます。

コードがなくても、インストールするものはありません。ダッシュボードでアプリのURLを接続すれば、同じビルドができあがります。

アプリを作成

機械が読める資料:llms.txt。エージェントが取得するファイルです。 エージェントでの使い方 →

三つのステップ。新しい開発環境は不要。

  1. 1

    SDKのインストールは必要に応じて

    コードがあるならnpm install @thebdk/nativeを追加します。依存パッケージはひとつで、すべて型付きです。コードがなければインストールは不要で、ステップ3だけで済みます。

  2. 2

    必要な箇所でネイティブ機能を呼び出す

    カメラ、生体認証、購入、プッシュ通知を、既存のJavaScriptから。ひとつのビルドが、ブラウザでもApp Storeから入れたアプリでも動きます。

  3. 3

    URLを接続して、ストア向けビルドを受け取る。

    ダッシュボードにURLを貼り付けます。BDKが両方のアプリをビルドして署名します。その後は、デプロイのたびにすべてのスマホが更新されます。

app.ts
import { createBdkNative } from "@thebdk/native/browser";

const bdk = createBdkNative();
await bdk.ready();

// Results arrive on events — subscribe, then call.
bdk.on("photoCaptured", (photo) => upload(photo.fileUrl));
await bdk.media.capturePhoto();

// Native UI, one line.
await bdk.ui.showBanner({
  title: "Saved",
  description: "Photo uploaded."
});

連携の仕組みはこれだけです。詳しい仕様は資料で確認でき、ライブデモで各機能を試せます。

詳しい回答。

ウェブサイトをアプリにしただけだとして、Appleに却下されませんか?

Appleは、単なるウェブサイトのアプリを却下します。プッシュ通知、Face ID、購入、共有がアプリらしさを加えます。承認は誰も保証できません。ライブデモはBDKでパッケージ化したアプリなので、ご自身で確かめてください。

すぐ反映される更新はストアのルールに違反しませんか?

いいえ。アプリは公開中のサイトを表示します。ウェブサイトのデプロイはウェブ型アプリの通常の動作で、コードを注入する裏技ではありません。アイコン、利用権限、実行環境の更新など、ネイティブ側の変更にはストア審査が必要です。その場合、BDKが署名済みの新しいビルドをお渡しし、あなたが提出します。

BDKとは、具体的に何ですか?

公開中のウェブアプリを、ストアで配布する実際のアプリ内に全画面で表示する、iOSとAndroid用のネイティブ実行環境です。型付きJavaScript SDKの@thebdk/nativeが、コードをカメラ、生体認証、購入、プッシュ通知などの端末機能につなぎます。BDKがストア向けのアプリをパッケージ化して署名し、あなたが手順の案内に沿って自分の開発者アカウントから提出します。ウェブアプリは通常のウェブアプリのまま、自分でホストします。

ウェブアプリを変更する必要はありますか?

いいえ。そのまま動きます。ネイティブ機能が必要な箇所だけ@thebdk/nativeを追加してください。ほかは変更せず、同じビルドで通常のウェブサイトも引き続き動きます。

PWAやCapacitorとどう違いますか?

PWAはApp Storeに掲載できず、アプリ内購入で販売もできません。Capacitorでは自分で管理するネイティブプロジェクトを受け取るため、ビルド、署名、再ビルドはずっと自分の仕事です。BDKは実行環境を管理し、パッケージ化、署名、OSの変化への対応を引き受けます。

ここまでの機能を、あなたのアプリに。

アプリを作成 資料を読む