Ücretsiz APK oluştur

JavaScript köprü API'si

Facebook, Meta olayları ve Firebase Analytics

Derlemede ayarlanan, oluşturucunun kendi anahtarlarıyla Facebook Login, Meta App Events ve Firebase Analytics. Kullanıcı onay verene kadar analitik hiçbir şey toplamaz.

AppMint.analytics yardımcı#

AppMint.analytics — one event to Firebase and Meta

Örnek

Derlemenin bağladığı her analitik hizmetine bir olay kaydeder: Firebase Analytics (kendi google-services.json dosyanız) ve Meta App Events. Adlar her hizmetin kurallarına göre temizlenir ve yanıt neyin gönderildiğini söyler.

Döndürür: log(name, params) → {ok, providers: {firebase?, meta?}}, her biri {ok, name, dropped} veya {ok: false, error}. setUserId(id), setUserProperty(name, value), screenView(name, class), setEnabled(on) → Promise'ler; providers() → {firebase, meta}. Gerekir: Entegre et adımı → Firebase Analytics (google-services.json dosyasını Push kartına yükleyin) ve/veya 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);

Oturum açma ve kapatma kullanıcı kimliğini senkron tutar:

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
  }
}

Güvenmeden önce hangi hizmetlerin bağlı olduğunu görün:

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);
}

Notlar: Onay: uygulama reklam gösterdiğinde Google'ın onay formu analitik için de belirleyicidir - bir yanıt alınmadan hiçbir şey toplanmaz ve GDPR'ın geçerli olduğu yerlerde amaç 1 verilmiş olmalıdır; sayfanın setEnabled(false) çağrısı her zaman önceliklidir. Toplama kapalıyken çağrılar no_consent yanıtını verir (hiçbir şey kuyruğa alınmaz). Firebase adları: harfler, rakamlar ve _, en fazla 40 karakter, en fazla 25 parametre, dize değerleri en fazla 100 karakter; ayrılmış adlar (first_open, session_start, firebase_…, google_…, ga_…) reserved_name / reserved_prefix yanıtını verir. params.value (bir sayı) Meta'nın value-to-sum değeri olur. Her sayfa değişikliği için bir ekran görüntülemesi kaydet açıkken rota değişiklikleri otomatik olarak screen_view kaydeder. Hatalar: not_configured, missing_google_app_id, params_not_json, invalid_name.

AppMint.facebook yardımcı#

AppMint.facebook — Facebook Login and Meta App Events

Örnek

KENDİ Facebook uygulamanızda "Facebook ile devam et". Oturum açma, Facebook'u bir tarayıcı sekmesinde (Custom Tab) açar: Facebook uygulamasını DEĞİL, o tarayıcının facebook.com oturumunu kullanır ve kullanıcı onayladığında uygulamaya döner. Açtıysanız Meta App Events de kaydeder.

Döndürür: login(permissions) → her zaman çözülen bir Promise: {ok: true, accessToken, userId, expires, grantedPermissions, declinedPermissions} veya {ok: false, cancelled?, error}. getAccessToken() → aynı token nesnesi veya oturum kapalıysa null. logEvent(name, valueToSum, params) → {ok, name, dropped} (kuyruğa alınır ve gruplar halinde gönderilir) veya {ok: false, error}. Gerekir: derlemenin Entegre et adımı → Facebook App ID'niz ve Client Token'ınızla Facebook Login (ve şunun için Meta App Events logEvent).

Oturum açın, sonra token'ı arka ucunuzla kullanın:

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 });

Facebook düğmesini yalnızca uygulamanın içinde gösterin ve eksik kurulumu ele alın:

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));
  };
}

Notlar: Facebook Developers → uygulamanız → Facebook Login → Settings → Valid OAuth Redirect URIs: https://freewebtoapk.com/fb-return/ ekleyin (sihirbazda bir Kopyala düğmesi var). Anahtar karması veya Android platform kurulumu gerekmez. Promise çözülmeden önce token Facebook ile kontrol edilir (App ID'nize ait olmalıdır). Kullanıcı tarayıcıdayken Android uygulamayı kapattıysa sonuç bir promise'e iletilmez - token saklanır ve sayfa başladığında getAccessToken() onu döndürür. Hatalar: not_configured, busy (bir oturum açma zaten açık), cancelled (kullanıcı sekmeyi kapattığında da), state_mismatch, wrong_app, failed, no_token, foreign_origin (uygulamanın kendi sayfası olmayan bir sayfa). Uygulama Olayları (uygulamadan Facebook'un App Events API'sine istemci jetonunuzla gönderilir) yalnızca onaydan sonra başlar (bkz. AppMint.analytics) ve o zamana kadar no_consent yanıtını verir. Supabase veya Firebase yönlendirmeleriyle web oturum açma eskisi gibi çalışmaya devam eder.

analyticsLogEvent köprü#

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

Firebase olayı; ad Firebase'in kurallarına göre temizlenir. {ok, name, dropped} veya {ok:false, error} döndürür.

Örnek

AppMint.analytics arkasındaki ham Firebase Analytics yöntemleri - sarmalayıcıyı tercih edin. Her biri yanıtını JSON metni olarak döndürür: {ok, name, dropped} veya {ok: false, error}.

Döndürür: JSON metni (analyticsSetEnabled hiçbir şey döndürmez). Gerekir: Entegre et adımı → Firebase Analytics, google-services.json dosyanız Anlık Bildirimler kartına yüklenmiş olarak.

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

Özelliği algılayın, sonra bir satın alma ve bir ekran görüntülemesi kaydedin:

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 }));
  };
}

Reddedilen bir olayı ve bir onay anahtarını ele alın:

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 });

Notlar: analyticsSetEnabled, Firebase ve Meta App Events için birlikte sayfanın onay anahtarıdır; onay kuralları için bkz. AppMint.analytics.

analyticsLogScreenView köprü#

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

[screenName] için Firebase screen_view (örn. rota yolu).

Örnek

WebToApk.analyticsLogEvent ile birlikte belgelenmiştir - oradaki örnek bunu da gösterir.

AppMint.analytics arkasındaki ham Firebase Analytics yöntemleri - sarmalayıcıyı tercih edin. Her biri yanıtını JSON metni olarak döndürür: {ok, name, dropped} veya {ok: false, error}.

Döndürür: JSON metni (analyticsSetEnabled hiçbir şey döndürmez). Gerekir: Entegre et adımı → Firebase Analytics, google-services.json dosyanız Anlık Bildirimler kartına yüklenmiş olarak.

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

Özelliği algılayın, sonra bir satın alma ve bir ekran görüntülemesi kaydedin:

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 }));
  };
}

Reddedilen bir olayı ve bir onay anahtarını ele alın:

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 });

Notlar: analyticsSetEnabled, Firebase ve Meta App Events için birlikte sayfanın onay anahtarıdır; onay kuralları için bkz. AppMint.analytics.

analyticsSetEnabled köprü#

window.WebToApk.analyticsSetEnabled(enabled: Boolean)

Sayfanın her sağlayıcı için kendi analitik anahtarı; kalıcıdır.

Örnek

WebToApk.analyticsLogEvent ile birlikte belgelenmiştir - oradaki örnek bunu da gösterir.

AppMint.analytics arkasındaki ham Firebase Analytics yöntemleri - sarmalayıcıyı tercih edin. Her biri yanıtını JSON metni olarak döndürür: {ok, name, dropped} veya {ok: false, error}.

Döndürür: JSON metni (analyticsSetEnabled hiçbir şey döndürmez). Gerekir: Entegre et adımı → Firebase Analytics, google-services.json dosyanız Anlık Bildirimler kartına yüklenmiş olarak.

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

Özelliği algılayın, sonra bir satın alma ve bir ekran görüntülemesi kaydedin:

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 }));
  };
}

Reddedilen bir olayı ve bir onay anahtarını ele alın:

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 });

Notlar: analyticsSetEnabled, Firebase ve Meta App Events için birlikte sayfanın onay anahtarıdır; onay kuralları için bkz. AppMint.analytics.

analyticsSetUserId köprü#

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

Firebase kullanıcı kimliği ("" temizler).

Örnek

WebToApk.analyticsLogEvent ile birlikte belgelenmiştir - oradaki örnek bunu da gösterir.

AppMint.analytics arkasındaki ham Firebase Analytics yöntemleri - sarmalayıcıyı tercih edin. Her biri yanıtını JSON metni olarak döndürür: {ok, name, dropped} veya {ok: false, error}.

Döndürür: JSON metni (analyticsSetEnabled hiçbir şey döndürmez). Gerekir: Entegre et adımı → Firebase Analytics, google-services.json dosyanız Anlık Bildirimler kartına yüklenmiş olarak.

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

Özelliği algılayın, sonra bir satın alma ve bir ekran görüntülemesi kaydedin:

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 }));
  };
}

Reddedilen bir olayı ve bir onay anahtarını ele alın:

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 });

Notlar: analyticsSetEnabled, Firebase ve Meta App Events için birlikte sayfanın onay anahtarıdır; onay kuralları için bkz. AppMint.analytics.

analyticsSetUserProperty köprü#

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

Firebase kullanıcı özelliği (ad en fazla 24 karakter, değer en fazla 36; "" temizler).

Örnek

WebToApk.analyticsLogEvent ile birlikte belgelenmiştir - oradaki örnek bunu da gösterir.

AppMint.analytics arkasındaki ham Firebase Analytics yöntemleri - sarmalayıcıyı tercih edin. Her biri yanıtını JSON metni olarak döndürür: {ok, name, dropped} veya {ok: false, error}.

Döndürür: JSON metni (analyticsSetEnabled hiçbir şey döndürmez). Gerekir: Entegre et adımı → Firebase Analytics, google-services.json dosyanız Anlık Bildirimler kartına yüklenmiş olarak.

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

Özelliği algılayın, sonra bir satın alma ve bir ekran görüntülemesi kaydedin:

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 }));
  };
}

Reddedilen bir olayı ve bir onay anahtarını ele alın:

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 });

Notlar: analyticsSetEnabled, Firebase ve Meta App Events için birlikte sayfanın onay anahtarıdır; onay kuralları için bkz. AppMint.analytics.

facebookLogEvent köprü#

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

Meta App Event; [valueToSum] metin olarak bir sayı veya ""; [paramsJson] düz bir JSON nesnesi. {ok, name, dropped} veya {ok:false, error} döndürür.

Örnek

WebToApk.facebookLogin ile birlikte belgelenmiştir - oradaki örnek bunu da gösterir.

AppMint.facebook arkasındaki ham yöntemler - promise sarmalayıcısını tercih edin. Facebook App ID + Client Token ile derlenir (Entegre et adımı); bunlar olmadan her çağrı yanıt verir not_configured.

Döndürür: facebookLogin(permissionsCsv, callbackId), window.__appmintReplies[callbackId] değerini çözer; boş bir callbackId ile yanıt appmint:facebook-login olayı olarak gelir. getFacebookAccessToken() token JSON'unu veya "" döndürür. facebookLogEvent(name, valueToSum, paramsJson), {ok, name, dropped} değerini JSON metni olarak döndürür (valueToSum metin olarak bir sayı veya ""). Gerekir: derlemede Facebook Login açık.

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();

Bu derlemede Facebook oturum açma kurulu değilse düğmeyi gizleyin:

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', '');
});

Bir satın alma olayı kaydedin ve oturumu kapatın:

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();
});

Notlar: FacebookBridge.kt içinde hiçbir Facebook SDK'sı olmadan uygulanmıştır: oturum açma, bir tarayıcı sekmesinde Facebook'un manuel web akışıdır; App Events, Facebook'un App Events Graph API'sine gider.

facebookLogin köprü#

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

Yerel Facebook oturum açma; [permissionsCsv] örn. "public_profile,email". [callbackId] çözülür veya boşsa `appmint:facebook-login` tetiklenir.

Örnek

AppMint.facebook arkasındaki ham yöntemler - promise sarmalayıcısını tercih edin. Facebook App ID + Client Token ile derlenir (Entegre et adımı); bunlar olmadan her çağrı yanıt verir not_configured.

Döndürür: facebookLogin(permissionsCsv, callbackId), window.__appmintReplies[callbackId] değerini çözer; boş bir callbackId ile yanıt appmint:facebook-login olayı olarak gelir. getFacebookAccessToken() token JSON'unu veya "" döndürür. facebookLogEvent(name, valueToSum, paramsJson), {ok, name, dropped} değerini JSON metni olarak döndürür (valueToSum metin olarak bir sayı veya ""). Gerekir: derlemede Facebook Login açık.

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();

Bu derlemede Facebook oturum açma kurulu değilse düğmeyi gizleyin:

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', '');
});

Bir satın alma olayı kaydedin ve oturumu kapatın:

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();
});

Notlar: FacebookBridge.kt içinde hiçbir Facebook SDK'sı olmadan uygulanmıştır: oturum açma, bir tarayıcı sekmesinde Facebook'un manuel web akışıdır; App Events, Facebook'un App Events Graph API'sine gider.

facebookLogout köprü#

window.WebToApk.facebookLogout()

Facebook kullanıcısının bu uygulamadaki oturumunu kapatır (önbellekteki erişim token'ını temizler).

Örnek

WebToApk.facebookLogin ile birlikte belgelenmiştir - oradaki örnek bunu da gösterir.

AppMint.facebook arkasındaki ham yöntemler - promise sarmalayıcısını tercih edin. Facebook App ID + Client Token ile derlenir (Entegre et adımı); bunlar olmadan her çağrı yanıt verir not_configured.

Döndürür: facebookLogin(permissionsCsv, callbackId), window.__appmintReplies[callbackId] değerini çözer; boş bir callbackId ile yanıt appmint:facebook-login olayı olarak gelir. getFacebookAccessToken() token JSON'unu veya "" döndürür. facebookLogEvent(name, valueToSum, paramsJson), {ok, name, dropped} değerini JSON metni olarak döndürür (valueToSum metin olarak bir sayı veya ""). Gerekir: derlemede Facebook Login açık.

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();

Bu derlemede Facebook oturum açma kurulu değilse düğmeyi gizleyin:

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', '');
});

Bir satın alma olayı kaydedin ve oturumu kapatın:

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();
});

Notlar: FacebookBridge.kt içinde hiçbir Facebook SDK'sı olmadan uygulanmıştır: oturum açma, bir tarayıcı sekmesinde Facebook'un manuel web akışıdır; App Events, Facebook'un App Events Graph API'sine gider.

getFacebookAccessToken köprü#

window.WebToApk.getFacebookAccessToken(): String

Geçerli Facebook erişim token'ı JSON {accessToken, userId, expires, grantedPermissions, declinedPermissions} olarak veya oturum kapalıysa "".

Örnek

WebToApk.facebookLogin ile birlikte belgelenmiştir - oradaki örnek bunu da gösterir.

AppMint.facebook arkasındaki ham yöntemler - promise sarmalayıcısını tercih edin. Facebook App ID + Client Token ile derlenir (Entegre et adımı); bunlar olmadan her çağrı yanıt verir not_configured.

Döndürür: facebookLogin(permissionsCsv, callbackId), window.__appmintReplies[callbackId] değerini çözer; boş bir callbackId ile yanıt appmint:facebook-login olayı olarak gelir. getFacebookAccessToken() token JSON'unu veya "" döndürür. facebookLogEvent(name, valueToSum, paramsJson), {ok, name, dropped} değerini JSON metni olarak döndürür (valueToSum metin olarak bir sayı veya ""). Gerekir: derlemede Facebook Login açık.

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();

Bu derlemede Facebook oturum açma kurulu değilse düğmeyi gizleyin:

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', '');
});

Bir satın alma olayı kaydedin ve oturumu kapatın:

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();
});

Notlar: FacebookBridge.kt içinde hiçbir Facebook SDK'sı olmadan uygulanmıştır: oturum açma, bir tarayıcı sekmesinde Facebook'un manuel web akışıdır; App Events, Facebook'un App Events Graph API'sine gider.

Her belge derlemesinde uygulama çalışma zamanından ve örnek dosyalarından oluşturulur. Markdown olarak okuyun · Tüm aileler.

22.10.2026 tarihinde yayınlanan köprüyle karşılaştırılarak kontrol edildi.