توثيق تطبيق جوال لووكومرس
دليل خطوة بخطوة للجميع دون حاجة إلى برمجة: أعدّ متجرك، وصمّم التطبيق، وابنِ تطبيق أندرويد عبر الإنترنت. وللمطوّرين فصلا الشيفرة المصدرية وREST API.
يشرح الإصدار 1.0.2حُدّث في 23 أكتوبر 2026
ابدأ من هنا
ما الذي اشتريته: ثلاثة أجزاء تعمل معًا
| الجزء | ما هو | من يحتاجه |
|---|---|---|
1. الإضافةmobile-app-for-woocommerce-plugin.zip | تُثبَّت على متجر WordPress الخاص بك. تتيح لك تصميم الشاشة الرئيسية للتطبيق، واختيار الألوان وخيارات تسجيل الدخول، وإرسال الإشعارات، وبناء التطبيق. | الجميع |
| 2. أداة بناء التطبيق عبر الإنترنت (App Builder) (تبويب داخل الإضافة) | تنشئ لك ملف تطبيق أندرويد على خوادمنا. تملأ نموذجًا وتضغط زرًا واحدًا. لا حاجة إلى أدوات برمجة. | معظم المستخدمين |
3. الشيفرة المصدرية للتطبيقflutter-app-source.zip | الشيفرة الكاملة للتطبيق (Flutter). استخدمها إذا أردت نسخة آيفون، أو أردت تغيير طريقة عمل التطبيق، أو فضّلت بناءه بنفسك. | المطوّرون |
أي طريق أسلك؟
| أريد… | افعل ما يلي |
|---|---|
| تطبيق أندرويد بسرعة ودون عمل تقني | اتبع الفصول من 3 إلى 12. لن تلمس الشيفرة المصدرية أبدًا. |
| تطبيق آيفون | الفصول من 3 إلى 9 لإعداد المتجر، ثم الفصل 13 (يحتاج إلى جهاز Mac ومطوّر). |
| تغيير تصميم التطبيق أو شيفرته | الفصلان 13 و15. |
الصورة الكاملة في 8 خطوات
- تأكد من جاهزية متجرك (الفصل 3).
- ثبّت الإضافة (الفصل 4).
- صمّم الشاشة الرئيسية (الفصل 5).
- اختر الألوان وطرق تسجيل الدخول والروابط (الفصلان 6 و7).
- أنشئ مشروع Firebase مجانيًا للإشعارات (الفصل 8).
- ابنِ تطبيق أندرويد عبر الإنترنت (الفصل 10).
- ثبّته على هاتفك واختبره (الفصل 11).
- انشره على Google Play (الفصل 12).
مصطلحات سترد في الدليل
| المصطلح | معناه |
|---|---|
| تخطيط التطبيق (App layout) | شاشة واحدة من تطبيقك (عادةً الشاشة الرئيسية)، تُصمَّم في WordPress باستخدام الكتل. |
| الكتلة (Block) | وحدة بناء في الصفحة: شريط بانرات متحرك، أو صف من التصنيفات، أو شبكة منتجات. |
| API | «الرسول» بين متجرك والتطبيق. يطلب التطبيق المنتجات من متجرك ويجيبه المتجر. لا تحتاج إلى فعل أي شيء بشأنه. |
| Firebase | خدمة مجانية من Google ترسل الإشعارات الفورية إلى الهواتف وتدعم تسجيل الدخول عبر Google. |
| الإشعار الفوري (Push notification) | رسالة تظهر على هاتف العميل حتى عندما يكون التطبيق مغلقًا. |
| APK | ملف تطبيق أندرويد. تثبّته على هاتف لتجربته. |
| AAB (App Bundle) | ملف أندرويد الذي يطلبه Google Play عند النشر. |
| اسم الحزمة (Package name) | المعرّف الفريد للتطبيق، مثل com.yourshop.app. لا يتغيّر أبدًا بعد النشر. |
| HTTPS | قفل الأمان في المتصفح. يجب أن يبدأ عنوان متجرك بـ https://. |
| الروابط الدائمة (Permalinks) | الطريقة التي يبني بها متجرك عناوين الويب. أي خيار يعمل ما عدا «Plain». |
| رمز الشراء (Purchase code) | الرمز الذي يثبت أنك اشتريت هذا المنتج. تطلبه أداة البناء. |
| OTP | رمز لمرة واحدة يُرسَل برسالة SMS ليتمكن الناس من تسجيل الدخول برقم هواتفهم. |
| Flutter | التقنية التي كُتب بها التطبيق. لا يحتاج إليها سوى المطوّرين. |
قبل أن تبدأ: افحص متجرك
قائمة التحقق
| الفحص | السبب | الطريقة |
|---|---|---|
| WordPress 6.0+ وWooCommerce 8.0+ وPHP 7.4+ | الإصدارات المطلوبة | Dashboard → Tools → Site Health → Info |
| يبدأ عنوان متجرك بـ https:// | الهواتف ترفض http العادي | اطلب من شركة الاستضافة تفعيل شهادة SSL المجانية |
| الروابط الدائمة ليست «Plain» | يصل التطبيق إلى متجرك عبر /wp-json/ | Settings → Permalinks → اختر «Post name» → Save |
| المتجر في وضع Live | تبدأ المتاجر الجديدة في وضع «Coming soon» فلا يرى التطبيق شيئًا | WooCommerce → Settings → Site visibility → Live |
| لديك منتجات | المتجر الفارغ ينتج تطبيقًا فارغًا | Products → Add New |
الحسابات التي قد تحتاج إليها
| الحساب | الغرض | التكلفة |
|---|---|---|
| Google (Gmail) | Firebase (الإشعارات). مطلوب. | مجاني |
| Google Play Console | نشر التطبيق على Google Play | رسوم لمرة واحدة |
| Apple Developer | نشر تطبيق آيفون على App Store | رسوم سنوية |
| مطوّر Facebook، وتسجيل الدخول عبر Apple، ومزوّد SMS | فقط إذا أردت طرق تسجيل الدخول هذه | تختلف |
تثبيت الإضافة
- في لوحة تحكم WordPress افتح Plugins → Add New → Upload Plugin.
- اختر الملف
mobile-app-for-woocommerce-plugin.zipثم انقر Install Now، ثم Activate.استخدم ملفات zip الداخلية فقط. لا ترفع ملف zip الكبير للحزمة الكاملة. - يظهر عنصران جديدان في القائمة اليسرى: App Layouts وApp Settings. وقد أُنشئت لك ثلاثة تخطيطات نموذجية.
تحقق من أنها تعمل
افتح هذا العنوان في متصفحك (استبدله بعنوان متجرك):
https://yourstore.com/wp-json/mo-app/v1/homepage
إذا ظهرت لك صفحة نصية مليئة بالأقواس المعقوفة فالإضافة تعمل. وإذا ظهرت عبارة «Active App Layout not configured» فهذا طبيعي في الوقت الحالي: ستختار التخطيط في الفصل 6.
تصميم الشاشة الرئيسية
- انتقل إلى App Layouts وافتح Modern Store Homepage (أو انقر Add Post لإنشاء تخطيط جديد).
- انقر الزر الأزرق + وابحث عن Mobile. ستجد ثلاث كتل: Mobile: App Banners وMobile: App Categories وMobile: App Product Collection.
- أضف الكتل التي تريدها واسحبها إلى الترتيب الذي يناسبك.
- انقر كتلة واستخدم الإعدادات على اليمين لتعديلها (انظر الجداول أدناه).
- انقر Update (أو Publish).
الكتل الثلاث
| الكتلة | ما تعرضه | أهم الإعدادات التي ستستخدمها |
|---|---|---|
| App Banners | صور متحركة، أو شبكة من الصور الترويجية | إضافة الصور؛ اختيار ما يحدث عند النقر (فتح منتج أو تصنيف أو رابط ويب أو لا شيء)؛ شريط متحرك أو شبكة؛ الارتفاع؛ الزوايا المستديرة؛ التشغيل التلقائي |
| App Categories | تصنيفات منتجاتك على شكل صور دائرية | النمط (تمرير أفقي أو شبكة أو قائمة)؛ حجم العنصر؛ العدد؛ اختيار تصنيف أب لعرض تصنيفاته الفرعية |
| App Product Collection | شبكة منتجات أو صف منتجات قابل للتمرير | اختيار تصنيف؛ عدد المنتجات؛ حجم البطاقة؛ الأعمدة؛ مؤقت عدّ تنازلي اختياري للتخفيضات |
اجعلها أجمل (في الكتل الثلاث)
- العنوان والوصف بألوان مستقلة لكلٍّ منهما.
- الخلفية: لون أو تدرّج لوني أو صورة.
- التباعد: الحشو فوق الكتلة وتحتها، والزوايا المستديرة.
اللوحة الجانبية: App Screen Settings
ستجد في اللوحة اليمنى App Screen Settings. وهي تتحكم في الشريط العلوي وشريط البحث لهذه الشاشة:
| الإعداد | وظيفته |
|---|---|
| App Bar Title / Logo | الاسم أو الشعار في أعلى الشاشة |
| Hide App Bar | مظهر بملء الشاشة دون شريط علوي |
| Background / Text colour | ألوان الشريط العلوي |
| Show Bottom Search Bar | يضيف مربع بحث ويتيح لك ضبط النص التلميحي فيه |
| Pull to refresh | يستطيع العملاء السحب للأسفل لإعادة التحميل |
| Pinned / Floating | هل يبقى الشريط العلوي ثابتًا أم يختفي عند التمرير |
ما الذي يُحفظ خلف الكواليس (للفضوليين)
يُحفظ كل تخطيط على هيئة نص كتل بسيط كما يلي. لا تحتاج إلى كتابته أبدًا، وهو موجود هنا لتعرف أنه لا يوجد سحر في الأمر:
<!-- wp:wc-mobile/banners {"layoutType":"slider","bannerHeight":170,"showDots":true,"autoplay":true} /-->
<!-- wp:wc-mobile/categories {"title":"Shop by category","displayStyle":"horizontal_scroll"} /-->
<!-- wp:wc-mobile/products {"title":"Fresh picks for you","layoutType":"grid","gridColumns":2,"limit":6} /-->الإعدادات: تبويبًا تبويبًا
General Settings
| الإعداد | ما عليك فعله |
|---|---|
| Active App Homepage | اختر تخطيطك هنا. هذه هي الخطوة التي تُفعّل الشاشة الرئيسية. |
| App Layout Direction | اتركه على System Default. اختر Right-to-Left لفرض التخطيط على النمط العربي للجميع. |
| Legacy Accent Color | لا يُستخدم إلا إذا أوقفت خيارات القالب. يمكنك تجاهله. |
Drawer Menu
شغّل القائمة المنزلقة أو أوقفها، وأظهر My Wallet وReward Points أو أخفِهما (يحتاجان إلى إضافات إضافية، انظر الفصل 14)، واختر خلفيتها: لونًا أو تدرجًا لونيًا أو عنوان صورة.
Legal & Policies
الصق عناوين الويب لصفحات Privacy Policy وTerms & Conditions وReturn Policy. تشترط متاجر مثل Google Play وجود سياسة خصوصية.
Support & Social
بريد الدعم الإلكتروني، ورقم WhatsApp (مع رمز الدولة، مثل +971…)، وصفحاتك على Facebook وInstagram وX.
App Info & Updates
بعد النشر، الصق رابطي Play Store وApp Store. Minimum App Version: إذا كان إصدار العميل أقدم من هذا الرقم (مثل 1.0.5) يطلب منه التطبيق التحديث قبل المتابعة. اتركه فارغًا حتى تحتاج إليه فعلًا.
Theme (Flex)
| الإعداد | ما الذي يغيّره |
|---|---|
| Primary Brand Color | الأزرار الرئيسية، وعنصر القائمة النشط، وعناصر التمييز. اختر لون علامتك التجارية. |
| Secondary / Accent Color | عناصر تمييز صغيرة مثل الشارات |
| Surface Blend Mode and Strength | مقدار تلوين الخلفيات بلون علامتك التجارية. الخيار «Level Surfaces, Low Scaffold» بقوة 7 مظهر هادئ وموصى به. |
| Top Bar Style | هل يكون الشريط العلوي عاديًا أم ملوّنًا |
| Roundness | استدارة زوايا البطاقات والصور (0 حادة، 12 ناعمة، 30 مستديرة جدًا) |
| Main Button Style | معبّأ، أو بظل، أو بحدود فقط |
| Button colour and corners | استخدم لون العلامة التجارية أو اختر لونًا خاصًا |
| Modern Design (Material 3) | اتركه مفعّلًا |
تسجيل دخول العملاء
| الطريقة | ما تحتاج إليه | درجة الصعوبة |
|---|---|---|
| البريد الإلكتروني وكلمة المرور | لا شيء، مفعّلة دائمًا | لا توجد |
| مشروع Firebase (الفصل 8) مع تفعيل تسجيل الدخول عبر Google، وإضافة بصمات SHA الخاصة بتطبيقك إلى Firebase | متوسطة | |
| تطبيق مطوّر على Facebook: يوضع اسمه ومعرّفه ورمز العميل (client token) في App Builder (الفصل 10) | متوسطة | |
| Apple | حساب Apple Developer. تشترطه Apple إذا قدّمت تسجيلات دخول اجتماعية أخرى في تطبيق آيفون | متوسطة |
| رقم الهاتف (OTP) | مزوّد SMS: 2Factor (أرقام الهند +91 فقط) أو OTPless | متوسطة |
| Phone Login ONLY | يخفي أزرار البريد الإلكتروني والحسابات الاجتماعية: يُدخل العملاء رقم هواتفهم فقط | سهلة متى عمل OTP |
إعداد تسجيل الدخول بالهاتف (OTP)
- افتح قسم SMS / OTP في أسفل تبويب Integrations.
- اختر 2Factor أو OTPless مزوّدًا.
- الصق المفتاح أو المفاتيح التي حصلت عليها من مزوّدك في الحقول التي تظهر.
- فعّل الخيار Enable Phone Login في الأعلى، ثم انقر Save All Settings.
إعداد Firebase (الإشعارات وتسجيل الدخول عبر Google)
الجزء أ: إنشاء المشروع وتسجيل تطبيق أندرويد
- انتقل إلى console.firebase.google.com وسجّل الدخول بحساب Google الخاص بك.
- انقر Add project، وسمِّه باسم متجرك وأكمل المعالج (يمكنك إيقاف Google Analytics).
- داخل المشروع انقر أيقونة Android لإضافة تطبيق أندرويد.
- في الحقل Android package name اكتب اسم الحزمة الذي تريده لتطبيقك، مثل
com.yourshop.app. دوّنه: ستكتب الاسم نفسه في App Builder. - انقر Register app، ثم Download google-services.json. احتفظ بهذا الملف في مكان آمن. يمكنك تخطي بقية خطوات المعالج.
الجزء ب: نسخ أربع قيم إلى الإضافة
- في Firebase انقر أيقونة الترس → Project settings → تبويب General.
- مرّر إلى Your apps. انسخ API key وProject ID وApp ID وMessaging Sender ID (يوجد Sender ID في تبويب Cloud Messaging).
- في WordPress افتح App Settings → Integrations & APIs → Firebase Configuration والصق كل قيمة في حقلها.
الجزء ج: المفتاح الذي يتيح لمتجرك إرسال الإشعارات
- في إعدادات مشروع Firebase افتح تبويب Service accounts.
- انقر Generate new private key. يُنزَّل ملف صغير ينتهي بـ
.json. - افتح هذا الملف بمحرر نصوص (Notepad أو TextEdit)، وحدّد كل محتواه وانسخه.
- الصقه في الحقل الكبير Firebase Service Account JSON في الإضافة وانقر Save All Settings.
الجزء د (لتسجيل الدخول عبر Google فقط)
- في Firebase افتح Authentication → Sign-in method وفعّل Google.
- بعد أول بناء، أضف بصمتي SHA-1 وSHA-256 للتطبيق في Project settings → تطبيق أندرويد الخاص بك. في بناءات Google Play استخدم البصمات التي يعرضها Google Play ضمن App integrity.
- نزّل
google-services.jsonمرة أخرى واستخدم الملف الجديد في البناء التالي.
الإشعارات والرسائل إلى العملاء
إشعارات الطلبات التلقائية
في Integrations & APIs فعّل Order Placed وOrder Status Updated لإرسال إشعار فوري إلى هاتف العميل كلما أُنشئ طلب أو تغيرت حالته (قيد المعالجة، تم الشحن…).
في الأسفل، تتيح Notification Message Templates كتابة صياغتك الخاصة. يمكنك استخدام هذه العناصر النائبة (placeholders) التي تُستبدل بالتفاصيل الفعلية:
| النوع | يتحول إلى |
|---|---|
{order_id} | رقم الطلب |
{order_status} | الحالة الجديدة |
Title: Order #{order_id} update
Message: Your order is now {order_status}. Thank you for shopping with us!WhatsApp وSMS (اختياري)
- WhatsApp: يرسل إيصالات الطلبات وتحديثاتها عبر Meta Cloud API أو Twilio أو UltraMsg. الصق رمز المزوّد (token) ورقم المرسِل.
- SMS: يرسل تحديثات الطلبات عبر 2Factor أو MSG91 أو Twilio أو Unifonic. فعّل Order Updates via SMS والصق مفتاح المزوّد.
أرسل إعلانك الخاص
- افتح تبويب Send Notification.
- اكتب عنوانًا ورسالة (مثل «تخفيضات نهاية الأسبوع: خصم 20% على الفاكهة»).
- اختر All users، أو Selected users وابحث بالاسم أو البريد الإلكتروني.
- انقر إرسال. تعني الرسالة الخضراء أن Firebase قبلته. وتخبرك الرسالة الحمراء بما يجب إصلاحه.
بناء تطبيق أندرويد عبر الإنترنت (App Builder)
ما تحتاج إليه جاهزًا أولًا
| العنصر | من أين تحصل عليه |
|---|---|
| رمز الشراء (purchase code) الخاص بك | من إيصال الشراء. يبني كل رمز شراء تطبيقًا واحدًا لعنوان متجر واحد. |
| عنوان متجرك | مثل https://yourshop.com |
| اسم التطبيق واسم الحزمة | تحدّدهما أنت: مثل «My Shop» وcom.myshop.app. يجب أن يكون اسم الحزمة هو نفسه الذي كتبته في Firebase. |
| google-services.json | نزّلته في الفصل 8، الجزء أ |
| مفاتيح WooCommerce | تُنشأ أدناه (دقيقتان) |
| ثلاث صور | أيقونة التطبيق (مربعة، 1024 × 1024)، وشعار للتحميل، وصورة شاشة البداية (splash) |
| بريدك الإلكتروني ورقم هاتفك | لنتمكن من إرسال رابط التنزيل إليك |
إنشاء مفاتيح WooCommerce (مرة واحدة)
- افتح WooCommerce → Settings → Advanced → REST API → Add key.
- Description: Mobile app. User: حساب المدير لديك. Permissions: Read/Write.
- انقر Generate API key. انسخ Consumer key وConsumer secret إلى ملاحظة آمنة. يظهر السر (secret) مرة واحدة فقط.
املأ App Builder
- افتح App Settings → App Builder.
- ضمن Connect to Cloud Builder اكتب Site URL وPurchase Code، ثم انقر Fetch App Details. تخبرك رسالة خضراء أن الاتصال يعمل ويُفتح النموذج أدناه.
- Basic App Information: اسم التطبيق، واسم الحزمة، وبريدك الإلكتروني، وهاتفك، ورمز الدولة المكوّن من حرفين (مثل AE وIN وUS).
- Security Keys: الصق Consumer Key وConsumer Secret. أضف مفتاح Google Maps فقط إذا أردت أن يختار العملاء عناوينهم على الخريطة.
- Facebook Login Setup: املأه فقط إذا كنت تستخدم تسجيل الدخول عبر Facebook.
- Branding Images: اختر لون شاشة البداية، ثم اختر App Icon وLoading Logo وSplash Image وملف Firebase Config (
google-services.json). يُرفع كل ملف لحظة اختياره ويظهر معه Uploaded Successfully بالأخضر. - اختر Build Output Type: APK للتجربة على هاتفك، أو App Bundle (AAB) لـ Google Play.
- انقر Save Details، ثم Start Android Build.
ماذا يحدث بعد ذلك
| الحالة | المعنى |
|---|---|
| Pending | بناؤك في قائمة الانتظار. يبدأ الخادم البناء التالي المنتظر كل بضع دقائق. |
| In progress | يجري إنشاء تطبيقك. |
| Completed | اكتمل. يصلك بريد إلكتروني برابط تنزيل («Download APK» أو «Download AppBundle»). |
| Failed | يصلك بريد إلكتروني يخبرك بذلك. افحص الصورة وملف Firebase واسم الحزمة، ثم ابنِ مرة أخرى. |
قواعد يجب معرفتها
- الملفات الأربعة كلها مطلوبة: الأيقونة، وشعار التحميل، وصورة شاشة البداية، و
google-services.json. - يجب أن يظهر اسم الحزمة داخل ملف
google-services.json. في أول بناء لك، إذا اختلفا، تعتمد أداة البناء اسم الحزمة الموجود في الملف. - يسمح رمز شراء واحد بعدد التطبيقات المذكور في ترخيصك (عادةً تطبيق واحد لعنوان متجر واحد). إذا ظهرت لك رسالة «maximum number of apps reached» فتواصل مع الدعم.
- بعض التراخيص مقصورة على بناءات APK. عندها تنشئ أداة البناء ملف APK حتى لو اخترت App Bundle.
- تنشئ أداة البناء ملفات أندرويد. أما آيفون فانظر الفصل 13.
- تُحذف الصور التي رفعتَها وملف Firebase من خادم البناء بعد نحو ثلاثة أشهر.
عندما يحدث خطأ
| ما تراه | ما تفعله |
|---|---|
| رسالة حمراء بعد Fetch App Details | افحص عنوان المتجر (مع https) ورمز الشراء. تأكد من أن استضافتك تسمح بالاتصالات الصادرة. |
| «Email and Phone are required» | املأ الحقلين واحفظ مرة أخرى. |
| «Icon / Splash / Logo / Google services file is missing» | ارفع الملف الناقص وابنِ مرة أخرى. |
| «The google-services.json file does not contain the package name» | سُجّل تطبيق Firebase الخاص بك باسم حزمة مختلف. صحّح أحدهما ليتطابقا. |
| لا يصل بريد بعد وقت طويل | افحص مجلد spam. تأكد من صحة البريد الإلكتروني في النموذج، واحفظ، وتواصل مع الدعم مع ذكر عنوان متجرك. |
apps.taqnix.com) عبر اتصال آمن: عنوان متجرك، ورمز الشراء، واسم التطبيق، واسم الحزمة، وبيانات التواصل، ومفاتيح WooCommerce التي كتبتها، وقيم Google Maps وFacebook، وصورك، وملف Firebase. لا يُرسل شيء حتى تضغط الأزرار في هذا التبويب. أنشئ مفتاحًا مخصصًا للتطبيق فقط، واحذفه من WooCommerce → Settings → Advanced → REST API عندما لا تحتاج إلى أداة البناء بعد الآن.تثبيت التطبيق على هاتفك واختباره
- افتح البريد الإلكتروني على هاتف أندرويد الخاص بك وانقر Download APK (أو نزّل الملف على حاسوب وأرسله إلى الهاتف).
- افتح الملف المنزَّل. قد يطلب منك أندرويد السماح بالتثبيت من هذا المصدر. اسمح به لهذه المرة فقط.
- افتح التطبيق. انتظر بضع ثوانٍ: تظهر شاشة البداية ثم شاشتك الرئيسية.
- اتبع قائمة التحقق هذه.
| الاختبار | سليم؟ |
|---|---|
| تعرض الشاشة الرئيسية البانرات والتصنيفات والمنتجات | ☐ |
| الألوان والاسم تبدو صحيحة | ☐ |
| افتح منتجًا، واختر متغيّرًا، وأضفه إلى السلة | ☐ |
| أنشئ حسابًا وسجّل الدخول | ☐ |
| أنشئ طلبًا تجريبيًا بالدفع عند الاستلام | ☐ |
| يظهر الطلب في WooCommerce → Orders | ☐ |
| يصلك إشعار الطلب على الهاتف | ☐ |
| تعمل كل طريقة تسجيل دخول فعّلتها | ☐ |
| تُفتح روابط سياسة الخصوصية والتواصل | ☐ |
نشر تطبيقك على المتاجر
Google Play (أندرويد)
- أنشئ حساب مطوّر في Google Play Console.
- أنشئ تطبيقًا جديدًا واملأ صفحة المتجر: وصفًا قصيرًا وآخر طويلًا، وأيقونة، ولقطات شاشة للتطبيق، وصورة مميزة (feature graphic).
- أضف رابط سياسة الخصوصية (مطلوب).
- أجب عن استبيانات المحتوى (الإعلانات، وأمان البيانات، والفئة العمرية المستهدفة). وضّح أن التطبيق يستخدم الموقع لملء عنوان التوصيل، ولا يعرض إعلانات.
- ابنِ App Bundle (AAB) في App Builder، وارفعه ضمن Production → Create release، ثم أرسله للمراجعة.
- تستغرق المراجعة عادةً من بضع ساعات إلى بضعة أيام. بعد ذلك الصق رابط المتجر في App Settings → App Info & Updates.
Apple App Store (آيفون)
يحتاج تطبيق آيفون إلى جهاز Mac مثبّت عليه Xcode وحساب Apple Developer، لذا يُنجز هذا الجزء من الشيفرة المصدرية بمساعدة مطوّر (الفصل 13). كما تشترط Apple Sign in with Apple إذا قدّم التطبيق تسجيلات دخول اجتماعية أخرى، وسياسة خصوصية.
للمطوّرين: بناء التطبيق من الشيفرة المصدرية
الإعداد لمرة واحدة
- ثبّت Flutter بالإصدار 3.41 أو أحدث (يثبّت Dart أيضًا).
- شغّل
flutter doctorوأصلح كل بند يبلّغ عنه (Android SDK والتراخيص، وXcode، وCocoaPods). - فُكّ ضغط
flutter-app-source.zip، وافتح الطرفية في المجلد وشغّل:
flutter pub get
وجّه التطبيق إلى متجرك
افتح lib/core/constants/app_config.dart وغيّر سطرين:
static const String siteUrl = 'https://yourstore.com'; // no slash at the end static const String appName = 'My Store';
يُضاف مسار API وهو /wp-json/mo-app/v1 تلقائيًا. للاختبار مع متجر على حاسوبك استخدم عنوانًا يستطيع الهاتف الوصول إليه: في محاكي أندرويد http://10.0.2.2:8888/wp، وفي محاكي آيفون http://localhost:8888/wp.
الاسم والمعرّف والأيقونة وشاشة البداية والإصدار
| ماذا | الأمر أو الملف |
|---|---|
| اسم الحزمة (على المنصتين) | dart run change_app_package_name:main com.yourbrand.appالافتراضي هو com.taqnix.groceryapp. ثم افحص Bundle Identifier في Xcode. |
| الاسم تحت الأيقونة | أندرويد: android:label في android/app/src/main/AndroidManifest.xml. آيفون: Display Name في Xcode. |
| أيقونة التطبيق | استبدل assets/icon/icon_android.png (1024 × 1024) ثم شغّلdart run flutter_launcher_icons |
| شاشة البداية | استبدل assets/images/splash.png، واضبط اللون في pubspec.yaml (الكتلة flutter_native_splash) ثم شغّلdart run flutter_native_splash:create |
| الإصدار | version: 1.0.0+11 في pubspec.yaml (الاسم + رقم البناء). ارفع الرقم الذي بعد علامة الجمع عند كل رفع إلى المتجر. |
ملفات Firebase
لا تحتوي الحزمة على أي ملفات Firebase: فهي تخص مشروعك أنت (الفصل 8).
- أندرويد: ضع
google-services.jsonفيandroid/app/، ثم أضف إضافة خدمات Google. فيandroid/settings.gradle.ktsأضف داخلplugins { }:
id("com.google.gms.google-services") version "4.4.2" apply falseوفي android/app/build.gradle.kts أضف داخل plugins { }:
id("com.google.gms.google-services")- آيفون: افتح
ios/Runner.xcworkspaceفي Xcode، واسحبGoogleService-Info.plistإلى مجلد Runner وفعّل Copy items if needed.
بدون هذين الملفين يبقى التطبيق يعمل للتسوّق بشكل طبيعي، لكن الإشعارات الفورية وتسجيل الدخول عبر Google تكونان متوقفتين.
Facebook وGoogle وApple والخرائط
في ios/Runner/Info.plist استبدل القيم النائبة:
<string>fbYOURAPPID</string> <!-- keep the fb prefix --> <key>FacebookAppID</key><string>YOURAPPID</string> <key>FacebookClientToken</key><string>CLIENT-TOKEN</string>
لنظام أندرويد اتبع دليل الحزمة flutter_facebook_auth. فعّل Google وApple في Firebase Authentication؛ ويحتاج تسجيل الدخول عبر Apple أيضًا إلى القدرة Sign in with Apple في Xcode. لا يحتاج Razorpay إلى مفتاح في التطبيق: يُقرأ من إعدادات Razorpay في WooCommerce لديك.
التشغيل والبناء
flutter run # on a phone or emulator flutter build apk --release # Android APK flutter build appbundle --release # Android AAB for Google Play flutter build ipa --release # iPhone (on a Mac)
توقيع تطبيق أندرويد لـ Google Play
تستخدم بناءات الإصدار (release) مفتاح التصحيح (debug) حتى تضيف مفتاحك الخاص. أنشئ مفتاحًا مرة واحدة واحتفظ به في مكان آمن:
keytool -genkey -v -keystore ~/upload-keystore.jks -keyalg RSA -keysize 2048 -validity 10000 -alias upload
أنشئ android/key.properties:
storePassword=YOUR_PASSWORD keyPassword=YOUR_PASSWORD keyAlias=upload storeFile=/Users/you/upload-keystore.jks
وفي android/app/build.gradle.kts حمّله واستخدمه في signingConfigs / buildTypes.release كما هو موضح في دليل توقيع Flutter. أما لآيفون فاختر فريقك في Xcode → Signing & Capabilities.
ما الذي يستطيع التطبيق فعله
| المنطقة | ما يستطيع العملاء فعله |
|---|---|
| الرئيسية | رؤية البانرات والتصنيفات والمنتجات كما صمّمتها؛ والسحب للأسفل للتحديث. |
| البحث والتصفية | البحث، والتصفية حسب التصنيف والسعر وخيارات المنتج (اللون، المقاس…). |
| صفحة المنتج | الصور والسعر والخيارات والوصف والتقييمات؛ وكتابة تقييم؛ والإضافة إلى قائمة الأمنيات. |
| السلة | تغيير الكميات، وحذف العناصر، واستخدام أكواد الكوبونات. |
| صفحة الدفع | ملء حقول العنوان نفسها الموجودة في موقعك، واختيار الشحن والدفع. ينتهي الدفع عند الاستلام داخل التطبيق، ويفتح Razorpay ورقة الدفع الخاصة به، وتفتح طرق الدفع الأخرى صفحة ويب آمنة ثم تعود إلى التطبيق. |
| الحساب | تسجيل الدخول أو التسجيل، وتعديل الملف الشخصي، والعناوين المحفوظة (مع الخريطة)، والطلبات وتفاصيلها، وتسجيل الخروج. |
| المحفظة ونقاط المكافآت | رؤية الرصيد والسجل. يتطلب الإضافتين TeraWallet وWooCommerce Points and Rewards. فعّل عناصر القائمة في App Settings → Drawer Menu. |
| القائمة الجانبية والمعلومات | صفحات الخصوصية والشروط والإرجاع، وروابط التواصل، وشاشة التحديث الإجباري. |
| الإشعارات | تحديثات الطلبات وإعلاناتك الخاصة. |
للمطوّرين: واجهة REST API
العنوان الأساسي: https://yourstore.com/wp-json/mo-app/v1. ترسل الطلبات التي تتطلب تسجيل الدخول الترويسة X-App-Token التي يعيدها طلب تسجيل الدخول.
جرّب بنفسك
# The home layout and global settings
curl https://yourstore.com/wp-json/mo-app/v1/homepage
# Products: page 1, 10 items, search for "milk"
curl "https://yourstore.com/wp-json/mo-app/v1/products?page=1&per_page=10&search=milk"
# Log in and keep the token
curl -X POST https://yourstore.com/wp-json/mo-app/v1/auth/login \
-H "Content-Type: application/json" \
-d '{"username":"customer@example.com","password":"secret"}'
# Use the token to read the customer's orders
curl https://yourstore.com/wp-json/mo-app/v1/orders -H "X-App-Token: YOUR_TOKEN"مثال بلغة Dart (داخل التطبيق)
final res = await dio.get('/products', queryParameters: {'category': 'fruits', 'per_page': 20});
final products = res.data['products'];جميع نقاط النهاية
| نقطة النهاية | الغرض |
|---|---|
GET /homepage | الإعدادات (المظهر، والعملة والضريبة، وطرق تسجيل الدخول، والقائمة الجانبية، والروابط، والإصدارات) والتخطيط النشط. |
GET /products, GET /products/{id} | المنتجات. المعاملات: page, per_page, include, search, category, attributes, min_price, max_price, orderby, order. |
GET /product-attributes | خيارات التصفية، ولتصنيف واحد اختياريًا. |
GET /products/{id}/reviews, POST /write-review | التقييمات. |
GET /categories | التصنيفات مع الصور والأعداد. |
POST /auth/register, /auth/login, /auth/logout | حسابات البريد الإلكتروني وكلمة المرور. |
POST /auth/send-otp, /auth/verify-otp | تسجيل الدخول بالهاتف برمز لمرة واحدة. |
POST /auth/social-login | تسجيل الدخول عبر Google أو Facebook أو Apple برمز المزوّد (token). |
GET/POST /auth/profile, POST /auth/fcm-token | الملف الشخصي ورمز الإشعارات الفورية للهاتف. |
GET /cart, POST /cart/add, /cart/update, /cart/remove, /cart/apply-coupon, /cart/remove-coupon | السلة. |
GET /checkout/form, POST /checkout/update-review, POST /checkout | حقول صفحة الدفع والإجماليات وإنشاء الطلب. |
GET /orders, GET /orders/{id} | طلبات العميل. |
GET/POST /addresses, PUT/DELETE /addresses/{id} | العناوين المحفوظة. |
GET /wishlist, GET /wishlist/details, POST /wishlist/toggle | قائمة الأمنيات. |
GET /wallet, GET /points | المحفظة والنقاط (تتطلب إضافات إضافية). |
يحتوي مجلد includes/api في الإضافة على ملف لكل مجموعة مع المعاملات الدقيقة.
حل المشكلات
| ما تراه | ما عليك فعله |
|---|---|
| يعرض التطبيق خطأ تحميل أو لا يعرض منتجات | افتح https://yourstore.com/wp-json/mo-app/v1/homepage في المتصفح. يجب أن تُحمَّل دون تسجيل دخول. وإلا: استخدم https، واضبط الروابط الدائمة على أي خيار عدا Plain، واجعل المتجر Live، وتأكد من أن إضافة أمان أو جدار حماية لا يحجب /wp-json/. |
| يظهر في عنوان الويب «Active App Layout not configured» | App Settings → General Settings → Active App Homepage: اختر تخطيطًا واحفظ. |
| غيّرت لونًا أو التخطيط ولم يتغير التطبيق | انقر Save All Settings (أو Update في التخطيط)، ثم اسحب للأسفل للتحديث أو أعد فتح التطبيق. |
| الشاشة الرئيسية فارغة | لا توجد كتل في التخطيط، أو لم تجد كتلتا التصنيفات والمنتجات شيئًا. أضف منتجات وتأكد من أن التصنيفات ليست فارغة. |
| البانرات رمادية | عناوين صور البانرات خاطئة، أو الصور غير عامة. أعد إضافتها من Media Library. |
| لا تصل الإشعارات | تأكد من لصق Firebase Service Account JSON كاملًا، ومن أن اسم الحزمة هو نفسه في كل مكان، ومن أن الهاتف سمح بالإشعارات، ومن أن العميل سجّل الدخول مرة واحدة. |
| يفشل تسجيل الدخول عبر Google | أضف SHA-1 وSHA-256 لمفتاح التوقيع إلى Firebase، ونزّل google-services.json مرة أخرى، وأعد البناء. |
| لا يصل رمز OTP | يعمل 2Factor مع الأرقام الهندية فقط. استخدم OTPless للدول الأخرى. افحص رصيد مزوّدك ومفتاحه. |
| لا تعرض المحفظة أو النقاط شيئًا | ثبّت وفعّل TeraWallet وWooCommerce Points and Rewards. |
| يفشل Fetch App Details | افحص العنوان ورمز الشراء؛ وانظر الفصل 10. |
| لا يستطيع تطبيق الإصدار الاتصال (بناء خاص بك) | يحتاج manifest أندرويد إلى إذن INTERNET. وهو مضمَّن؛ أبقِه إذا استبدلت الملف. |
| يفشل بناء آيفون في Xcode | شغّل cd ios && pod install --repo-update، وأضف GoogleService-Info.plist، واختر فريق توقيع ومعرّف حزمة (bundle ID) فريدًا. |
| تبدو السلة أو صفحة الدفع غريبة في التطبيق | يأتي نموذج الدفع من WooCommerce. افحص حقول الدفع وطرق الدفع في WooCommerce → Settings. |
التحديث وإزالة التثبيت
حدّث الإضافة برفع ملف zip الجديد (Replace current with uploaded)؛ وتبقى تخطيطاتك وإعداداتك محفوظة. وحدّث التطبيق ببناء إصدار جديد ورفعه إلى المتاجر. ولإزالة الإضافة، عطّلها واحذفها؛ وتبقى تخطيطات تطبيقك في قاعدة البيانات حتى تحذفها من App Layouts.
الدعم
مساعدة التثبيت وإصلاح الأخطاء مشمولان لمدة 6 أشهر، مع تحديثات مدى الحياة. تواصل معنا عبر صفحة المنتج في السوق التي اشتريت منها الحزمة. وعند مراسلتنا، أرفق عنوان متجرك وما تراه على الشاشة.