ابنِ تطبيقًا مصغّرًا لـ DeHub — حزمة SDK وملف البيان
التطبيق المصغّر موقع ويب عادي يعمل داخل DeHub. يرسم DeHub الترويسة باسم تطبيقك ونطاقه الحقيقي، ويتحدث تطبيقك مع DeHub عبر SDK صغيرة. يعمل التطبيق نفسه على dehub.io وفي تطبيق DeHub للهاتف دون أي تغيير.
أضف SDK
<script src="https://riftn.com/sdk/miniapp.js"></script>
<script>
// Hide the splash screen once your first screen is on.
dehub.ready();
const { user, client } = await dehub.context;
if (user) console.log('Hi', user.handle);
</script>
تضيف SDK متغيرًا عامًا واحدًا هو dehub. كل استدعاء يعيد وعدًا (promise). خارج DeHub تكون dehub.isInDehub() قيمتها false وتُرفض الاستدعاءات، لذا يمكنك تشغيل الصفحة نفسها منفردة.
دوال SDK
| الدالة | ماذا تفعل |
|---|---|
dehub.ready() | تخفي شاشة البداية. |
dehub.close() | تغلق تطبيقك. |
dehub.context | تعيد { user, location, client }. user قيمته { wallet, handle, displayName, avatarUrl } أو null عند عدم تسجيل الدخول. client يحتوي على platform (web أو mobile), added, locale, theme و safeAreaInsets. |
dehub.getCapabilities() | الدوال التي يدعمها هذا المضيف. |
dehub.auth.getToken() | رمز موقّع يثبت هوية المستخدم، لخادمك. يطلب الاستدعاء الأول من المستخدم مشاركة هويته. راجع تسجيل الدخول عبر DeHub. |
dehub.actions.composePost({ text, embedUrl }) | تفتح محرّر DeHub بنصّك ورابط اختياري يعود إلى تطبيقك (حتى 500 حرف). |
dehub.actions.viewProfile({ handle }) | تفتح ملفًا شخصيًا على DeHub. |
dehub.actions.viewPost({ id }) | تفتح منشورًا على DeHub بمعرّفه الرقمي. |
dehub.actions.openUrl(url) | تفتح رابط https خارج تطبيقك. |
dehub.actions.addApp() | تطلب من المستخدم إضافة تطبيقك، ما يسمح أيضًا بالإشعارات. |
dehub.actions.pay({ amount, memo }) | تطلب من المستخدم أن يدفع لك بعملة DHB. راجع المدفوعات. |
dehub.haptics.impact(style) | اهتزاز قصير على الهواتف: light, medium أو heavy. |
dehub.on(event, fn) | تستمع لأحداث المضيف. تعيد دالة توقف الاستماع. |
عندما يرفض DeHub طلبًا يُرفض الوعد بخطأ يحمل code: signin (المستخدم لم يسجّل الدخول)، rejected (المستخدم رفض)، invalid (معاملات غير صحيحة)، rate_limited, busy (هناك طلب آخر مفتوح)، unsupported أو failed.
ملف البيان: dehub.json
انشر هذا الملف على https://your-domain/.well-known/dehub.json. يخبر المتجر باسم تطبيقك وأي أيقونة يعرض ومن يملكه.
{
"app": {
"name": "Tip Jar",
"homeUrl": "https://tipjar.example.com/",
"iconUrl": "https://tipjar.example.com/icon-1024.png",
"subtitle": "Say thanks in DHB",
"description": "A tip jar for creators. One tap, paid straight to the creator's wallet.",
"category": "finance",
"tags": ["tips", "creators"],
"splashBackgroundColor": "#0B0B0B",
"screenshotUrls": ["https://tipjar.example.com/shot-1.png"],
"webhookUrl": "https://tipjar.example.com/api/dehub-webhook",
"permissions": ["wallet", "notifications"]
},
"ownership": {
"address": "0xYourDehubWallet",
"domain": "tipjar.example.com",
"signature": "0x…"
}
}
| الحقل | القواعد |
|---|---|
name | مطلوب. 32 حرفًا أو أقل. |
homeUrl | مطلوب. https، على نطاق ملف البيان نفسه. |
iconUrl | مطلوب. https. صورة PNG بقياس 1024×1024 دون شفافية. |
subtitle | 30 حرفًا أو أقل. |
description | مستحسن. 170 حرفًا أو أقل. |
category | مستحسن. واحد من: games، social، finance، utility، productivity، health-fitness، news-media، music، shopping، education، developer-tools، entertainment، art-creativity. |
tags | حتى 5. أحرف صغيرة أو أرقام أو شرطات، 20 حرفًا لكل منها. |
screenshotUrls | حتى 3 صور https. |
splashBackgroundColor | لون سداسي عشري مثل #0B0B0B. |
webhookUrl | https. يستقبل أحداث خطافات الويب. |
webhookEvents | اختياري. أي من: tip وfollow وmention. أحداث الحساب للمحفظة المالكة، تُرسل إلى webhookUrl. |
permissions | أيٌّ من: wallet، compose، notifications، camera. |
أثبت أنك تملك النطاق
الكتلة ownership هي توقيع محفظتك على DeHub لهذه الرسالة بالضبط، حيث السطر الثاني هو نطاقك:
dehub mini app ownership
tipjar.example.com
لا تحتاج إلى توقيعها يدويًا. في dehub.io/apps/dev، افحص رابطك واضغط توقيع لتحصل على كتلة جاهزة للصق. تذهب المدفوعات إلى المحفظة التي وقّعت، ولا يستطيع غيرها تحديث الإدراج أو إنشاء مفتاح إشعارات.
بطاقات غنية في الموجز
عندما ينشر أحدهم رابطك، يعرض DeHub بطاقة بزر يفتح تطبيقك. أضف هذا الوسم إلى <head> في الصفحة (يُقرأ أيضًا الوسم fc:miniapp ):
<meta name="dehub:miniapp" content='{"version":"1","imageUrl":"https://tipjar.example.com/card-3x2.png","button":{"title":"Open Tip Jar","action":{"url":"https://tipjar.example.com/"}}}'>
المدفوعات بعملة DHB
const { txHash, chainId, amount, receipt } = await dehub.actions.pay({
amount: 50, // DHB, whole numbers, up to 1,000,000
memo: 'Order #1042', // optional, 140 characters
});
// Send `receipt` to your server and verify it there.
await fetch('/api/orders/1042/paid', { method: 'POST', body: receipt });
يعرض DeHub المبلغ وتطبيقك ومحفظتك، ويؤكد المستخدم في محفظته، ويتحقق DeHub من التحويل على السلسلة (Base أو BNB Chain) قبل الرد. الحقل receipt رمز موقّع يحتوي على typ: "payment", sub (محفظة الدافع)، aud (نطاقك)، amount, token, chainId, txHash و memo. تحقق منه تمامًا كرمز تسجيل الدخول. لا يمكن إلا للتطبيقات المسجّلة ذات البيان الموقّع استقبال المدفوعات.
وضع الاختبار. عندما تفتح تطبيقك على DeHub بالمحفظة المالكة له، تكون المدفوعات محاكاة: لا يتحرك شيء على السلسلة، ويحمل الإيصال و payment webhook القيم test: true, chainId: 0 و txHash يبدأ بـ test_. لا تسلّم أبدًا سلعًا مدفوعة مقابل إيصال اختبار في بيئة الإنتاج.
الإرسال والمراجعة
- غير مُدرج: فور الإرسال. يحصل تطبيقك على رابط مشاركة (
dehub.io/apps/your-slug) ويعمل لكل من يفتحه، مع شارة «غير مُراجَع». - مُدرج: بعد المراجعة. يظهر تطبيقك في متجر تطبيقات DeHub.
- موثّق: تحصل التطبيقات الموثوقة على علامة تحقق ويمكن إبرازها.
يتحقق المراجعون من أن التطبيق يُحمَّل، ويعمل على الهاتف، ويطابق إدراجه، ولا يقلّد DeHub. تحديث ملف البيان وإعادة الإرسال يحدّث الإدراج.
المكافآت الأسبوعية
كل ليلة يرتّب DeHub التطبيقات المُدرجة حسب الاستخدام الفعلي: الأشخاص المسجّلون الذين يعودون (55%)، والمستخدمون الأسبوعيون (35%)، مع دفعة إضافية في أول 14 يومًا للتطبيق. وكل يوم اثنين تُقسَّم حصة الأسبوع من مجمّع مكافآت DHB الشهري حسب النقاط. للتأهل يحتاج التطبيق إلى محفظة مالك موثّقة و3 مستخدمين عائدين على الأقل. الترتيب والمكافآت السابقة موجودة في dehub.io/apps/dev.
افتح DeHub