استكمالاً للموضوع السابق (https://arabia.io/webdev/5902-مشروع-تطبيق-للقرآن-الكريم-للهواتف-الذكية-مبني-بلغات-الويب)، قمت للتو برفع نسخة تجريبية من التطبيق على GitHub Pages بعد محاولة الاستضافة على عدة مواقع أخرى باءت بالفشل :)

ما الجديد منذ الموضوع السابق؟

  • تم الانتقال إلى قواعد بيانات IndexedDB ضمن المتصفح، وهي من الميزات الحديثة ضمن المتصفحات، حيث يتم تخزين قاعدة بيانات النص القرآني والترجمات ومعلومات التلاوات ضمن المتصفح، وبهذا لا داعي لأي شيء من جهة الخادم، سوى تقديم الملفات الثابتة static، ولا داعي أيضًا لإبقاء كامل قاعدة البيانات ضمن الذاكرة، وهو ما كنت أفعله في السابق.

  • التطبيق يعمل بلا اتصال بعد اكتمال تحميل كافة الملفات أول مرة، يمكنك زيارة الرابط نفسه حتى لو كنت غير متصل بالإنترنت (يعتمد على ميزة AppCache).

  • يتم تحميل النص القرآني مرة واحدة وتخزينه ضمن المتصفح، مما يسمح بتحسين الأداء بشكل رائع.

  • يتم تحميل الترجمة عند تفعيلها فقط، ثم تخزينها في المتصفح ضمن قاعدة بيانات IndexedDB.

  • الترجمات تعمل، تعرض ترجمة كل آية تحتها، ويمكن اختيار أكثر من ترجمة، وبأكثر من لغة.

  • طبعاً مع إمكانية إخفاء الترجمات بالكامل والاكتفاء بالنص القرآني

  • بدل الحاجة للتنقل بين الصفحات أثناء القراءة، كل ما عليك هو متابعة التمرير للأسفل لتحميل الصفحة التالية (infinte scrolling)

  • البحث يعمل

  • النقر على إحدى نتائج البحث ينقلك مباشرة إلى هذه الآية، في السابق كان ينقلك إلى بداية الصفحة التي فيها الآية

  • التلاوات تعمل بشكل تجريبي (هناك بعض المشاكل تؤدي لتكرار تلاوة الصفحة بدل الانتقال للصفحة التالية، أعمل على حلها)

  • جودة التلاوات قابلة للتكيف مع سرعة الاتصال (لا يوجد متصفح حالياً يتبنى الواجهة البرمجية لمعلومات الاتصال Network Information API سوى Firefox OS على حد علمي، وعلى هذا ستحصل دوماً على أعلى دقة للتلاوة على بقية المتصفحات)

صور التطبيق

شاهدها هنا http://imgur.com/a/PvPEW

متطلبات التشغيل

  • أحدث نسخة من Chrome أو Firefox على Android 4.0+

  • أحدث نسخة Chrome على iOS 7+ (لم أقم بالتجربة ولكن المفترض أن يعمل)

  • Firefox OS 1.2+

شكر خاص

  • أحب أن أتقدم بالشكر الجزيل للدكتور خالد حسني (https://arabia.io/u/خالد-حسني) لمساهمته الكبيرة في تطوير المشروع، حيث قدم لي نسخًا معدلة من خط أميري قرآن، كما تم اعتماد النص القرآني الذي يعمل عليه (https://bitbucket.org/khaledhosny/quran)، وهو يتبع معايير

  • لؤي العقاد (https://arabia.io/u/louy) لنصائحه ولاقتراحه نشر التطبيق كتطبيق ويب بدل الاعتماد على منصة Cordova (هذا سهل المهمة أكثر :))

  • مجتمع Arabia I/O لتشجيعهم لي على المتابعة

مشاكل معروفة

  • بطء التحميل للمرة الأولى: الأمر يعتمد على سرعة اتصالك، في المرات القادمة التي يتم فتح التطبيق فيها، المفترض أن تستخدم النسخة المخزنة ضمن AppCache، وهذا يعني أنه لا حاجة للاتصال بعد ذلك (باستثناء عند تشغيل التلاوات بالطبع).

  • النص القرآني تجريبي، ومبني على عمل الدكتور خالد حسني. لاحظت بعض الأخطاء في إشارات الوقف، وسأعمل على التبليغ عنها ثم تحديث المشروع، في الوقت الحالي بإمكانك استخدام النص القرآني من مشروع الفانوس كبديل، وذلك عند بناء التطبيق بالأمر التالي:

gulp --production --experimental 0

  • تُرجى التجربة على هاتف ذكي أو جهاز لوحي، ليس على desktop أو laptop. السبب هو أن التطبيق مصمم لشاشات اللمس ومبني على إطار عمل للهواتف الذكية.

  • متصفح Chrome لا يعرض النص القرآني بشكل صحيح، السبب في Chrome، لن أعمل على إيجاد حلول ترقيعية الآن. لإصلاح المشكلة يمكنك تعطيل تلوين النص القرآني في إعدادات التطبيق، مع ذلك ستبقى إشارة الآية تسبق الرقم، لكن النتيجة ستكون أفضل بالطبع.

  • Firefox يعرض النصوص بطريقة صحيحة، لكن لسبب ما لا يمكن النقر على زر تبديل وضع الخيار ضمن الإعدادات.

  • تكرار تلاوة الصفحة بدل الانتقال للصفحة التالية (أعمل على حلها)

  • تقطع التلاوة: بما أن التطبيق يعتمد على Network Information API لتقدير سرعة اتصالك بالإنترنت، فلا يمكن الاستفادة من هذه الميزة إلا على Firefox (وربما على Firefox OS فقط)، إذا واجهت تقطعاً بالتلاوات، فالسبب هو بطء اتصالك بالإنترنت وفشل التطبيق في تقدير سرعته لجلب تلاوة بدقة مناسبة. سأبحث عن حلول أخرى لتقدير سرعة الاتصال.

  • النسخة المستضافة على GitHub Pages لا توفر سوى الترجمات باللغتين العربية والإنكليزية حالياً.

الخطوات التالية

  • حل المشاكل السابقة

  • تعريب التطبيق، وتوفير إمكانية ترجمته لأية لغة

  • لتقليل استهلاك الذاكرة، حذف الصفحات القديمة في قائمة التمرير عند الابتعاد عنها لمسافة معينة

لتجربة التطبيق

http://forabi.github.io/aQuran

المساهمات

هل تجيد تطوير تطبيقات الويب؟ ساعدني على GitHub

https://github.com/forabi/aQuran