Buat APK Gratis

API jembatan JavaScript

Facebook, event Meta, dan Firebase Analytics

Facebook Login, Meta App Events, dan Firebase Analytics dengan kunci milik kreator sendiri, diatur saat build. Analytics tidak mengumpulkan apa pun sampai pengguna menyetujui.

AppMint.analytics helper#

AppMint.analytics β€” one event to Firebase and Meta

Contoh

Mencatat event ke setiap layanan analytics yang dihubungkan build: Firebase Analytics (google-services.json milik Anda) dan Meta App Events. Nama dibersihkan sesuai aturan tiap layanan dan jawabannya menyebut apa yang dikirim.

Mengembalikan: log(name, params) β†’ {ok, providers: {firebase?, meta?}}, masing-masing {ok, name, dropped} atau {ok: false, error}. setUserId(id), setUserProperty(name, value), screenView(name, class), setEnabled(on) β†’ Promise; providers() β†’ {firebase, meta}. Membutuhkan: langkah Integrate β†’ Firebase Analytics (unggah google-services.json di kartu Push) dan/atau Meta App Events.

if (window.AppMint && AppMint.analytics) {
  AppMint.analytics.setUserId(currentUser.id);
  AppMint.analytics.setUserProperty('plan', 'pro');
  var r = await AppMint.analytics.log('add_to_cart', { item_id: 'sku-42', value: 19.99, currency: 'USD' });
  if (!r.ok) console.warn('not logged', r.providers);   // e.g. {firebase: {ok:false, error:'no_consent'}}
}

// Your own consent screen: nothing is collected while this is off (persisted).
document.getElementById('optOut').onchange = (e) => AppMint.analytics.setEnabled(!e.target.checked);

Masuk dan keluar menjaga id pengguna tetap sinkron:

async function onAuthChange(user) {
  if (!(window.AppMint && AppMint.analytics)) return;
  if (user) {
    await AppMint.analytics.setUserId(user.id);
    await AppMint.analytics.setUserProperty('country', user.country);
  } else {
    await AppMint.analytics.setUserId('');           // clears it
  }
}

Lihat layanan mana yang terhubung sebelum mengandalkannya:

if (window.AppMint && AppMint.analytics) {
  const p = await AppMint.analytics.providers();     // { firebase, meta }
  if (!p.firebase && !p.meta) console.warn('no analytics service is connected in this build');
  await AppMint.analytics.screenView('Settings', 'SettingsPage');
  const r = await AppMint.analytics.log('first_open_tip', { shown: true });
  if (!r.ok) console.warn('not logged', r.providers);
}

Catatan: Persetujuan: saat aplikasi menampilkan iklan, formulir persetujuan Google juga menentukan analytics - tidak ada yang dikumpulkan sebelum ada jawaban, dan di tempat GDPR berlaku, tujuan 1 harus diberikan; setEnabled(false) milik halaman selalu menang. Saat pengumpulan nonaktif, panggilan menjawab no_consent (tidak ada yang diantrekan). Nama Firebase: huruf, angka, dan _, hingga 40 karakter, paling banyak 25 parameter, nilai string hingga 100 karakter; nama yang dicadangkan (first_open, session_start, firebase_…, google_…, ga_…) menjawab reserved_name / reserved_prefix. params.value (angka) menjadi value-to-sum Meta. Dengan Log a screen view for every page change aktif, perpindahan rute mencatat screen_view secara otomatis. Kesalahan: not_configured, missing_google_app_id, params_not_json, invalid_name.

AppMint.facebook helper#

AppMint.facebook β€” Facebook Login and Meta App Events

Contoh

"Lanjutkan dengan Facebook" pada aplikasi Facebook ANDA SENDIRI. Masuk membuka Facebook di tab browser (Custom Tab): memakai login facebook.com dari browser itu, BUKAN aplikasi Facebook, dan kembali ke aplikasi saat pengguna mengonfirmasi. Juga mencatat Meta App Events jika Anda mengaktifkannya.

Mengembalikan: login(permissions) β†’ Promise yang selalu selesai: {ok: true, accessToken, userId, expires, grantedPermissions, declinedPermissions} atau {ok: false, cancelled?, error}. getAccessToken() β†’ objek token yang sama, atau null jika sudah keluar. logEvent(name, valueToSum, params) β†’ {ok, name, dropped} (diantrekan dan dikirim berkelompok) atau {ok: false, error}. Membutuhkan: langkah Integrate pada build β†’ Facebook Login dengan Facebook App ID dan Client Token Anda (dan Meta App Events untuk logEvent).

Masuk, lalu pakai token dengan backend Anda:

async function facebookSignIn() {
  if (!(window.AppMint && AppMint.facebook)) { alert('Open this page in the app'); return; }
  var r = await AppMint.facebook.login(['public_profile', 'email']);
  if (!r.ok) {
    if (r.cancelled) return;                          // the user backed out
    alert('Facebook sign-in failed: ' + (r.message || r.error));
    return;
  }
  // Firebase: firebase.auth().signInWithCredential(firebase.auth.FacebookAuthProvider.credential(r.accessToken))
  await fetch('/api/login/facebook', { method: 'POST', body: JSON.stringify({ token: r.accessToken }) });
  console.log('Signed in as', r.userId, 'until', new Date(r.expires));
}

var existing = AppMint.facebook.getAccessToken();   // null when signed out
if (existing) showSignedIn(existing.userId);

document.getElementById('logout').onclick = () => AppMint.facebook.logout();

Meta App Events:

AppMint.facebook.logEvent('fb_mobile_purchase', 9.99, { fb_currency: 'USD', fb_content_id: 'sku-42' });
AppMint.facebook.logEvent('Level Complete', null, { level: 3 });

Tampilkan tombol Facebook hanya di dalam aplikasi, dan tangani pengaturan yang belum ada:

const fb = window.AppMint && AppMint.facebook;
document.getElementById('fb-button').hidden = !fb;
if (fb) {
  document.getElementById('fb-button').onclick = async function () {
    const r = await fb.login(['public_profile']);
    if (r.ok || r.cancelled) return;
    if (r.error === 'not_configured') alert('Facebook sign-in is not set up in this build');
    else if (r.error === 'busy') console.log('a login is already open');
    else alert('Facebook sign-in failed: ' + (r.message || r.error));
  };
}

Catatan: Facebook Developers β†’ aplikasi Anda β†’ Facebook Login β†’ Settings β†’ Valid OAuth Redirect URIs: tambahkan https://freewebtoapk.com/fb-return/ (wizard punya tombol Salin). Tidak perlu key hash atau pengaturan platform Android. Token diperiksa ke Facebook (harus milik App ID Anda) sebelum promise selesai. Jika Android menutup aplikasi saat pengguna berada di browser, hasilnya tidak disampaikan ke promise - token disimpan dan getAccessToken() mengembalikannya saat halaman dimulai. Kesalahan: not_configured, busy (login sudah terbuka), cancelled (juga saat pengguna menutup tab), state_mismatch, wrong_app, failed, no_token, foreign_origin (halaman yang bukan milik aplikasi sendiri). App Events (dikirim dari aplikasi ke App Events API Facebook dengan client token Anda) baru dimulai setelah persetujuan (lihat AppMint.analytics) dan menjawab no_consent sampai saat itu. Masuk web lewat redirect Supabase atau Firebase tetap berfungsi seperti sebelumnya.

analyticsLogEvent jembatan#

window.WebToApk.analyticsLogEvent(name: String, paramsJson: String): String

Event Firebase; namanya dibersihkan sesuai aturan Firebase. Mengembalikan {ok, name, dropped} atau {ok:false, error}.

Contoh

Metode mentah Firebase Analytics di balik AppMint.analytics - utamakan pembungkusnya. Masing-masing mengembalikan jawabannya sebagai teks JSON: {ok, name, dropped} atau {ok: false, error}.

Mengembalikan: teks JSON (analyticsSetEnabled tidak mengembalikan apa pun). Membutuhkan: langkah Integrate β†’ Firebase Analytics, dengan google-services.json Anda diunggah di kartu Push Notifications.

var r = JSON.parse(WebToApk.analyticsLogEvent('share', JSON.stringify({ method: 'whatsapp', content_type: 'post' })));
if (!r.ok) console.warn(r.error);                        // 'no_consent', 'reserved_name', …
WebToApk.analyticsLogScreenView('/checkout', 'CheckoutPage');
WebToApk.analyticsSetUserId('user-123');                 // '' clears it
WebToApk.analyticsSetUserProperty('favorite_food', 'pizza');
WebToApk.analyticsSetEnabled(false);                     // stops every analytics provider

Deteksi fitur, lalu catat pembelian dan tampilan layar:

if (window.WebToApk && WebToApk.analyticsLogEvent) {
  WebToApk.analyticsLogScreenView(location.pathname, 'ProductPage');
  document.getElementById('buy').onclick = function () {
    WebToApk.analyticsLogEvent('purchase', JSON.stringify({ value: 19.99, currency: 'USD', transaction_id: orderId }));
  };
}

Tangani event yang ditolak dan sakelar persetujuan:

function track(name, params) {
  if (!(window.WebToApk && WebToApk.analyticsLogEvent)) return;      // browser, or option off
  const r = JSON.parse(WebToApk.analyticsLogEvent(name, JSON.stringify(params || {})));
  if (!r.ok) console.warn('analytics dropped', name, r.error);       // 'no_consent', 'invalid_name', ...
}

document.getElementById('analytics-toggle').onchange = function (e) {
  WebToApk.analyticsSetEnabled(e.target.checked);
};
track('tutorial_complete', { step_count: 5 });

Catatan: analyticsSetEnabled adalah sakelar persetujuan halaman untuk Firebase dan Meta App Events sekaligus; lihat AppMint.analytics untuk aturan persetujuan.

analyticsLogScreenView jembatan#

window.WebToApk.analyticsLogScreenView(screenName: String, screenClass: String): String

screen_view Firebase untuk [screenName] (mis. path rute).

Contoh

Didokumentasikan bersama WebToApk.analyticsLogEvent - contoh di sana menunjukkan yang ini juga.

Metode mentah Firebase Analytics di balik AppMint.analytics - utamakan pembungkusnya. Masing-masing mengembalikan jawabannya sebagai teks JSON: {ok, name, dropped} atau {ok: false, error}.

Mengembalikan: teks JSON (analyticsSetEnabled tidak mengembalikan apa pun). Membutuhkan: langkah Integrate β†’ Firebase Analytics, dengan google-services.json Anda diunggah di kartu Push Notifications.

var r = JSON.parse(WebToApk.analyticsLogEvent('share', JSON.stringify({ method: 'whatsapp', content_type: 'post' })));
if (!r.ok) console.warn(r.error);                        // 'no_consent', 'reserved_name', …
WebToApk.analyticsLogScreenView('/checkout', 'CheckoutPage');
WebToApk.analyticsSetUserId('user-123');                 // '' clears it
WebToApk.analyticsSetUserProperty('favorite_food', 'pizza');
WebToApk.analyticsSetEnabled(false);                     // stops every analytics provider

Deteksi fitur, lalu catat pembelian dan tampilan layar:

if (window.WebToApk && WebToApk.analyticsLogEvent) {
  WebToApk.analyticsLogScreenView(location.pathname, 'ProductPage');
  document.getElementById('buy').onclick = function () {
    WebToApk.analyticsLogEvent('purchase', JSON.stringify({ value: 19.99, currency: 'USD', transaction_id: orderId }));
  };
}

Tangani event yang ditolak dan sakelar persetujuan:

function track(name, params) {
  if (!(window.WebToApk && WebToApk.analyticsLogEvent)) return;      // browser, or option off
  const r = JSON.parse(WebToApk.analyticsLogEvent(name, JSON.stringify(params || {})));
  if (!r.ok) console.warn('analytics dropped', name, r.error);       // 'no_consent', 'invalid_name', ...
}

document.getElementById('analytics-toggle').onchange = function (e) {
  WebToApk.analyticsSetEnabled(e.target.checked);
};
track('tutorial_complete', { step_count: 5 });

Catatan: analyticsSetEnabled adalah sakelar persetujuan halaman untuk Firebase dan Meta App Events sekaligus; lihat AppMint.analytics untuk aturan persetujuan.

analyticsSetEnabled jembatan#

window.WebToApk.analyticsSetEnabled(enabled: Boolean)

Sakelar analytics milik halaman sendiri untuk semua penyedia; disimpan permanen.

Contoh

Didokumentasikan bersama WebToApk.analyticsLogEvent - contoh di sana menunjukkan yang ini juga.

Metode mentah Firebase Analytics di balik AppMint.analytics - utamakan pembungkusnya. Masing-masing mengembalikan jawabannya sebagai teks JSON: {ok, name, dropped} atau {ok: false, error}.

Mengembalikan: teks JSON (analyticsSetEnabled tidak mengembalikan apa pun). Membutuhkan: langkah Integrate β†’ Firebase Analytics, dengan google-services.json Anda diunggah di kartu Push Notifications.

var r = JSON.parse(WebToApk.analyticsLogEvent('share', JSON.stringify({ method: 'whatsapp', content_type: 'post' })));
if (!r.ok) console.warn(r.error);                        // 'no_consent', 'reserved_name', …
WebToApk.analyticsLogScreenView('/checkout', 'CheckoutPage');
WebToApk.analyticsSetUserId('user-123');                 // '' clears it
WebToApk.analyticsSetUserProperty('favorite_food', 'pizza');
WebToApk.analyticsSetEnabled(false);                     // stops every analytics provider

Deteksi fitur, lalu catat pembelian dan tampilan layar:

if (window.WebToApk && WebToApk.analyticsLogEvent) {
  WebToApk.analyticsLogScreenView(location.pathname, 'ProductPage');
  document.getElementById('buy').onclick = function () {
    WebToApk.analyticsLogEvent('purchase', JSON.stringify({ value: 19.99, currency: 'USD', transaction_id: orderId }));
  };
}

Tangani event yang ditolak dan sakelar persetujuan:

function track(name, params) {
  if (!(window.WebToApk && WebToApk.analyticsLogEvent)) return;      // browser, or option off
  const r = JSON.parse(WebToApk.analyticsLogEvent(name, JSON.stringify(params || {})));
  if (!r.ok) console.warn('analytics dropped', name, r.error);       // 'no_consent', 'invalid_name', ...
}

document.getElementById('analytics-toggle').onchange = function (e) {
  WebToApk.analyticsSetEnabled(e.target.checked);
};
track('tutorial_complete', { step_count: 5 });

Catatan: analyticsSetEnabled adalah sakelar persetujuan halaman untuk Firebase dan Meta App Events sekaligus; lihat AppMint.analytics untuk aturan persetujuan.

analyticsSetUserId jembatan#

window.WebToApk.analyticsSetUserId(userId: String): String

User id Firebase ("" menghapusnya).

Contoh

Didokumentasikan bersama WebToApk.analyticsLogEvent - contoh di sana menunjukkan yang ini juga.

Metode mentah Firebase Analytics di balik AppMint.analytics - utamakan pembungkusnya. Masing-masing mengembalikan jawabannya sebagai teks JSON: {ok, name, dropped} atau {ok: false, error}.

Mengembalikan: teks JSON (analyticsSetEnabled tidak mengembalikan apa pun). Membutuhkan: langkah Integrate β†’ Firebase Analytics, dengan google-services.json Anda diunggah di kartu Push Notifications.

var r = JSON.parse(WebToApk.analyticsLogEvent('share', JSON.stringify({ method: 'whatsapp', content_type: 'post' })));
if (!r.ok) console.warn(r.error);                        // 'no_consent', 'reserved_name', …
WebToApk.analyticsLogScreenView('/checkout', 'CheckoutPage');
WebToApk.analyticsSetUserId('user-123');                 // '' clears it
WebToApk.analyticsSetUserProperty('favorite_food', 'pizza');
WebToApk.analyticsSetEnabled(false);                     // stops every analytics provider

Deteksi fitur, lalu catat pembelian dan tampilan layar:

if (window.WebToApk && WebToApk.analyticsLogEvent) {
  WebToApk.analyticsLogScreenView(location.pathname, 'ProductPage');
  document.getElementById('buy').onclick = function () {
    WebToApk.analyticsLogEvent('purchase', JSON.stringify({ value: 19.99, currency: 'USD', transaction_id: orderId }));
  };
}

Tangani event yang ditolak dan sakelar persetujuan:

function track(name, params) {
  if (!(window.WebToApk && WebToApk.analyticsLogEvent)) return;      // browser, or option off
  const r = JSON.parse(WebToApk.analyticsLogEvent(name, JSON.stringify(params || {})));
  if (!r.ok) console.warn('analytics dropped', name, r.error);       // 'no_consent', 'invalid_name', ...
}

document.getElementById('analytics-toggle').onchange = function (e) {
  WebToApk.analyticsSetEnabled(e.target.checked);
};
track('tutorial_complete', { step_count: 5 });

Catatan: analyticsSetEnabled adalah sakelar persetujuan halaman untuk Firebase dan Meta App Events sekaligus; lihat AppMint.analytics untuk aturan persetujuan.

analyticsSetUserProperty jembatan#

window.WebToApk.analyticsSetUserProperty(name: String, value: String): String

Properti pengguna Firebase (nama hingga 24 karakter, nilai hingga 36; "" menghapusnya).

Contoh

Didokumentasikan bersama WebToApk.analyticsLogEvent - contoh di sana menunjukkan yang ini juga.

Metode mentah Firebase Analytics di balik AppMint.analytics - utamakan pembungkusnya. Masing-masing mengembalikan jawabannya sebagai teks JSON: {ok, name, dropped} atau {ok: false, error}.

Mengembalikan: teks JSON (analyticsSetEnabled tidak mengembalikan apa pun). Membutuhkan: langkah Integrate β†’ Firebase Analytics, dengan google-services.json Anda diunggah di kartu Push Notifications.

var r = JSON.parse(WebToApk.analyticsLogEvent('share', JSON.stringify({ method: 'whatsapp', content_type: 'post' })));
if (!r.ok) console.warn(r.error);                        // 'no_consent', 'reserved_name', …
WebToApk.analyticsLogScreenView('/checkout', 'CheckoutPage');
WebToApk.analyticsSetUserId('user-123');                 // '' clears it
WebToApk.analyticsSetUserProperty('favorite_food', 'pizza');
WebToApk.analyticsSetEnabled(false);                     // stops every analytics provider

Deteksi fitur, lalu catat pembelian dan tampilan layar:

if (window.WebToApk && WebToApk.analyticsLogEvent) {
  WebToApk.analyticsLogScreenView(location.pathname, 'ProductPage');
  document.getElementById('buy').onclick = function () {
    WebToApk.analyticsLogEvent('purchase', JSON.stringify({ value: 19.99, currency: 'USD', transaction_id: orderId }));
  };
}

Tangani event yang ditolak dan sakelar persetujuan:

function track(name, params) {
  if (!(window.WebToApk && WebToApk.analyticsLogEvent)) return;      // browser, or option off
  const r = JSON.parse(WebToApk.analyticsLogEvent(name, JSON.stringify(params || {})));
  if (!r.ok) console.warn('analytics dropped', name, r.error);       // 'no_consent', 'invalid_name', ...
}

document.getElementById('analytics-toggle').onchange = function (e) {
  WebToApk.analyticsSetEnabled(e.target.checked);
};
track('tutorial_complete', { step_count: 5 });

Catatan: analyticsSetEnabled adalah sakelar persetujuan halaman untuk Firebase dan Meta App Events sekaligus; lihat AppMint.analytics untuk aturan persetujuan.

facebookLogEvent jembatan#

window.WebToApk.facebookLogEvent(name: String, valueToSum: String, paramsJson: String): String

Event Meta App; [valueToSum] angka sebagai teks atau ""; [paramsJson] objek JSON datar. Mengembalikan {ok, name, dropped} atau {ok:false, error}.

Contoh

Didokumentasikan bersama WebToApk.facebookLogin - contoh di sana menunjukkan yang ini juga.

Metode mentah di balik AppMint.facebook - utamakan pembungkus promise. Dibuat dengan Facebook App ID + Client Token Anda (langkah Integrate); tanpa keduanya setiap panggilan menjawab not_configured.

Mengembalikan: facebookLogin(permissionsCsv, callbackId) menyelesaikan window.__appmintReplies[callbackId]; dengan callbackId kosong jawabannya tiba sebagai event appmint:facebook-login. getFacebookAccessToken() mengembalikan JSON token atau "". facebookLogEvent(name, valueToSum, paramsJson) mengembalikan {ok, name, dropped} sebagai teks JSON (valueToSum adalah angka sebagai teks, atau ""). Membutuhkan: Facebook Login diaktifkan di build.

window.addEventListener('appmint:facebook-login', (e) => {
  if (e.detail.ok) console.log('token', e.detail.accessToken);
  else if (!e.detail.cancelled) console.warn(e.detail.error);
});
WebToApk.facebookLogin('public_profile,email', '');

var t = WebToApk.getFacebookAccessToken();          // '' when signed out
var logged = JSON.parse(WebToApk.facebookLogEvent('Subscribe', '4.99', JSON.stringify({ plan: 'monthly' })));
WebToApk.facebookLogout();

Sembunyikan tombol saat login Facebook belum diatur di build ini:

var btn = document.getElementById('fb-login');
btn.hidden = !(window.WebToApk && WebToApk.facebookLogin);

btn.addEventListener('click', function () {
  window.addEventListener('appmint:facebook-login', function onLogin(e) {
    window.removeEventListener('appmint:facebook-login', onLogin);
    if (e.detail.ok) showProfile(e.detail.accessToken);
    else if (e.detail.error === 'not_configured') btn.hidden = true;   // built without the Facebook App ID
  });
  WebToApk.facebookLogin('public_profile', '');
});

Catat event pembelian dan keluar:

function trackPurchase(amount, currency) {
  if (!(window.WebToApk && WebToApk.facebookLogEvent)) return;
  var r = JSON.parse(WebToApk.facebookLogEvent('Purchase', String(amount), JSON.stringify({ currency: currency })));
  if (!r.ok) console.warn('event not logged');
}

document.getElementById('fb-signout').addEventListener('click', function () {
  if (window.WebToApk && WebToApk.facebookLogout) WebToApk.facebookLogout();
  showSignedOut();
});

Catatan: Diimplementasikan di FacebookBridge.kt tanpa Facebook SDK apa pun: login adalah alur web manual Facebook di tab browser, App Events dikirim ke Graph API App Events Facebook.

facebookLogin jembatan#

window.WebToApk.facebookLogin(permissionsCsv: String, callbackId: String)

Login Facebook native; [permissionsCsv] mis. "public_profile,email". Menyelesaikan [callbackId], atau memicu `appmint:facebook-login` jika kosong.

Contoh

Metode mentah di balik AppMint.facebook - utamakan pembungkus promise. Dibuat dengan Facebook App ID + Client Token Anda (langkah Integrate); tanpa keduanya setiap panggilan menjawab not_configured.

Mengembalikan: facebookLogin(permissionsCsv, callbackId) menyelesaikan window.__appmintReplies[callbackId]; dengan callbackId kosong jawabannya tiba sebagai event appmint:facebook-login. getFacebookAccessToken() mengembalikan JSON token atau "". facebookLogEvent(name, valueToSum, paramsJson) mengembalikan {ok, name, dropped} sebagai teks JSON (valueToSum adalah angka sebagai teks, atau ""). Membutuhkan: Facebook Login diaktifkan di build.

window.addEventListener('appmint:facebook-login', (e) => {
  if (e.detail.ok) console.log('token', e.detail.accessToken);
  else if (!e.detail.cancelled) console.warn(e.detail.error);
});
WebToApk.facebookLogin('public_profile,email', '');

var t = WebToApk.getFacebookAccessToken();          // '' when signed out
var logged = JSON.parse(WebToApk.facebookLogEvent('Subscribe', '4.99', JSON.stringify({ plan: 'monthly' })));
WebToApk.facebookLogout();

Sembunyikan tombol saat login Facebook belum diatur di build ini:

var btn = document.getElementById('fb-login');
btn.hidden = !(window.WebToApk && WebToApk.facebookLogin);

btn.addEventListener('click', function () {
  window.addEventListener('appmint:facebook-login', function onLogin(e) {
    window.removeEventListener('appmint:facebook-login', onLogin);
    if (e.detail.ok) showProfile(e.detail.accessToken);
    else if (e.detail.error === 'not_configured') btn.hidden = true;   // built without the Facebook App ID
  });
  WebToApk.facebookLogin('public_profile', '');
});

Catat event pembelian dan keluar:

function trackPurchase(amount, currency) {
  if (!(window.WebToApk && WebToApk.facebookLogEvent)) return;
  var r = JSON.parse(WebToApk.facebookLogEvent('Purchase', String(amount), JSON.stringify({ currency: currency })));
  if (!r.ok) console.warn('event not logged');
}

document.getElementById('fb-signout').addEventListener('click', function () {
  if (window.WebToApk && WebToApk.facebookLogout) WebToApk.facebookLogout();
  showSignedOut();
});

Catatan: Diimplementasikan di FacebookBridge.kt tanpa Facebook SDK apa pun: login adalah alur web manual Facebook di tab browser, App Events dikirim ke Graph API App Events Facebook.

facebookLogout jembatan#

window.WebToApk.facebookLogout()

Mengeluarkan pengguna Facebook dari aplikasi ini (menghapus access token yang tersimpan).

Contoh

Didokumentasikan bersama WebToApk.facebookLogin - contoh di sana menunjukkan yang ini juga.

Metode mentah di balik AppMint.facebook - utamakan pembungkus promise. Dibuat dengan Facebook App ID + Client Token Anda (langkah Integrate); tanpa keduanya setiap panggilan menjawab not_configured.

Mengembalikan: facebookLogin(permissionsCsv, callbackId) menyelesaikan window.__appmintReplies[callbackId]; dengan callbackId kosong jawabannya tiba sebagai event appmint:facebook-login. getFacebookAccessToken() mengembalikan JSON token atau "". facebookLogEvent(name, valueToSum, paramsJson) mengembalikan {ok, name, dropped} sebagai teks JSON (valueToSum adalah angka sebagai teks, atau ""). Membutuhkan: Facebook Login diaktifkan di build.

window.addEventListener('appmint:facebook-login', (e) => {
  if (e.detail.ok) console.log('token', e.detail.accessToken);
  else if (!e.detail.cancelled) console.warn(e.detail.error);
});
WebToApk.facebookLogin('public_profile,email', '');

var t = WebToApk.getFacebookAccessToken();          // '' when signed out
var logged = JSON.parse(WebToApk.facebookLogEvent('Subscribe', '4.99', JSON.stringify({ plan: 'monthly' })));
WebToApk.facebookLogout();

Sembunyikan tombol saat login Facebook belum diatur di build ini:

var btn = document.getElementById('fb-login');
btn.hidden = !(window.WebToApk && WebToApk.facebookLogin);

btn.addEventListener('click', function () {
  window.addEventListener('appmint:facebook-login', function onLogin(e) {
    window.removeEventListener('appmint:facebook-login', onLogin);
    if (e.detail.ok) showProfile(e.detail.accessToken);
    else if (e.detail.error === 'not_configured') btn.hidden = true;   // built without the Facebook App ID
  });
  WebToApk.facebookLogin('public_profile', '');
});

Catat event pembelian dan keluar:

function trackPurchase(amount, currency) {
  if (!(window.WebToApk && WebToApk.facebookLogEvent)) return;
  var r = JSON.parse(WebToApk.facebookLogEvent('Purchase', String(amount), JSON.stringify({ currency: currency })));
  if (!r.ok) console.warn('event not logged');
}

document.getElementById('fb-signout').addEventListener('click', function () {
  if (window.WebToApk && WebToApk.facebookLogout) WebToApk.facebookLogout();
  showSignedOut();
});

Catatan: Diimplementasikan di FacebookBridge.kt tanpa Facebook SDK apa pun: login adalah alur web manual Facebook di tab browser, App Events dikirim ke Graph API App Events Facebook.

getFacebookAccessToken jembatan#

window.WebToApk.getFacebookAccessToken(): String

Access token Facebook saat ini sebagai JSON {accessToken, userId, expires, grantedPermissions, declinedPermissions}, atau "" jika sudah keluar.

Contoh

Didokumentasikan bersama WebToApk.facebookLogin - contoh di sana menunjukkan yang ini juga.

Metode mentah di balik AppMint.facebook - utamakan pembungkus promise. Dibuat dengan Facebook App ID + Client Token Anda (langkah Integrate); tanpa keduanya setiap panggilan menjawab not_configured.

Mengembalikan: facebookLogin(permissionsCsv, callbackId) menyelesaikan window.__appmintReplies[callbackId]; dengan callbackId kosong jawabannya tiba sebagai event appmint:facebook-login. getFacebookAccessToken() mengembalikan JSON token atau "". facebookLogEvent(name, valueToSum, paramsJson) mengembalikan {ok, name, dropped} sebagai teks JSON (valueToSum adalah angka sebagai teks, atau ""). Membutuhkan: Facebook Login diaktifkan di build.

window.addEventListener('appmint:facebook-login', (e) => {
  if (e.detail.ok) console.log('token', e.detail.accessToken);
  else if (!e.detail.cancelled) console.warn(e.detail.error);
});
WebToApk.facebookLogin('public_profile,email', '');

var t = WebToApk.getFacebookAccessToken();          // '' when signed out
var logged = JSON.parse(WebToApk.facebookLogEvent('Subscribe', '4.99', JSON.stringify({ plan: 'monthly' })));
WebToApk.facebookLogout();

Sembunyikan tombol saat login Facebook belum diatur di build ini:

var btn = document.getElementById('fb-login');
btn.hidden = !(window.WebToApk && WebToApk.facebookLogin);

btn.addEventListener('click', function () {
  window.addEventListener('appmint:facebook-login', function onLogin(e) {
    window.removeEventListener('appmint:facebook-login', onLogin);
    if (e.detail.ok) showProfile(e.detail.accessToken);
    else if (e.detail.error === 'not_configured') btn.hidden = true;   // built without the Facebook App ID
  });
  WebToApk.facebookLogin('public_profile', '');
});

Catat event pembelian dan keluar:

function trackPurchase(amount, currency) {
  if (!(window.WebToApk && WebToApk.facebookLogEvent)) return;
  var r = JSON.parse(WebToApk.facebookLogEvent('Purchase', String(amount), JSON.stringify({ currency: currency })));
  if (!r.ok) console.warn('event not logged');
}

document.getElementById('fb-signout').addEventListener('click', function () {
  if (window.WebToApk && WebToApk.facebookLogout) WebToApk.facebookLogout();
  showSignedOut();
});

Catatan: Diimplementasikan di FacebookBridge.kt tanpa Facebook SDK apa pun: login adalah alur web manual Facebook di tab browser, App Events dikirim ke Graph API App Events Facebook.

Dibuat dari runtime aplikasi dan file contohnya pada setiap build dokumentasi. Baca sebagai Markdown Β· Semua keluarga.

Diperiksa terhadap jembatan yang dirilis pada 2026-10-22.