मुफ़्त APK बनाएँ

JavaScript ब्रिज API

Facebook, Meta इवेंट और Firebase Analytics

Facebook Login, Meta App Events और Firebase Analytics, क्रिएटर की अपनी कुंजियों से, जो बिल्ड में सेट होती हैं। उपयोगकर्ता की सहमति मिलने तक Analytics कुछ इकट्ठा नहीं करता।

AppMint.analytics हेल्पर#

AppMint.analytics — one event to Firebase and Meta

उदाहरण

बिल्ड से जुड़ी हर analytics सेवा में एक इवेंट लॉग करता है: Firebase Analytics (आपकी अपनी google-services.json) और Meta App Events। नामों को हर सेवा के नियमों के हिसाब से साफ़ किया जाता है और जवाब बताता है कि क्या भेजा गया।

लौटाता है: log(name, params) → {ok, providers: {firebase?, meta?}}, हर एक {ok, name, dropped} या {ok: false, error}। setUserId(id), setUserProperty(name, value), screenView(name, class), setEnabled(on) → प्रॉमिस; providers() → {firebase, meta}। ज़रूरत: Integrate चरण → Firebase Analytics (पुश कार्ड में google-services.json अपलोड करें) और/या 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);

साइन-इन और साइन-आउट उपयोगकर्ता आईडी को सही रखते हैं:

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

भरोसा करने से पहले देखें कि कौन-सी सेवाएँ जुड़ी हैं:

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

नोट: सहमति: जब ऐप विज्ञापन दिखाता है, तो Google का सहमति फ़ॉर्म analytics के लिए भी फ़ैसला करता है - जवाब मिलने से पहले कुछ इकट्ठा नहीं होता, और जहाँ GDPR लागू है वहाँ उद्देश्य 1 की अनुमति मिलनी चाहिए; पेज का setEnabled(false) हमेशा ऊपर रहता है। जब तक इकट्ठा करना बंद है, कॉल no_consent जवाब देते हैं (कुछ भी कतार में नहीं लगता)। Firebase नाम: अक्षर, अंक और _, 40 अक्षर तक, ज़्यादा से ज़्यादा 25 पैरामीटर, स्ट्रिंग मान 100 अक्षर तक; आरक्षित नाम (first_open, session_start, firebase_…, google_…, ga_…) reserved_name / reserved_prefix जवाब देते हैं। params.value (एक संख्या) Meta का value-to-sum बन जाती है। हर पेज बदलाव पर स्क्रीन व्यू लॉग करें चालू होने पर, रूट बदलने पर screen_view अपने आप लॉग होता है। त्रुटियाँ: not_configured, missing_google_app_id, params_not_json, invalid_name.

AppMint.facebook हेल्पर#

AppMint.facebook — Facebook Login and Meta App Events

उदाहरण

आपके अपने Facebook ऐप पर "Continue with Facebook"। साइन-इन Facebook को ब्राउज़र टैब (Custom Tab) में खोलता है: यह उस ब्राउज़र के facebook.com लॉगिन का इस्तेमाल करता है, Facebook ऐप का नहीं, और उपयोगकर्ता के पुष्टि करने पर ऐप में लौट आता है। अगर आपने Meta App Events चालू किए हों तो उन्हें भी लॉग करता है।

लौटाता है: login(permissions) → एक प्रॉमिस जो हमेशा पूरा होता है: {ok: true, accessToken, userId, expires, grantedPermissions, declinedPermissions} या {ok: false, cancelled?, error}। getAccessToken() → वही टोकन ऑब्जेक्ट, या साइन आउट होने पर null। logEvent(name, valueToSum, params) → {ok, name, dropped} (कतार में लगकर बैच में भेजा जाता है) या {ok: false, error}। ज़रूरत: बिल्ड का Integrate चरण → Facebook Login, आपकी Facebook App ID और Client Token के साथ (और इसके लिए Meta App Events logEvent).

साइन इन करें, फिर टोकन को अपने बैकएंड के साथ इस्तेमाल करें:

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 बटन सिर्फ़ ऐप के अंदर दिखाएँ, और सेटअप न होने की स्थिति संभालें:

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

नोट: Facebook Developers → आपका ऐप → Facebook Login → Settings → Valid OAuth Redirect URIs: https://freewebtoapk.com/fb-return/ जोड़ें (विज़ार्ड में Copy बटन है)। किसी कुंजी हैश या Android प्लैटफ़ॉर्म सेटअप की ज़रूरत नहीं है। प्रॉमिस पूरा होने से पहले टोकन Facebook से जाँचा जाता है (वह आपकी App ID का होना चाहिए)। अगर उपयोगकर्ता के ब्राउज़र में रहते समय Android ने ऐप बंद कर दिया, तो नतीजा प्रॉमिस को नहीं दिया जाता - टोकन सेव रहता है और पेज शुरू होने पर getAccessToken() उसे लौटाता है। त्रुटियाँ: not_configured, busy (लॉगिन पहले से खुला है), cancelled (उपयोगकर्ता टैब बंद करे तब भी), state_mismatch, wrong_app, failed, no_token, foreign_origin (ऐसा पेज जो ऐप का अपना नहीं है)। App Events (आपके क्लाइंट टोकन के साथ ऐप से Facebook के App Events API को भेजे जाते हैं) सहमति मिलने के बाद ही शुरू होते हैं (देखें AppMint.analytics) और तब तक no_consent जवाब देते हैं। Supabase या Firebase रीडायरेक्ट से वेब साइन-इन पहले की तरह चलता रहता है।

analyticsLogEvent ब्रिज#

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

Firebase इवेंट; नाम को Firebase के नियमों के हिसाब से साफ़ किया जाता है। {ok, name, dropped} या {ok:false, error} लौटाता है।

उदाहरण

AppMint.analytics के पीछे के कच्चे Firebase Analytics मेथड - रैपर इस्तेमाल करना बेहतर है। हर एक अपना जवाब JSON टेक्स्ट में लौटाता है: {ok, name, dropped} या {ok: false, error}.

लौटाता है: JSON टेक्स्ट (analyticsSetEnabled कुछ नहीं लौटाता)। ज़रूरत: Integrate चरण → Firebase Analytics, और आपकी google-services.json पुश नोटिफ़िकेशन कार्ड में अपलोड की गई हो।

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

फ़ीचर की जाँच करें, फिर खरीदारी और स्क्रीन व्यू लॉग करें:

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

अस्वीकृत इवेंट और सहमति स्विच को संभालें:

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

नोट: analyticsSetEnabled Firebase और Meta App Events दोनों के लिए पेज का सहमति स्विच है; सहमति के नियमों के लिए AppMint.analytics देखें।

analyticsLogScreenView ब्रिज#

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

[screenName] के लिए Firebase screen_view (जैसे रूट पाथ)।

उदाहरण

WebToApk.analyticsLogEvent के साथ दस्तावेज़ित - वहाँ का उदाहरण इसे भी दिखाता है।

AppMint.analytics के पीछे के कच्चे Firebase Analytics मेथड - रैपर इस्तेमाल करना बेहतर है। हर एक अपना जवाब JSON टेक्स्ट में लौटाता है: {ok, name, dropped} या {ok: false, error}.

लौटाता है: JSON टेक्स्ट (analyticsSetEnabled कुछ नहीं लौटाता)। ज़रूरत: Integrate चरण → Firebase Analytics, और आपकी google-services.json पुश नोटिफ़िकेशन कार्ड में अपलोड की गई हो।

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

फ़ीचर की जाँच करें, फिर खरीदारी और स्क्रीन व्यू लॉग करें:

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

अस्वीकृत इवेंट और सहमति स्विच को संभालें:

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

नोट: analyticsSetEnabled Firebase और Meta App Events दोनों के लिए पेज का सहमति स्विच है; सहमति के नियमों के लिए AppMint.analytics देखें।

analyticsSetEnabled ब्रिज#

window.WebToApk.analyticsSetEnabled(enabled: Boolean)

हर प्रोवाइडर के लिए पेज का अपना analytics स्विच; सेव रहता है।

उदाहरण

WebToApk.analyticsLogEvent के साथ दस्तावेज़ित - वहाँ का उदाहरण इसे भी दिखाता है।

AppMint.analytics के पीछे के कच्चे Firebase Analytics मेथड - रैपर इस्तेमाल करना बेहतर है। हर एक अपना जवाब JSON टेक्स्ट में लौटाता है: {ok, name, dropped} या {ok: false, error}.

लौटाता है: JSON टेक्स्ट (analyticsSetEnabled कुछ नहीं लौटाता)। ज़रूरत: Integrate चरण → Firebase Analytics, और आपकी google-services.json पुश नोटिफ़िकेशन कार्ड में अपलोड की गई हो।

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

फ़ीचर की जाँच करें, फिर खरीदारी और स्क्रीन व्यू लॉग करें:

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

अस्वीकृत इवेंट और सहमति स्विच को संभालें:

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

नोट: analyticsSetEnabled Firebase और Meta App Events दोनों के लिए पेज का सहमति स्विच है; सहमति के नियमों के लिए AppMint.analytics देखें।

analyticsSetUserId ब्रिज#

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

Firebase यूज़र आईडी ("" इसे साफ़ करता है)।

उदाहरण

WebToApk.analyticsLogEvent के साथ दस्तावेज़ित - वहाँ का उदाहरण इसे भी दिखाता है।

AppMint.analytics के पीछे के कच्चे Firebase Analytics मेथड - रैपर इस्तेमाल करना बेहतर है। हर एक अपना जवाब JSON टेक्स्ट में लौटाता है: {ok, name, dropped} या {ok: false, error}.

लौटाता है: JSON टेक्स्ट (analyticsSetEnabled कुछ नहीं लौटाता)। ज़रूरत: Integrate चरण → Firebase Analytics, और आपकी google-services.json पुश नोटिफ़िकेशन कार्ड में अपलोड की गई हो।

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

फ़ीचर की जाँच करें, फिर खरीदारी और स्क्रीन व्यू लॉग करें:

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

अस्वीकृत इवेंट और सहमति स्विच को संभालें:

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

नोट: analyticsSetEnabled Firebase और Meta App Events दोनों के लिए पेज का सहमति स्विच है; सहमति के नियमों के लिए AppMint.analytics देखें।

analyticsSetUserProperty ब्रिज#

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

Firebase यूज़र प्रॉपर्टी (नाम 24 अक्षर तक, मान 36 तक; "" इसे साफ़ करता है)।

उदाहरण

WebToApk.analyticsLogEvent के साथ दस्तावेज़ित - वहाँ का उदाहरण इसे भी दिखाता है।

AppMint.analytics के पीछे के कच्चे Firebase Analytics मेथड - रैपर इस्तेमाल करना बेहतर है। हर एक अपना जवाब JSON टेक्स्ट में लौटाता है: {ok, name, dropped} या {ok: false, error}.

लौटाता है: JSON टेक्स्ट (analyticsSetEnabled कुछ नहीं लौटाता)। ज़रूरत: Integrate चरण → Firebase Analytics, और आपकी google-services.json पुश नोटिफ़िकेशन कार्ड में अपलोड की गई हो।

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

फ़ीचर की जाँच करें, फिर खरीदारी और स्क्रीन व्यू लॉग करें:

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

अस्वीकृत इवेंट और सहमति स्विच को संभालें:

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

नोट: analyticsSetEnabled Firebase और Meta App Events दोनों के लिए पेज का सहमति स्विच है; सहमति के नियमों के लिए AppMint.analytics देखें।

facebookLogEvent ब्रिज#

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

Meta App Event; [valueToSum] टेक्स्ट के रूप में एक संख्या या ""; [paramsJson] एक फ़्लैट JSON ऑब्जेक्ट। {ok, name, dropped} या {ok:false, error} लौटाता है।

उदाहरण

WebToApk.facebookLogin के साथ दस्तावेज़ित - वहाँ का उदाहरण इसे भी दिखाता है।

AppMint.facebook के पीछे के कच्चे मेथड - प्रॉमिस वाला रैपर इस्तेमाल करना बेहतर है। आपकी Facebook App ID + Client Token (Integrate चरण) के साथ बिल्ड होता है; इनके बिना हर कॉल जवाब देता है not_configured.

लौटाता है: facebookLogin(permissionsCsv, callbackId) window.__appmintReplies[callbackId] को पूरा करता है; callbackId खाली हो तो जवाब appmint:facebook-login इवेंट के रूप में आता है। getFacebookAccessToken() टोकन JSON या "" लौटाता है। facebookLogEvent(name, valueToSum, paramsJson) {ok, name, dropped} को JSON टेक्स्ट के रूप में लौटाता है (valueToSum टेक्स्ट के रूप में एक संख्या है, या "")। ज़रूरत: बिल्ड में Facebook Login चालू हो।

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

इस बिल्ड में Facebook लॉगिन सेट अप न हो तो बटन छिपाएँ:

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

खरीदारी का इवेंट लॉग करें और साइन आउट करें:

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

नोट: यह FacebookBridge.kt में बिना किसी Facebook SDK के लागू है: लॉगिन Facebook का मैनुअल वेब फ़्लो है जो ब्राउज़र टैब में चलता है, और App Events Facebook के App Events Graph API को जाते हैं।

facebookLogin ब्रिज#

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

नेटिव Facebook लॉगिन; [permissionsCsv] जैसे "public_profile,email"। [callbackId] को पूरा करता है, या वह खाली हो तो `appmint:facebook-login` चलाता है।

उदाहरण

AppMint.facebook के पीछे के कच्चे मेथड - प्रॉमिस वाला रैपर इस्तेमाल करना बेहतर है। आपकी Facebook App ID + Client Token (Integrate चरण) के साथ बिल्ड होता है; इनके बिना हर कॉल जवाब देता है not_configured.

लौटाता है: facebookLogin(permissionsCsv, callbackId) window.__appmintReplies[callbackId] को पूरा करता है; callbackId खाली हो तो जवाब appmint:facebook-login इवेंट के रूप में आता है। getFacebookAccessToken() टोकन JSON या "" लौटाता है। facebookLogEvent(name, valueToSum, paramsJson) {ok, name, dropped} को JSON टेक्स्ट के रूप में लौटाता है (valueToSum टेक्स्ट के रूप में एक संख्या है, या "")। ज़रूरत: बिल्ड में Facebook Login चालू हो।

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

इस बिल्ड में Facebook लॉगिन सेट अप न हो तो बटन छिपाएँ:

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

खरीदारी का इवेंट लॉग करें और साइन आउट करें:

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

नोट: यह FacebookBridge.kt में बिना किसी Facebook SDK के लागू है: लॉगिन Facebook का मैनुअल वेब फ़्लो है जो ब्राउज़र टैब में चलता है, और App Events Facebook के App Events Graph API को जाते हैं।

facebookLogout ब्रिज#

window.WebToApk.facebookLogout()

Facebook उपयोगकर्ता को इस ऐप से साइन आउट करता है (कैश किया गया एक्सेस टोकन साफ़ करता है)।

उदाहरण

WebToApk.facebookLogin के साथ दस्तावेज़ित - वहाँ का उदाहरण इसे भी दिखाता है।

AppMint.facebook के पीछे के कच्चे मेथड - प्रॉमिस वाला रैपर इस्तेमाल करना बेहतर है। आपकी Facebook App ID + Client Token (Integrate चरण) के साथ बिल्ड होता है; इनके बिना हर कॉल जवाब देता है not_configured.

लौटाता है: facebookLogin(permissionsCsv, callbackId) window.__appmintReplies[callbackId] को पूरा करता है; callbackId खाली हो तो जवाब appmint:facebook-login इवेंट के रूप में आता है। getFacebookAccessToken() टोकन JSON या "" लौटाता है। facebookLogEvent(name, valueToSum, paramsJson) {ok, name, dropped} को JSON टेक्स्ट के रूप में लौटाता है (valueToSum टेक्स्ट के रूप में एक संख्या है, या "")। ज़रूरत: बिल्ड में Facebook Login चालू हो।

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

इस बिल्ड में Facebook लॉगिन सेट अप न हो तो बटन छिपाएँ:

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

खरीदारी का इवेंट लॉग करें और साइन आउट करें:

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

नोट: यह FacebookBridge.kt में बिना किसी Facebook SDK के लागू है: लॉगिन Facebook का मैनुअल वेब फ़्लो है जो ब्राउज़र टैब में चलता है, और App Events Facebook के App Events Graph API को जाते हैं।

getFacebookAccessToken ब्रिज#

window.WebToApk.getFacebookAccessToken(): String

मौजूदा Facebook एक्सेस टोकन JSON {accessToken, userId, expires, grantedPermissions, declinedPermissions} के रूप में, या साइन आउट होने पर ""।

उदाहरण

WebToApk.facebookLogin के साथ दस्तावेज़ित - वहाँ का उदाहरण इसे भी दिखाता है।

AppMint.facebook के पीछे के कच्चे मेथड - प्रॉमिस वाला रैपर इस्तेमाल करना बेहतर है। आपकी Facebook App ID + Client Token (Integrate चरण) के साथ बिल्ड होता है; इनके बिना हर कॉल जवाब देता है not_configured.

लौटाता है: facebookLogin(permissionsCsv, callbackId) window.__appmintReplies[callbackId] को पूरा करता है; callbackId खाली हो तो जवाब appmint:facebook-login इवेंट के रूप में आता है। getFacebookAccessToken() टोकन JSON या "" लौटाता है। facebookLogEvent(name, valueToSum, paramsJson) {ok, name, dropped} को JSON टेक्स्ट के रूप में लौटाता है (valueToSum टेक्स्ट के रूप में एक संख्या है, या "")। ज़रूरत: बिल्ड में Facebook Login चालू हो।

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

इस बिल्ड में Facebook लॉगिन सेट अप न हो तो बटन छिपाएँ:

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

खरीदारी का इवेंट लॉग करें और साइन आउट करें:

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

नोट: यह FacebookBridge.kt में बिना किसी Facebook SDK के लागू है: लॉगिन Facebook का मैनुअल वेब फ़्लो है जो ब्राउज़र टैब में चलता है, और App Events Facebook के App Events Graph API को जाते हैं।

हर डॉक्स बिल्ड पर ऐप रनटाइम और उसकी उदाहरण फ़ाइलों से बनाया जाता है। Markdown में पढ़ें · सभी फ़ैमिली.

2026-10-03 को शिप किए गए ब्रिज से मिलाकर जाँचा गया।