You are on page 1of 54

‫ىحيد ىفيد امبنا‬

‫ىطّر ِيب ِتطبيقات آندرِيد‬


‫ىحيد ىفيد امبنا‬

‫تخرجت عاو ‪ 2102‬ىن امجاىعة اإلسٕىية بقطاع غزة – فنسطين بتخصص‬


‫تطّير برىجيات ىن كنية تكنّمّجيا اميعنّىات‪.‬‬

‫بدأت عاو ‪ 2104‬امتّجُ متطّير ىُ نحقات ِإضافات ىتصفح كرِو‬


‫ِفايرفّكس‪ِ ،‬مي أربع إضافات حامياً ىّجّدة عنٓ سّق كرِو‪ِ ،‬طّّ رت‬
‫امعديد ىن اإلضافات ِاميُ نحقات مشركات ِرِّ اد أعيال‪.‬‬

‫أعيه حامياً كيستقه في ىجال تطّير امّيب ِتطّير تطبيقات آندرِيد‪،‬‬


‫ّ‬
‫ِىدِن في " ىدِنة خارج امصندِق"‪.‬‬
‫فَرس اميحتّيات‬

‫‪ .0‬ىقدىة عن إضافات اميتصفح ‪1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬

‫‪ 0. 0‬ىا ٍي إضافات اميتصفح ‪1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬

‫‪ 2.1‬امتقنيات اميستخدىة ‪1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬

‫‪ 3.0‬ىفارقات بين إضافات ىتصفح كرِو ِفايرفّكس ‪2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬

‫‪ .2‬إضافات ىتصفح كرِو ‪3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Chrome Extensiones‬‬

‫‪ 2.0‬أين تعيه إضافات ىتصفح كرِو ‪3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬

‫‪ 2.2‬أنّاع ِأشكال إضافات ىتصفح كرِو ‪3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬

‫‪ 2.3‬امّصّل مإلضافات ام ُيسطبة عنٓ ىتصفح كرِو ‪4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬

‫‪ 2.4‬تركيبة امينفات في إضافات كرِو ‪5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬

‫‪ 2.5‬تجربة اإلضافات اميطّرة عنٓ اميتصفح قبه رفعَا عنٓ امسّق ‪8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬

‫‪ .3‬امّاجَات امبرىجية امخاصة بيتصفح كرِو ِكيفية امتعاىه ىعَا ‪9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬

‫‪ 3.0‬ىا ٍي امّاجَات امبرىجية ‪9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . API‬‬

‫‪ 3.2‬امصٕحيات ِطرق امتعاىه ىعَا ‪9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬

‫‪ 3.3‬امتعاىه ىع ذاكرة اميتصفح ‪11 . . . . . . . . . . . . . . . . . . . . . . . . . . . :Synchronized Storage ِ Local Storage‬‬

‫‪ 4.3‬امفرق بين ‪14 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Content Script ِ Background Script‬‬

‫‪ 3.5‬تبادل امرسائه داخه اإلضافة ‪18 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Message Passing‬‬

‫‪ 3.6‬امشارات ‪22 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Badges‬‬

‫‪ 3.7‬تنبيَات سطح اميكتب ‪21 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬

‫‪ .4‬نشر ُ‬
‫امينحق عنٓ سّق كرِو ‪23 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬

‫‪ 4.0‬ىا ٍّ سّق ىتصفح كرِو ‪23 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Chrome Web Store‬‬

‫‪ 4.2‬امصيغة امنَائية ُ‬
‫منينحقات ‪24 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬

‫‪ 4.3‬امرفع عنٓ سّق كرِو أِ عنٓ استضافتك امخاصة ‪22 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬

‫‪ 4.4‬ىن داخه صفحة اميطّرين ‪28 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬


‫‪ 4.5‬رفع إضافة‪/‬ىنحق جديد إمٓ امسّق ىن صفحة اميطّرين ‪32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬

‫ىسببات مرفض إضافتك ُ‬


‫ِىنحقاتك ىن امسّق ‪35 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬ ‫ّ‬ ‫‪4.6‬‬

‫‪ .5‬امكسب اميادي ىن اإلضافات ‪42 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬

‫‪ 5.0‬شراء ُ‬
‫امينحق ميرة ِاحدة‪ ،‬أِ أشتراك امشَري‪/‬امسنّي ‪44 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬

‫‪ 5.2‬امبيع ىن داخه اإلضافة ‪42 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . In-App Payments‬‬

‫‪ 5.4‬اإلعٕنات ِإعٕنات ‪49 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Google AdSense‬‬

‫‪ِ 5.3‬سائه أخرْ منربح؟ ‪49 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬

‫امخاتية ‪52 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬


‫‪ .1‬ىقدىة عن إضافات اميتصفح‬

‫‪ 1. 1‬ىا ٍي إضافات اميتصفح‬


‫إضافات اميتصفح ٍي عبارة عن برىجيات صغيرة نقّو بتحيينَا ِتنصيبَا عنٓ اميتصفحات‬
‫(كرِو‪ ،‬فايرفّكس‪ ،‬سفاري‪ِ...‬غيرٍا) تقّو بآداء ِظيفة ىحددة ِِاضحة قد ٔ يّفرٍا اميتصفح ِٔ‬
‫تكن ىدىجة أجناء تحييننا منيتصفح ىن اميصدر‪ِ ،‬ىن امييكن كذمك تعديه ِتحسين ِظائف ىّجّدة‬
‫ىسبقاً باميتصفح‪.‬‬

‫ِحتٓ ٔ يقّو اميطّرِن بامتعديه عنٓ اميتصفح ذاتُ إلضافة ِظائف أخرْ ىعينة (كإدارة‬
‫اميّاقع اميفضنة ىحٕ ً‪ ،‬أِ إضافة مينع اإلعٕنات ىن اميّاقع اإلمكترِنية)‪ ،‬يّفر صانعّا اميتصفحات ىا‬
‫ُيسيٓ باإلضافات أِ اميُ نحقات يتً تطّيرٍا عنٓ أيدي ىطّرين آخرين تسيح منيستخدىين بتحيينَا‬
‫عنٓ ىتصفحاتًَ آلداء ِظائف ىعينة‪.‬‬

‫‪ 2.1‬امتقنيات اميستخدىة‬
‫يعتيد بناء إضافات أِ ىنحقات اميتصفح عنٓ تقنيات امّيب األساسية ٍِي‪:‬‬

‫‪ :HTML -‬مغة ترىيز ِتعني ىجيّعة األكّاد امّصفية اميستخدىة إلنشاء ِتصييً صفحات ِىّاقع‬
‫امّيب ٍِي اختصار مٖ ‪ِ Hyper Text Markup Language‬مقراءة اميزيد حّل ٍذٌ امنغة ىن ِيكيبيديا‪.‬‬
‫‪ :CSS -‬مغة تَتً ب تنسيق صفحات امّيب ِتصييً اميّاقع متظَر بصّر جيامية‪ ،‬كاألمّان ِامصّر‬
‫ِامخنفيات‪ .‬فٖ ‪ HTML‬يركز عنٓ اميحتّْ امخاص بامصفحة‪ِ ،‬امٖ ‪ CSS‬ىَتية بامتنسيق ِترتيب ٍذا‬
‫اميحتّْ امذي يظَر مزائر صفحة امّيب‪ِ ،‬مقراءة اميزيد حّل ٍذٌ امنغة ىن ِيكيبيديا‪.‬‬
‫‪ٍِ :JavaScript -‬ي مغة برىجة ىخصصة مبخ امحياة عنٓ صفحات امّيب‪ ،‬فَي تجعه صفحة امّيب‬
‫زر ىا؟ أِ ىاذا‬
‫أكحر تفاعنية ىع اميستخدو‪ .‬ىاذا تريد أن يحصه عندىا يقّو اميستخدو بامضغط عنٓ ٍ‬
‫تريد أن يحصه عندىا تتأكد ىن تحييه صفحة ِيب كاىنة ىع امصّر ِغيرٍا عند اميستخدو؟ كه‬
‫ٍذٌ األحداث تستطيع تّميَا باستخداو مغة ‪ٍِ JavaScript‬نا اميزيد حّل ٍذٌ امنغة ىن ِيكيبيديا‪.‬‬

‫باإلضافة منتقنيا ت أعٌٕ‪ ،‬فعنٓ اميطّر أن يينك خنفية ِمّ كانت صغيرة في امتعاىه ىع ٍياكه‬

‫امبيانات كٖ‪:‬‬

‫‪ٍِ :JSON -‬ي اختصار مٖ ‪ٍِ JavaScript Object Notation‬ي صيغة تيحيه بيانات يسَه نقنَا ِتخزينَا‪.‬‬
‫‪ٍِ :XML -‬ي اختصار مٖ ‪ٍِ Extensible Markup Language‬ي مغة ترىيز ىخصصة مّصف امبيانات ِنقنَا‬
‫ِتخزينَا كذمك‪ .‬ىحال ٔستخداو ‪ِ JSON‬ىا يّازيُ في ‪ XML‬ىن ِيكيبيديا‬

‫صفحة | ‪1‬‬ ‫ىدِنة خارج امصندِق‬


‫‪ 3.1‬ىفارقات بين إضافات ىتصفح كرِو ِفايرفّكس‬
‫ٍذا امكتاب اإلمكترِني يتحدث بشكه ىن امتركيز عنٓ ىتصفح كرِو ِإضافاتُ‪ ٍِ ،‬نا جدِل‬
‫اميفارقات بين ىتصفح كرِو ِفايرفّكس ىن ِاقع امعيه عنٓ تطّير إضافات مكنٓ اميتصفحين‪:‬‬

‫فايرفّكس‬ ‫كرِو‬ ‫اميزايا‬


‫سَه ىيتنع‬ ‫سَه ِبسيط‬ ‫سَّمة امتّثيق‬
‫بُ نّع ىن امتعقيد ِتحتاج مإلمياو‬
‫بامعديد ىن األىّر امبرىجية‬ ‫بسيط ِغير ىعقد‬ ‫سَّمة امتطّير‬
‫األخرْ‬
‫غير ىجانية ( ُت ّ‬
‫كنف ‪ 5‬دِٔرات ميرة‬
‫ىجانية‬ ‫ىجانية امعضّية في امسّق‬
‫ِاحدة)‬
‫يسيح (بشيء ىن امتعقيد)‬ ‫ٔ يسيح‬ ‫امرفع خارج امسّق‬

‫آمي في امبداية ىا مً ُتحير اإلضافة‬


‫امشك‪ُ .‬ت حّّ ل منيراجعة اميدِية إذا‬
‫كانت ٍناك ىشكنة ىا باإلضافة‬
‫يدِي دائياً‬ ‫ُ‬
‫ِيرسه مك بريد إمكترِني عن‬ ‫أسنّب ىراجعة اإلضافات‬
‫اميشكنة‪ِ ،‬من ُتقبه اإلضافة‬
‫بامسّق إٔ بعد ىراجعتَا يدِياً‬
‫ّ‬
‫ِخنٍّا ىن اميشاكه‬
‫ىن جٕث أياو إمٓ عشرة أياو‬ ‫بيعدل ساعة أِ ساعتين عنٓ‬
‫حسب امنيط امذي قيت باختيارٌ‬ ‫األكحر بعد نشرك مإلضافة ىا مً‬ ‫سرعة قبّل اإلضافات في امسّق‬
‫منف حص‪ ،‬ألن امفحص يدِي دائياً‬ ‫ُت حّّ ل منيراجعة اميدِية‬

‫صفحة | ‪2‬‬ ‫ىدِنة خارج امصندِق‬


‫‪ .2‬إضافات ىتصفح كرِو ‪Chrome Extensiones‬‬

‫‪ 2.1‬أين تعيه إضافات ىتصفح كرِو‬


‫ىن امينطقي أن تعيه إضافات ِىنحقات ىتصفح كرِو بّجّد ىتصفح كرِو‪ ،‬حيخ يتّافر‬
‫ىتصفح كرِو عنٓ امعديد ىن أنظية امتشغيه كٖ ِيندِز‪ ،‬ىاك‪ِ ،‬مينكس‪ٍ .‬ذا يعني أن ىنحقاتك ستعيه‬
‫عنٓ أكحر ىن نظاو تشغيه بفضه ِجّد ىتصفح كرِو ِدعيُ عنٓ أكحر ىن نظاو تشغيه‪.‬‬

‫مكن مألسف ٔ تعيه اإلضافات بّجّ د ىتصفح كرِو عنٓ األجَزة امذكية امتي تعيه ب نظاو‬
‫‪ Android‬أِ ‪ ، iOS‬فاميتصفح ٔ يدعً عيه ىنحقاتك حتٓ بّجّد اميتصفح‪.‬‬

‫‪ 2.2‬أنّاع ِأشكال إضافات ىتصفح كرِو‬


‫يّجد جٕث أنّاع إلضافات ىتصفح كرِو‪ ،‬ييكنك اختيار إحداًٍ بناءاً عنٓ ِظيفة اإلضافة ذاتَا‪:‬‬

‫‪ ٍِّ :Browser Action - 1‬امنّع امذي يظَر في شريط األدِات امخاص بيتصفح كرِو بجانب شريط‬
‫امعناِين كيا ٍّ ىّضح بامصّرة ‪ِ 2.2.0‬تسيح بّضع أيقّنة ميتفاعه ىعَا اميستخدو بامضغط عنيَا متظَر‬
‫نافذة ىنبحقة ىحٕ ً‪.‬‬

‫ُيستخدو ٍذا امنّع بامعادة ىن اإلضافات امتي تقدو ِظائف عاىة ِغير ىقتصرة منعيه بّجّد صفحة‬
‫ِيب برابط ىخصص‪ ،‬كإضافة ىنع اإلعٕنات امتي تعيه عنٓ كافة صفحات امّيب ِميس فقط‬
‫صفحات فيسبّك عنٓ سبيه اميحال ٔ امحصر‪.‬‬

‫صّرة رقً ‪ 2.2.1‬ىثال عن إضافات ىن نّع ‪Browser Action‬‬

‫‪ ٍِّ :Page Action - 2‬امنّع امذي يظَر في شريط امعناِين كيا ٍّ ىّضح بامصّرة ‪ِ 2.2.2‬تسيح كذمك‬
‫بّض ع أيقّنة ىن اختيارك ِتسيح كذمك بتفاعه اميستخدو ىع األيقّنة متظَر مُ نافذة ىنبحقة في حال قاو‬
‫بامضغط عنيَا‪.‬‬

‫صفحة | ‪3‬‬ ‫ىدِنة خارج امصندِق‬


‫صّرة رقً ‪ 2.2.2‬ىثال عن إضافات ىن نّع ‪Page Action‬‬

‫ُيستخدو ٍذا امنّع ىن اإلضافات امتي تقدو ِظائف ىخصصة منصفحة اميفتّحة حامياً ِميس عنٓ كه‬
‫امصفحات (األمسنة) اميفتّحة حامياً عنٓ ىتصفح كرِو بعكس اإلضافات ىن نّع ‪.Browser Action‬‬

‫أىحنة مَذا امنّع ىن اإلضافات‪ ،‬اإلضافات امتي ُتظَر أسياء اميكتبات اميُ ستخدىة في اميّقع اميفتّح‬
‫حامياً‪ ،‬أِ إضافة إلظَار نّع امخط اميُ ستخدو في امفقرة اميحددة في ٍذٌ امصفحة امحامية ٍِكذا‪.‬‬

‫‪ٍ ٔ - 3‬ذا ِٔ ذاك‪ :‬في حال كنت تريد أن تعيه اإلضافة في ام خنفية دِن حاجة متفاعه اميستخدو‪ ،‬فٕ‬
‫داعي متحدد أي نّع ىن األنّاع امسابق ذكرٍا‪.‬‬

‫‪ 2.3‬امّصّل مإلضافات ُ‬
‫اميسطبة عنٓ ىتصفح كرِو‬
‫رؤيتك مإلضافات اميّجّدة في شريط األدِات أِ في شريط امعناِين ٔ يعني أن ٍذٌ ٍي كه‬
‫اإلضافات اميُ سطبة مديك! فكيا أشرت مننّع األخير ٍِّ امنّع امذي يعيه في امخنفية ِٔ حاجة ميتفاعه‬
‫اميستخدو ىع اإلضافة! مذمك ِمرؤية كافة اإلضافات اميُ سطبة في ىتصفح كرِو ىن خٕل‪:‬‬

‫‪ - 2‬امضغط عنٓ أيقّنة (اإلعدادات)‪ ،‬جً امذٍاب مٖ (اميزيد ىن األدِات – ‪ِ ،)More Tools‬ىن جً (اإلضافات –‬
‫‪ )Extensions‬كيا تشير امصّرة رقً ‪:2.3.0‬‬

‫صّرة رقً ‪ 2.3.1‬منذٍاب إمٓ صفحة اإلضافات ُ‬


‫اميسطبة‬

‫صفحة | ‪4‬‬ ‫ىدِنة خارج امصندِق‬


‫‪ - 1‬ىن خٕل كتابة في شريط امعناِين ٍذا امرابط ‪ Chrome://Extensions‬سينقنك ىباشرة مصفحة‬
‫اإلضافات اميُ سطبة مديك كيا ٍّ ىّضح في امصّرة رقً ‪:2.3.2‬‬

‫صّرة رقً ‪ 2.3.2‬معرض كافة اإلضافات ُ‬


‫اميسطبة في ىتصفح كرِو‬

‫مدي ‪ ،‬ييكنك تعطيه أِ تفعيه اإلضافة امتي تريد ىن خٕل ِضع‬


‫ّ‬ ‫ٍذ ٌ ٍي صفحة اإلضافات اميُ سطبة‬
‫عٕىة صح عنٓ ‪ Enabled‬أِ تفعيه بجانب كه إضافة أِ إزامة عٕىة امصح ىن عنٓ ‪.Enabled‬‬

‫‪ 2.4‬تركيبة امينفات في إضافات كرِو‬


‫كيا أشرنا سابقاً أن امتقنيات اميُ ستخدىة في تطّير إضافات اميُ تصفح ٍي تقنيات امّيب‪ ،‬أي‬
‫عندىا تقّو بتصييً صفحة ِيب فإنك تقّو بتقسيً امينفات بامشكه امذي تريد‪ .‬فكافة ىنفات ‪CSS‬‬
‫تقّو بّضعَا في ىجند ‪ Style‬ىحًٕ‪ِ ،‬كافة ىنفات ‪ JavaScript‬تقّو بّضعَا في ىجند بعنّان ‪ٍِ JS‬كذا‪.‬‬

‫عنٓ ىستّْ ىتصفح كرِو‪ِ ،‬حتٓ يفًَ اميتصفح أن ٍذٌ ٍي إضافة أِ ىنحق ِميست ىجرد‬
‫صفحة ِيب عادية‪ ،‬فيجب عنيك أن ُتعرّ ف ذمك في ىنف أساسي بإسً ‪ ٍِّ Manifest.json‬عبارة عن‬
‫ىنف بَيكنية بيانات ىن نّع ‪ JSON‬متيحيه صيغة بيانات اإلضافة‪ ،‬كإسً اإلضافة‪ ،‬أيقّنتَا‪ِ ،‬صف‬
‫اإلضافة‪ ،‬نّع اإلضافة ِغيرٍا ىن اميعنّىات األخرْ امتي يقرأٍا ىتصفح كرِو ُ‬
‫ِيظَرٍا منيُ ستخدو‬
‫في صفحة اإلضافات امتي تعنينا كيفية امّصّل إميَا‪.‬‬
‫صفحة | ‪5‬‬ ‫ىدِنة خارج امصندِق‬
‫إذاً‪ ،‬امينف األساسي مدينا ٍّ ‪ٍِ Manifest.json‬ذٌ ٍي صّرة تشرح تّزيع امينفات ِاميجندات‪:‬‬

‫صّرة رقً ‪ 2.4.1‬تّضح طبيعة امينفات ِأٍيَا ألي إضافة‬

‫امينفات ِاميُ جندات‪:‬‬

‫‪ -‬ىجند ‪ :CSS‬يحتّي عنٓ كافة ىنفات ىن نّع ‪ CSS‬متنسيق ىحتّْ ِصفحات اإلضافة امتي تعرض‬
‫منيُ ستخدو (كصفحة ‪ِ popup.html‬تنسيقاتَا)‪.‬‬

‫‪ -‬ىجند ‪ :Images‬يحتّي عنٓ كافة امصّر ىن أيقّنات ِغيرٍا ىن امصّر‪.‬‬

‫‪ -‬ىجند ‪ :JS‬يحتّي عنٓ كافة ىنفات ِأكّاد جافا سكريبت‪.‬‬

‫‪ -‬صفحة ِيب ‪ٍِ :Popup.html‬ي امصفحة امتي ستحيه ىحتّْ امنافذة امينبحقة عند ضغط اميُ ستخدو‬
‫أليقّنة اإلضافة (نستنتج ىن ٍذا امكٕو أن نّع اإلضافة ٍّ ‪.)Browser Action‬‬

‫‪ِ -‬ىنفنا األساسي ٍّ ‪ِ :Manifest.json‬يحتّي عنٓ كافة تفاصيه اإلضافة ىن إسً‪ِ ،‬صف‪ ،‬األيقّنات‬
‫ِىساراتَا ِغيرٍا‪ِ ،‬صّرة رقً ‪ 2.4.2‬ستّضح طبيعة ىحتّْ ِاحدة ىن اإلضافات مينف‬
‫‪:Manifiest.json‬‬

‫صّرة رقً ‪ 2.4.2‬تّضح أًٍ امقيً امت ي يجب أن تتّافر في ىنف ‪ Manifest.json‬األساسي‬

‫صفحة | ‪6‬‬ ‫ىدِنة خارج امصندِق‬


‫شرح بعض اميُ صطنحات‪:‬‬

‫‪ :manifest_version -‬أتركَا دائياً كيا ٍي بإصدارٍا امحاني‪.‬‬

‫‪ :Name -‬يحتّي عنٓ اسً اإلضافة ٍِّ أسً امذي سيظَر منيُ ستخدو عند عرضُ مكافة اإلضافات‬
‫اميُ سطبة في اميتصفح أِ في صفحة اإلضافة في امسّق امخ اص بيتصفح كرِو مإلضافات‪.‬‬

‫‪ ٍِّ :Version -‬رقً نسخة اإلضافة‪ِ ،‬سيساعد ٍذا امفيديّ بعنّان " كيف تقّو بتصدير برىجياتك‬
‫بطريقة صحيحة" أِ ‪ Software Versioning‬متعطي دٔمة منيستخدو عن طبيعة ٍذٌ امنسخة‪.‬‬

‫‪ :Description -‬يحتّي عنٓ ِصف اإلضافة ٍِّ ذاتُ امذي سيظَر منيستخدو في صفحة اإلضافات‬
‫اميُ سطبة أِ في صفحة اإلضافة في امسّق امخاص بيتصفح كرِو مإلضافات‪.‬‬

‫‪ :Icons -‬يحتّي عنٓ ىسار ِأسياء األيقّنات بأحجاىَا اميختنفة ِيفضه أن يحتّي عنٓ جٕث جّدات‬
‫مأليقّنات‪.‬‬

‫‪ :Author -‬قيية غير ضرِرية ِييكن أستغناء عنَا‪ ،‬ييكن اإلشارة ميّقع ىطّر ٍذٌ اإلضافة‪.‬‬

‫‪ ٍِّ :browser_action -‬إلعٕو اميتصفح بنّع اإلضافة أنَا ىن نّع ‪ ،Browser Action‬أي ستظَر أيقّنة‬
‫اإلضافة في شريط األدِات بجانب شريط امعناِين‪ ،‬قينا بتحديد ىسار ِإسً ىنف األيقّنة امذي‬
‫حددنا ىسار امصفحة امتي يجب أن ُتعرض عند ضغط‬
‫سيظَر بجانب شريط امعناِين‪ِ ،‬كذمك ّ‬
‫اميُ ستخدو عنٓ أيقّنة إضافتك‪.‬‬

‫يّجد امعديد ىن امقيً األخرْ اإلضافية امتي ييكن ِضعَا في ىنف ‪ ،Manifest.json‬ييكن اإلستعانة بَذا‬

‫اميصدر امرسيي ىن جّجه إليجاد اميزيد‪ِ ،‬ىن أًٍ األىّر امتي يجب اإلطٕع عنيَا ٍي قيية‬

‫‪ Permissions‬حيخ تتطنب بعض اإلضافات صٕحيات ىعينة منعيه بشكه صحيح‪ ،‬كصٕحية امّصّل‬

‫منيّقع امجغرافي امحامي منيستخدو ‪ Physical Location‬أِ امٖ ‪ GeoLocation‬عنٓ سبيه اميحال! ِميس‬

‫بامضرِرة أن تحتّي كه إضافة عنٓ صٕحيات! مكن سيتً عرض امصٕحيات اميطنّبة منيستخدو عند‬

‫تحيينُ إلضافة ىا ىن امسّق‪.‬‬

‫صفحة | ‪7‬‬ ‫ىدِنة خارج امصندِق‬


‫‪ 2.5‬تجربة اإلضافات اميطّرة عنٓ اميتصفح قبه رفعَا عنٓ امسّق‬
‫بامطبع‪ِ ،‬ق به رفع اإلضافة عنٓ امسّق‪ ،‬يجب أن تقّو بتجربتَا مديك عنٓ اميتصفح ِامقياو‬
‫بامتعديٕت امٕزىة ِامتأكد ىن كافة امّظائف‪ِ ،‬حتٓ تقّو بتجربة اإلضافة عنٓ اميتصفح يجب امقياو‬
‫بَذٌ امخطّات‪:‬‬

‫بأي ىن امطرق امتي تً ذكرٍا آنفاً‪.‬‬


‫‪ - 2‬قً بامذٍاب مصفحة اإلضافة اميُ سطبة ٍ‬

‫‪ - 1‬تأكد ىن تفعيه ِضع اميطّرين كيا ٍّ ىّضع بامصّرة رقً ‪:2.5.0‬‬

‫صّرة رقً ‪ 2.5.1‬تّضح طريقة تفعيه ِضع اميطّرين‬

‫‪ - 4‬ييكنك بعدٍا سحب ىجند اإلضافة (بيا يحتّيُ ىن ىجندات ِىنفات ِأٍيَا ىنف ‪)Manifiest.json‬‬
‫ِإفٕتُ في ٍذٌ امصفحة‪ ،‬أِ ببساطة امضغط عنٓ ‪ِ Load Unpacked Extension‬تحديد ىسار ىجند‬
‫اإلضافة ( ٍذٌ اإلضافة ستكّن ىرفقة ىع امكتاب اإلمكترِني منتجربة)‪.‬‬

‫صّرة رقً ‪ 2.5.2‬تّضح استيراد ىجند اإلضافة ِتركيبَا في ىتصفح كرِو‬

‫‪ - 3‬أي تعديه تقّو بُ في ىنفات اإلضافة‪ ،‬كإضافة صّر ِأيقّنات جديدة‪ ،‬أِ تحديخ في ىنفات‬
‫جافاسكريبت أِ امستايه‪ ،‬يجب عنيك أن تق ّو بتحديخ اإلضافة ىن خٕل امضغط عنٓ ‪ Reload‬في‬
‫امصّرة رقً ‪ِ 2.5.2‬ترْ تعديٕتك فعنياً عنٓ اميتصفح‪.‬‬

‫صفحة | ‪8‬‬ ‫ىدِنة خارج امصندِق‬


‫‪ .3‬امّاجَات امبرىجية امخاصة بيتصفح كرِو ِكيفية امتعاىه ىعَا‬

‫‪ 3.1‬ىا ٍي امّاجَات امبرىجية ‪API‬‬


‫عندىا نقّو ببناء خدىة برىجية ىعينة‪ِ ،‬نريد ىن ىستخدىين آخرين أستفادة ىن ٍذٌ‬
‫امخدىة‪ ،‬فقد يتبادر في ذٍنك ألِل ىرة بأن يجب عنينا ىشاركتًَ امكّد امبرىجي امخاص بَذٌ امخدىة‬
‫مٕستفادة ىن ىزاياٍا! ٍذا بامطبع خاطٓء تياىاً‪ِ ،‬ىن ٍنا ظَر ىا ُيسيٓ بامّاجَات امبرىجية أِ ‪API‬‬
‫ٍِي اختصار مٖ ‪ ،Application Programming Interface‬ىن خٕل ص نع ِاجَة برىجية ىعينة ييكن‬
‫منيستخدو امتعاىه ىعَا مٕستفادة ىن امخدىات دِن أي حاجة أِ ضرِرة مرؤية امكّد امخاص‬
‫بامخدىة‪.‬‬

‫ّ‬
‫ِىحنَا‬ ‫يشرح ٍذا امفيديّ اميتّاضع بأسنّب كرتّني ِىبسط عن ىفَّو امّاجَات امبرىجية‪،‬‬
‫امطباخ‪ ،‬به تسأل امنادل ِتطنب ىنُ ىا‬
‫ّ‬ ‫بأنك عندىا تذٍب إمٓ ىطعً ىا‪ ،‬فأنت ٔ تتعاىه ىباشرة ىع‬
‫تشاء ىن طنبات ِيقّو ٍّ بإيصامَا منيطبخ متجَيز طنبياتك ميعّد مك امنادل بيا طنبت عند جَّزية‬
‫امطنب! فامنادل ٍنا معب دِر امّسيط أِ ىا ُيسيٓ بامّاجَة امتي تعاىنت أنت ىعَا دِن امخّض‬
‫بامتفاصيه فييا يحصه داخه اميطعً ِىطبخُ‪.‬‬

‫عّدة إمٓ ىتصفح كرِو‪ِ ،‬حتٓ يتسنٓ منا امتعاىه ىع امخدىات امتي يقدىَا اميتصفح‪،‬‬
‫كاستخداو ذاكرة اميتصفح أِ عرض اميّاقع اميفضنة منيستخدو أِ ىراقبة طنبات امصفحات اميفتّحة‬
‫حامياً‪ ،‬امتعاىه ىع امكّكيز‪ .‬إذاً ٍذا ي تطنب ىنا ىعرفة امكّد امداخني امخاص باميتصفح؟ بامطبع ٔ‪،‬‬
‫جّجه تّفر منا ِاجَة برىجية بسيطة ٔستدعائَا ِاستخداىَا منّصّل ميّارد اميتصفح دِن رؤية‬
‫كّد اميتصفح ىن امداخه‪.‬‬

‫‪ 3.2‬امصٕحيات ِطرق امتعاىه ىعَا‬


‫تطرقنا سابقاً في ىنف ‪ Manifest.json‬حّل نقطة امصٕحيات‪ِ ،‬أنُ يجب تعريف امصٕحيات‬
‫امتي نريد ِميس بامضرِرة كه إضافة يجب أن تينك صٕحيات! مكن ىا عٕقة ٍذا بامّاجَات امبرىجية‬
‫امخاصة بيتصفح كرِو؟‬

‫صفحة | ‪9‬‬ ‫ىدِنة خارج امصندِق‬


‫منفترض ىحٕ ً بأني أريد امحصّل عنٓ اميّقع امجغرافي امخاص بيستخدو إضافتي حامياً‪ ،‬إذا‬
‫بامطبع أنا بحاجة منتعاىه ىع امّاجَة امبرىجية امخاصة بجّجه‪ِ ،‬بامطبع مفعه ذمك يجب أن أضيف‬
‫صٕحية امّصّل منيّقع امجغرافي ‪ GeoLocation‬عبر ىنف ‪ Manifest.json‬ميخرج منا بَذا امشكه‪:‬‬

‫صّرة رقً ‪ 3.2.1‬تّضح إضافة صٕحية ‪ GeoLocation‬في ىنف امٖ ‪Manifest.json‬‬

‫تً إضافة كنية ‪ Permissions‬في ىنف ‪ِ Manifest.json‬كيا نرْ أنَا تحتّي عنٓ ىصفّفة‪ ،‬أي ييكن أن‬
‫تحتّي اإلضافة عنٓ ىجيّعة ىن امصٕحيات األخرْ امتي نحتاجَا‪.‬‬

‫اآلن ِعبر كّد جافا سكريبت صغير ييكننا امحصّل عنٓ اميّقع امجغرافي ميستخدو اإلضافة‪:‬‬

‫صّرة رقً ‪ 3.2.2‬تّضح دامة امحصّل عنٓ اميّقع امجغرافي منيستخدو عند ا ستدعاء امدامة‬

‫سنٕحظ عبر ٍذا امكّد امصغير بعرض نقاط امطّل ِامعرض ميستخدو اإلضافة‪ِ ،‬طبعًَ في شاشة‬
‫امكّنسّل في ىتصفح كرِو‪.‬‬

‫صفحة | ‪11‬‬ ‫ىدِنة خارج امصندِق‬


‫ىاذا مّ ٔ أىنك صٕحية امّصّل مٖ ‪ GeoLocation‬ىعرّ فاً في ىنف ‪:Manifest.json‬‬

‫بكه بساطة من يتً تنفيذ ٍذٌ امتعنييات ِتظَر رسامة خطأ في شاشة امكّنسّل بأن اإلضافة ٔ‬
‫تينك صٕحيات منّصّل امٖ ‪:GeoLocation‬‬

‫صّرة رقً ‪ 3.2.3‬تّضح رسامة امتحذير بأن صٕحية ‪ GeoLocation‬غير ىتّفرة ِيجب إضافتَا‬

‫‪ 3.3‬امتعاىه ىع ذاكرة اميتصفح ‪:Synchronized Storage ِ Local Storage‬‬


‫إن كنت ٔزمت تتابع قراءة امكتاب ِٔ يّجد بجانبك كّباً ىن امقَّة‪ ،‬فعنيك أن ُت ّ‬
‫جَز نفسك‬
‫مقنيٕ ً ىن امصداع ِكحيراً ىن امكّد يا صديقي!‬

‫ِٔزمنا في جزئية امتعاىه ىع امّاجَة امبرىجية امخاصة بيتصفح كرِو منّصّل ألًٍ امخدىات‬
‫ِاميييزات في ىتصفح كرِو‪ِ ،‬اآلن ِبامطبع أي إضافة ٔبد مَا ىن أن تقّو بتخزين بعض امبيانات‬
‫حتٓ تعّد مَا ٔحقاً‪ ،‬كإعدادات اإلضافة عنٓ سبيه اميحال؟‬

‫قبه كه شيء‪ ،‬يجب عنينا إضافة صٕحية امدخّل منذاكرة في ىنف ‪ Manifest.json‬كيا أشرنا سابقاً‪:‬‬

‫صّرة رقً ‪ 3.3.1‬تّضح إضافة صٕحية ‪ Storage‬منتعاىه ىع ذاكرة اميتصفح‬

‫صفحة | ‪11‬‬ ‫ىدِنة خارج امصندِق‬


‫اآلن‪ ،‬بإىكاننا أستفادة ىن امّاجَة ام برىجية ِامتعاىه ىع امذاكرة بكه سَّمة‪ ،‬تّفر منا امّاجَة‬
‫امبرىجية ‪ API‬أسنّبين جيينين في تخزين امبيانات عبر اميتصفح‪:‬‬

‫‪:Local Storage -‬‬

‫تيكننا ىن حفظ امبيانات ِأستعٕو عنَا في اميتصفح حتٓ بعد إغٕقُ‪ٍِ ،‬نا كّد بسيط‬
‫متخزين ىعنّىات بسيطة عبر استخداو امّاجَة امبرىجية امخاصة بجّجه‪:‬‬

‫صّرة رقً ‪ 3.3.2‬عبارة عن دامة متخزين كائن أِ قيية ىعينة في ذاكرة اميتصفح‬

‫باإلستعانة بٖ ‪ chrome.storage.local‬استطعنا امّصّل إمٓ امذاكرة‪ِ ،‬تخزين كائن ‪ِ ،Object‬إظَار‬


‫رسامة بعد عينية امحفظ‪ ،‬أردت ٍنا تخزين رسامة "‪ "First Value To Save‬في ىفتاح " ‪ ،"value‬حتٓ أستطيع‬
‫امّصّل منرسامة ىن خٕل ٍذا اميفتاح‪.‬‬

‫اآلن‪ ،‬دعنا نستعنً عن ىا ُقينا بحفظُ‪:‬‬

‫صّرة رقً ‪ 3.3.3‬عبارة عن دامة مٕستعٕو عن امكائن امذي قينا بتخزينُ‬

‫عبر ٍذٌ امدامة‪ ،‬سنستعنً عن امبيانات امتي قينا بتخزينَا ىسبقاً في اميفتاح ‪ِ Value‬عرضَا عنٓ شاشة‬
‫امكّنسّل‪ٍِ ،‬ذٌ ٍي امنتيجة‪:‬‬

‫صّرة رقً ‪ 3.3.4‬تّضح امقيية امتي استعنينا عنَا ِعرضَا في شاشة امكّنسّل‬

‫صفحة | ‪12‬‬ ‫ىدِنة خارج امصندِق‬


‫‪:Synchronized Storage -‬‬

‫نفس امتي سبقتَا باإلستعيال تياىاً‪ ،‬فقط عنينا تبديه ‪ chrome.storage.local‬بٖ‬


‫‪chrome.storage.sync‬‬

‫ّ‬
‫تّفر منا ربط اميتصفح بحسابنا عبر امبريد‬ ‫مكن‪ ،‬ىا امفرق امجٍّري بينَيا؟ نعنً جي يعاً أن جّجه‬
‫اإلمكترِني متخزين اميّاقع اميفضنة‪ِ ،‬إعدادات اميتصفح ِحتٓ اإلضافات اميسطبة‪...‬حتٓ‬
‫نستطيع ىن جَاز حاسّب آخر ىزاىنة ىّاقعنا اميفضنة ِإعدادات اميتصفح ِاإلضافات ِغيرٍا‬
‫ىن األشياء امتي ييكن إدارتَا دِن امحاجة منقياو بذمك يدِياً كه ىرة نقّو فيَا بتحييه ىتصفح‬
‫كرِو!‬

‫فنّ قيت بإعادة تَيئة منظاىك ِتيت إزامة ىتصفح كرِو ىن حاسّبك‪ ٔ ،‬تيأس إذا قيت سابقاً‬

‫بربط ىتصفحك عبر بريدك اإلمكترِني معيه ىزاىنة مكه ذمك! فكه شيء بامحفظ ِامصّن كيا ٍّ‬
‫ىُ شار بامصّرة امتامية‪:‬‬

‫صّرة رقً ‪ 3.3.5‬ىن شاشة اإلعدادات امخاصة بيتصفح كرِو تّضح ربط اميتصفح بامبريد اإلمكترِني معيه ىزاىنة مإلعدادات‬

‫اآلن‪ ،‬عّدة امٓ ِاجَتنا امبرىجية ‪ِ chrome.storage.sync‬ىا قيت بتخزينُ ٍنا‪ ،‬سيتً كذمك عيه‬
‫ىزاىنة مُ بحساب اميستخدو اميربّط ببريدٌ اإلمكترِني‪ .‬بامعادة‪ ،‬يجب عنيك أن تقّو بتخزين‬
‫إعدادات إضافتك ىن خٕل ‪ِ chrome.storage.sync‬ميس ‪ chrome.storage.local‬حتٓ يتً ىزاىنة‬
‫إعدادات إضافتك في حال اضطر اميُ ستخدو إلعادة تس طيب ىتصفح كرِو ِإضافتك ىرة أخرْ!‬

‫مكن احذر! جّجه تقّل بأن اميطّّ ر يستطيع ىزاىنة أي شيء فعًٕ‪ ،‬مكن ٍناك حجً ى ّ‬
‫حدد ميا‬
‫ييكنك ىزاىنتُ ِحفظُ‪ ،‬ف امحجً امكني اميسيّح مك بُ ٍّ ‪ 012,411‬بايت فقط‪ِ ،‬حجً كه كائن ييكنك‬
‫تخزينة بيفتاحُ ٍّ ‪ 8,092‬بايت فقط‪ِ ،‬أقصٓ عدد ىن ام كائنات ييكنك تخزينَا ٍّ ‪ 502‬فقط‪ِ ،‬إٔ‪،‬‬
‫سيحصه خطأ أجناء حفظك منبيانات‪.‬‬

‫صفحة | ‪13‬‬ ‫ىدِنة خارج امصندِق‬


‫‪ 4.3‬امفرق بين ‪Content Script ِ Background Script‬‬
‫أشرنا في قسً أنّاع إضافات ىتصفح كرِو أن ٍناك جٕث أنّاع‪ِ ،‬كان امنّع األخير ٍّ "ٔ ٍذا‬
‫ِٔ ذاك" ٍِّ نّع يعيه فقط في امخنفية! أي بيجرد أن يقّو اميُ ستخدو بتشغيه ىتصفح كرِو ِتبدأ‬
‫شيء ىا بامخنفية حتٓ ِإن مً يقً اميُ ستخدو بأي‬
‫ٍ‬ ‫اإلضافات بامعيه‪ ،‬تريد أن تقّو إضافتك بعيه‬
‫حركة أِ فتح أي صفحة! إذاً نحن بحاجة مٖ ‪ Script‬يتً تنفيذٌ في ‪ Background‬فّر تشغيه اميتصفح‬
‫ِتبدأ اإلضافة امخاصة بنا بامعيه‪.‬‬

‫حتٓ نقّو بذمك‪ ،‬نقّو بتجَيز امسكريبت ِميكن ‪ ٍِّ background.js‬يحتّي عنٓ امكّد امذي‬
‫أريد تنفيذٌ ميعيه في امخنفية‪ ،‬مكن يتبقٓ أن أعطي امتعنييات منيتصفح بأن ٍذا امينف يجب تنفيذٌ‬
‫فّر تشغيه إضافتي‪ ٍِّ ...‬ىا يجب أن أقّو بتحديدٌ في ىنف ‪ Manfiest.js‬كيا تّضح امصّرة رقً‬
‫‪:3.4.0‬‬

‫صّرة رقً ‪ 3.4.1‬تّضح تعريف مسكريبت أريد تنفيذٌ ميعيه في امخنفية‬

‫ّ‬
‫ِحددنا ىسار امسكريبت امذي نريد تنفيذٌ ميعيه في امخنفية ٍِّ‬ ‫قينا بإضافة ‪background‬‬
‫داخه ىجند ‪ِ js‬اسً امينف ٍّ ‪ِ background.js‬مكن‪ ،‬ىا ٍّ امٖ ‪ِ persistent‬مياذا يحيه قيية ‪true‬؟‬

‫صفحة | ‪14‬‬ ‫ىدِنة خارج امصندِق‬


‫منفترض أن امسكريبت امذي يعيه في امخنفية يقّو بفحص ىا كه عشر دقائق‪ِ ،‬بامتامي تنفيذ‬
‫امسكريبت من ينتَي عند ىرحنة ىعينة ِإنيا سيبقٓ يعيه بامخنفية دائياً ِطّل امّقت! ٍِّ ىا أشرنا‬
‫إميُ ٍنا ىن خٕل قيية ‪ِ persistent‬تحيه ‪ِ true‬تعني بأن امسكريبت ٔ ُي نفذ فقط ميرة ِاحدة به‬
‫سيبقٓ يعيه في امخنفية‪ ،‬مذمك أبقي يا ىتصفح كرِو عينك عنٓ ىا يعيه في امخنفية ِتابع امنتائج‬
‫ِٔ تتكاسه عن ذمك !‬

‫ىاذا مّ م ً أضع ٍذٌ امقيية؟ أِ قيت بتعريفَا بٖ ‪ false‬ىحًٕ؟ سيتً تنفيذ امكّد ميرة ِاحدة فقط‪،‬‬
‫ِمن ترْ امنتائج بعد عشر دقائق ألن ىتصفح كرِو أمقٓ نظرة ِاحدة ِقاو بامتنفيذ ِأنَٓ بعد ذمك كه‬
‫شيء مُ عٕقة بامسكريبت!‬

‫قيت بإنشاء سكريبت ‪ٍِ background.js‬ذا ىا بداخنُ‪:‬‬

‫صّرة رقً ‪ 3.4.2‬تّضح امرسامة امتي أريد إظَارٍا في امخنفية‬

‫ىجرد رسامة تظَر فّر تشغيه اميتصفح يتً طبا عتَا في شاشة امكّنسّل‪ ،‬مكن يبقٓ‬
‫امسؤال‪ ...‬كيف أتابع ىخرجات امسكريبت امذي يعيه في امخنفية؟ كَذٌ امرسامة ىحًٕ؟ بيجرد ذٍابنا‬
‫مصفحة اإلضافات اميُ سطبة‪ ،‬سنرْ شيئاً جديداً أضيف في خانة إضافتنا‪:‬‬

‫صّرة رقً ‪ 3.4.3‬تّضح امّصّل منتائج امسكريبت امذي يعيه بامخنفية‬

‫صفحة | ‪15‬‬ ‫ىدِنة خارج امصندِق‬


‫ٍذا يعني أن ٍناك سكريبت ُي نفذ بامخنفية! ِبيجرد امضغط عنٓ ‪ ،background page‬سنعرض‬
‫شاشة امكّنسّل امخاصة بامسكريبت امذي تً تنفيذٌ في امخنفية‪ٍِ ،‬ذٌ ٍي اميخرجات‪:‬‬

‫صّرة رقً ‪ 3.4.4‬تّضح نتائج امسكريبت امذي يعيه في امخنفية‬

‫إذا كانت إضافتك تعيه في ىّاقع ىعينة‪ ،‬كإضافة ‪Facebook Mention Tagging Blocker‬‬
‫اميخصصة مينع اإل شارة إميك في ىنشّر ىا أِ صّرة ىا عنٓ فيسبّك‪ ،‬فَذا امنّع ىن اإلضافات تضطر‬
‫ألن تحقن كّد ىعين داخه صفحات فيسبّك ِفقط! ٍِّ ىا ُيسيٓ بٖ ‪ Content Script‬أي امكّد امذي‬
‫قينا بحقنُ في صفحة فيسبّك أصبح جزءاً ىنَا‪.‬‬

‫سأقّو اآلن بإنشاء سكريبت خاص في ىجند ‪ js‬يحيه اسً ‪ِ content_script.js‬أريد ىن ٍذا‬
‫امسكريبت أن يتً حقنُ في صفحة فيسبّك‪ ،‬ىا امذي أحتاجُ اآلن حتٓ يعرف ىتصفح كرِو بذمك؟‬
‫بامطبع! ىنف ‪ Manifest.json‬عنيُ أن يحيه بعض امتعنييات كيا فعننا ىع ‪:Background Scripts‬‬

‫صّرة رقً ‪ 3.4.5‬تّضح آمية إضافة كّد يتً حقنُ في صفحات ىعينة‬

‫صفحة | ‪16‬‬ ‫ىدِنة خارج امصندِق‬


‫ٔ داعي مإلرتباك يا صديقي! دعنا نّضح ىا قينا بُ ٍنا‪:‬‬

‫‪ -‬قينا بتعريف أن ٍناك ‪ Content Scripts‬سيتً حقنًَ‪ ،‬مكن أين يجب أن يقّو كرِو بحقنًَ؟ قننا أنُ‬
‫يجب أن يتً امحقن داخه صفحات فيسبّك فقط! ِِضحنا ذمك داخه ىصفّفة ‪ٍِ matches‬ي ىن‬
‫امييكن أن تحتّي عنٓ أكحر ىن ىّقع ىحٕ ً أِ صفحات ىعينة في فيسبّك‪.‬‬

‫ّ‬
‫حددنا في قيية ‪ِ js‬امتي تحيه كذمك ىصفّفة‪ ،‬أن امسكريبت امذي أريد حقنُ داخه صفحات فيسبّك‬ ‫‪-‬‬
‫آن‬
‫ٍّ ‪ content_script.js‬اميّجّد داخه ىجند ‪ِ js‬ىن امييكن كذمك أن أحقن أكحر ىن سكريبت في ٍ‬
‫ِاحد بٕ أي ىشكنة!‬

‫‪ -‬أىا امقيية األخيرة ‪ run_at‬فَي تّضح ىتٓ أريد أن يتً حق امسكريبت؟ بعد تحييه امصفحة كنياً أِ‬
‫فّر تحيينَا؟ تً تحديد فّر تحيينَا عبر قيية ‪ِ ،document_start‬ىن امييكن استبدامَا بٖ‬
‫‪ document_end‬مّ أردنا تنفيذ امسكريبت فّر أنتَاء ىن تحييه امصفحة‪.‬‬

‫‪ٍ -‬ه ييكن حقن أكّاد ىن ‪CSS‬؟ بامطبع! ىن امييكن أ ن تصيً نافذة ىنبحقة داخه صفحة فيسبّك‪،‬‬
‫ِييكن حقن أكّاد ‪ CSS‬بنفس طريقة حقن أكّاد ‪ js‬ىع استبدامَا بٖ ‪ِ CSS‬تحديد ىسار ىنفات ‪.CSS‬‬

‫اآلن‪ ،‬ىاذا يحتّي امينف امذي قيت بانشائُ في ‪content_script.js‬؟‬

‫ِىا أريد إظَارٌ في شاشة امكّنسّل‬ ‫صّرة رقً ‪ 3.4.6‬تّضح ىحتّْ ‪content_script.js‬‬

‫رسامة صغيرة يتً طبعَا في شاشة امكّنسّل تّضح بأن امكّد فعٕ ً تً حقنُ بنجاح! اآلن‪ ،‬دعنا نفتح‬
‫صفحة فيسبّك ِنرْ ٍه فعٕ ً تً حقن امكّد ِتنفيذٌ داخه صفحة فيسبّك أو ٔ؟‬

‫صّرة رقً ‪ 3.4.7‬تّضح ناتج امسكريبت امذي قينا بحقنُ داخه صفحة فيسبّك‬

‫صفحة | ‪17‬‬ ‫ىدِنة خارج امصندِق‬


‫رائع جداً! فّر فتح شاشة امكّنسّل عبر امضغط عنٓ زر ‪ِ F12‬أنا داخه صفحة فيسبّك‪ ،‬شاشة‬
‫امكّنسّل تحيه امرسامة امتي قينا بحقنَا عبر إضافتنا امصغيرة‪.‬‬

‫ٍه يجب عنينا اإلكتفاء فقط بٖ ‪ Content Script‬دِن امحاجة منتعاىه ىع ‪Background Scripts‬‬

‫حيخ أنني مست بحاجة ألي شيء ُي نفذ في امخنفية؟ ٍذا سؤال ّ‬
‫جيد! ٍناك بعض امقيّد في ‪Content‬‬
‫‪ Script‬حيخ أني ٔ أستطيع امّصّل مكافة ىييزات امّاجَة امبرىجية امتي تّفر ٍا مي جّجه ِأنا‬
‫داخه ‪ ،Content Script‬بعكس ‪ Background Scripts‬امتي تسيح مي بامّصّل منّاجَة امبرىجية بكافة‬
‫تفاصينَا! إذاً أنا بحاجة منّع ىن امتّاصه بين ‪ Background Script ِ Content Script‬حتٓ أستطيع‬
‫امّصّل منّاجَة امبرىجية بشكه امكاىه!‬

‫‪ 3.5‬تبادل امرسائه داخه اإلضافة ‪Message Passing‬‬

‫إن أنَيت فنجان قَّتك‪ ،‬سأقترح عنيك بصب اميزيد‪ ،‬ألن ٍذٌ امنقطة تحديداً ذات أٍيية كبيرة‬
‫ِستحتاجَا بامتأكيد يّىاً ىا!‬

‫عندىا نقرأ ‪ Message Passing‬أِ تبادل امرسائه‪ٍ ،‬ذا يعني أن ٍناك شيئان ىنفصٕن يريدان‬
‫امتحدث أِ امتّاصه فييا بينًَ‪ ،‬أِ إرسال رسامة ىن جانب إمٓ آخر‪ِ .‬كيا تحدجنا عن امفرق بين‬
‫‪ِ Background Script ِ Content Script‬أننا بحاجة منّع ىن امتّاصه بينَيا‪ ،‬إذاً ٍذا امقسً س ُيجيب‬
‫بامتحديد عن كيفية امقياو بَذا امتّاصه‪.‬‬

‫دعنا نقّو بإرسال رسامة صغيرة ىن سكريبت ‪ content_script.js‬إمٓ سكريبت ‪:background.js‬‬

‫صّرة رقً ‪ 3.5.1‬ىن سكريبت ‪ content_script.js‬إلرسال رسامة إمٓ ‪background.js‬‬

‫حتٓ نقّو بإرسال رسامة ىن أي سكريبت ىن داخه ‪ Content Script‬ىن خٕل ِاجَة برىجية‬
‫ىتصفح كرِو‪ ،‬نستخدو ‪ِ chrome.runtime.sendMessage‬تحتّي عنٓ امكائن (امرسامة) امتي نريد‬
‫إرسامَا امٓ اميستقبه‪ِ ،‬في حامتنا تنك سيكّن اميستقبه ٍّ ‪ِ ،background.js‬ننتظر امرد امذي سيتً‬
‫إرسامُ ىن ‪ background.js‬في حال فعٕ ً أردنا امرد عنٓ ٍذٌ امرسامة‪.‬‬

‫صفحة | ‪18‬‬ ‫ىدِنة خارج امصندِق‬


‫اآلن‪ ،‬كيف نجعه ‪ background.js‬يستيع ألي رسامة نرسنَا مُ؟ ستّضح ٍذٌ امصّرة رقً ‪ 3.5.2‬ذمك‪:‬‬

‫ِامرد عنيَا‬ ‫صّرة رقً ‪ 3.5.2‬ىن سكريبت ‪ background.js‬يّضح استياعُ منرسائه ُ‬


‫اميرسنة ىن ‪content_script.js‬‬

‫باستخداو امّاجَة امبرىجية بامطبع‪ِ ،‬عبر ‪ chrome.runtime.onMessage.addListener‬سأضيف‬


‫خاصية أستياع ألي رسامة قادىة ىن ‪ِ Content Script‬أنا داخه سكريبت ‪.background.js‬‬

‫قيت بامفحص إذا كان امكائن اميُ رسه يحيه اسً ‪ِ greeting‬إذا كان كذمك أرسه مُ امرد " ‪I got‬‬
‫‪ !"this, goodbye‬دعنا نرْ اآلن امنتائج‪:‬‬

‫نفتح صفحة فيسبّك ِنتأكد ىن تنفيذ امسكريبت ‪ِ ،content_script.js‬امذي بدِرٌ سيرسه‬


‫رسامة امٓ ‪ background.js‬ميرد عنينا بعدٍا امسكريبت بامرسامة‪"I got this, goodbye" :‬‬

‫صّرة رقً ‪ 3.5.3‬يّضح منا امرد ىن ‪ِ background.js‬نحن داخه ‪content_script.js‬‬

‫ِبامضغط عنٓ ‪ِ F12‬نحن في صفحة فيسبّك م عرض شاشة امكّنسّل‪ ،‬سنرْ امرد امذي أتانا‬
‫ىن ‪ background.js‬بنجاح! بَذٌ امطريقة استطعنا أن نرسه رسائه ىن ‪ Content Script‬امٓ ‪Background‬‬
‫‪ِ Script‬استقبه ‪ Content Script‬امرد بنجاح‪.‬‬

‫امنّع امذي تطرقنا مُ قبه قنيه ُيسيٓ بٖ ‪ Simple One-Time Requests‬أي نرسه رسامة ِننتظر‬
‫امرد ٍِذا كه شيء ! ٍذا اميصدر ىن جّجه يشرح أنّاع أخرْ متبادل امرسائه‪ ،‬ىاذا مّ احتجنا مقناة‬
‫ىفتّحة بين ‪ Background Script ِ Content Script‬متبادل أكحر ىن رسامة بنفس امّقت؟ أِ أخذ إجراء‬
‫ىعين عند رد ىعين؟ ٍذا امنّع ُيسيٓ بٖ ‪ Long Live Connection‬أِ أتصال اميفتّح‪.‬‬

‫ييكن كذمك تبادل رسائه بين أكحر ىن إضافة! به ِييكنك أيضاً إرسال رسامة ىن ىّقعك‬
‫امشخصي إمٓ إضافتك بكه سَّمة‪ .‬كه ٍذا يعتيد عنٓ طبيعة ِِظيفة اإلضافة امتي تريد تطّيرٍا‪.‬‬

‫صفحة | ‪19‬‬ ‫ىدِنة خارج امصندِق‬


‫‪ 3.6‬امشارات ‪Badges‬‬
‫ُيصبح ُ‬
‫ِتريد أن تظَر رقً بجانب إضافتك امتي ٍي ىن نّع ‪ ،Browser Action‬أِ تظَر نص ىا‬
‫أسفه أيقّنة اإلضافة كيا تقّو إضافة حجب اإلعٕنات امتي تخبرنا كً إعٕن قاىت بحذفُ‪.‬‬

‫امّاجَة امبرىجية امخاصة بيتصفح كرِو تسيح منا بذمك‪ ،‬بإىكاننا ِضح نص ىكّن ىن ‪4‬‬
‫أحرف عنٓ األ كحر ِتحديد امنّن امذي نريد‪ ،‬دعنا نظَر رقً "‪ "023‬أسفه أيقّنة اإلضافة كيا في صّرة‬
‫رقً ‪:3.6.0‬‬

‫صّرة رقً ‪ُ 3.6.1‬تظَر عرض أرقاو كشارة أسفه أيقّنة اإلضافة‬

‫بامطبع منقياو بذمك‪ ،‬ىن غير امينطقي أن ندع ‪ Content Script‬يقّو بَذا امعيه به ٔ نستطيع‬
‫أساساً امّمّج مَذٌ امينطقة ىن ِاجَة جّجه امبرىجية ِأنا داخه ‪ ،Content Script‬ييكننا اإلستعانة بٖ‬
‫‪ Background Script‬متغيير امقيية بامخنفية ِامتحكً بامشارات كيا نشاء كيا ٍّ ىّضح في امصّرة‪:‬‬

‫معرض شارة أسفه أيقّنة إضافتنا‬ ‫صّرة رقً ‪ 3.6.2‬ىن ىنف ‪background.js‬‬

‫باستخداو ‪ٍ chrome.browserAction‬ذا يعني نحن قادرين اآلن امّصّل مخصائص اإلضافة ىن نّع‬
‫ّ‬
‫ِحددنا امنص امذي ستحينُ امشارة ‪ِ Badge‬مّن امخنفية بكه سَّمة!‬ ‫‪،Browser Action‬‬

‫أي تغيير نريدٌ أن يتً منشارة كتغيير منرقً أِ امنص ِأنا داخه ‪ ،Content Script‬ف نحن بحاجة‬
‫منتّاصه امذي تطرقنا مُ بامنقطة امسابقة بين ‪ Background Script ِ Content Script‬ىن خٕل ‪Message‬‬
‫‪.Passing‬‬

‫صفحة | ‪21‬‬ ‫ىدِنة خارج امصندِق‬


‫‪ 3.7‬تنبيَات سطح اميكتب‬

‫قد تحتاج إضافتك بشكه أِ بآخر م تعطي منيستخدو تنبيُ ىعين‪ ،‬أِ ُتظَر مُ رسامة ىعينة بعد‬
‫ّ‬
‫تّفر منا ىن خٕل امّاجَة امبرىجية كذمك ىا ُيسيٓ‬ ‫امقياو بّظيفة ىعينة داخه إضافتك‪ .‬جّجه‬
‫بامتنبيَات أِ ‪ُ Notification‬‬
‫متظَر رسامة ىعينة منيُ ستخدو‪.‬‬

‫في ٍذا امقسً‪ ،‬سنتعنً كيف ُنظَر ٍذا امصندِق امصغير اميتّاضع منيُ ستخدو ىن خٕل اإلضافة‪:‬‬

‫صّرة رقً ‪ 3.7.1‬ىثال عن إظَار تنبيُ أِ إشعار ُ‬


‫منيستخدو‬

‫ّ‬
‫ىعقد في ٍذا اإلشعار أِ امتنبي ُ‪ ،‬سيظَر ٍذا امصندِق امصغير أسفه امشاشة حتٓ مّ‬ ‫ٔ شيء‬
‫كانت نافذة جّجه كرِو ىُ صغرة‪ ،‬مذمك ُتسيٓ بتنبيَات سطح اميكتب! ِكيا نرْ ىن امتنبيُ فإنُ‬
‫يحتّي عنٓ ‪ 3‬عناصر أساسية‪ :‬أيقّنة‪ ،‬عنّان منرسامة‪ِ ،‬ىحتّْ منرسامة‪ٍ .‬ناك امعديد ىن األنّاع‬
‫األخرْ ييكننا امقياو بَا عن طريق امّاجَة امبرىجية امتي تّفرٍا منا جّجه عبر ٍذا اميصدر‪.‬‬

‫حتٓ يتسنٓ منا استخداو اإلشعارات أِ امتنبيَات‪ ،‬يجب أن نحصه عنٓ امصٕحيات امٕزىة في ىنف‬
‫‪:Manifest.json‬‬

‫صّرة رقً ‪ 3.7.2‬تّضح إضافة صٕحية اإلشعارات في ىنف ‪Manifest.json‬‬

‫صفحة | ‪21‬‬ ‫ىدِنة خارج امصندِق‬


‫ٔ نستطيع امّصّل مقسً اإلشعارات أِ امتنبيَات ىن خٕل امّاجَة امبرىجية ِنحن داخه‬
‫‪ ، Content Script‬ييكننا فقط استدعاء اإلشعار أِ امتنبيُ ىن خٕل ‪ Background Script‬أِ أي ىكان آخر‬
‫غير ‪ِ ،Content Script‬إذا أردنا ىن خٕل ‪ Content Script‬يجب عنينا استخداو امتراسه أِ ‪Message‬‬
‫‪ Passing‬بينَيا كيا أشرنا بامسابق‪.‬‬

‫ٍِذا جزء ىن امكّد اميّضّع في ىنف ‪ ٍِّ background.js‬امذي سيتً تنفيذٌ في امخنفية‪،‬‬
‫ِيحتّي عنٓ‪:‬‬

‫إلنشاء إشعار أِ تنبيُ ميظَر بعد ثانيتين ىن تشغيه اميتصفح ىثًٕ‬ ‫صّرة رقً ‪ 3.7.3‬ىن ىنف ‪background.js‬‬

‫قينا بإنشاء كائن ‪ Object‬يحيه ىّاصفات ِىعنّىات اإلشعار‪ ،‬كنّع اإلشعار (امنّع األساسي ٍّ‬
‫‪ٍِ ،Basic‬ناك أنّاع أخرْ ىن ٍذا اميصدر)‪ ،‬عنّان امرسامة‪ ،‬ىحتّْ امرسامة‪ِ ،‬أخيراً ىسار األيقّنة‪.‬‬

‫اآلن ىعنّىات اإلشعار أِ امتنبيُ جاٍزة‪ ،‬يتبقٓ منا فقط إنشاء امتنبيُ ِاستدعائُ عبر‬
‫‪ِ chrome.notifications.create‬تيرير امكائن امذي يحيه بيانات امتنبيُ‪ِ ،‬مكن‪ ،‬أردت ٍ نا إظَار امتنبيُ بعد‬
‫ىرِر جانيتين‪.‬‬

‫اآلن‪ ،‬أنت قادر عنٓ إرسال تنبيَات منيُ ستخدو‪ ،‬مكن ٔ ُتكحر ىنَا‪ ،‬فاميستخدىين يكرٍّن مفت‬
‫اإلنتباٌ أكحر ىن امٕزو! ييكنك اآلن إنشاء إضافة مقراءة إشعارات فيسبّك أِ تّيتر ىحٕ ً ِإظَارٍا‬
‫منيُ ستخدو‪...‬أطربّنا بأفكاركً!‬

‫صفحة | ‪22‬‬ ‫ىدِنة خارج امصندِق‬


‫‪ .4‬نشر ا ُ‬
‫مينحق عنٓ سّق كرِو‬
‫بعد عيه ىتّاصه ِسَر امنيامي في تطّير إضافتك‪ ،‬سيحين امّقت متبدأ بنشر أعيامك عنٓ‬
‫امسّق حتٓ يستطيع امناس ىن حّل امعامً تحيينَا ِأستفادة ىنَا ِاإلعجاب بَا ِجني األرباح‪ ،‬إن‬
‫أىكن !‬

‫‪ 4.1‬ىا ٍّ سّق ىتصفح كرِو ‪Chrome Web Store‬‬

‫ٍّ سّق إمكترِني تً افتتاحُ في شَر ديسيبر ىن عاو ‪ 2101‬ميصبح امسّق امرسيي متحييه‬
‫تطبيقات امّيب ِىنحقات ىتصفح جّجه كرِو بيا يشينُ ىن إضافات أِ جييات أِ حتٓ أمعاب‪.‬‬

‫صّرة رقً ‪ 4.1.1‬ىن سّق كرِو‬

‫يستضيف امسّق اميٕيين ىن اميحنقات اميجانية ِاميدفّعة‪ِ ،‬يّجد ىا ّ‬


‫مذ ِطاب ىن امخدىات امتي‬
‫ييكن أن تجدٍا ىتّفرة كينحق يعيه ب ّجّد اميتصفح كينتجات جّجه ذاتَا‪ ،‬ميّفر سَّمة امّصّل‬
‫منيستخدو مبعض خدىات امشركات‪.‬‬

‫ييكن منيُ ستخدو تحييه ىنحقاتك ىن امسّق‪ ،‬تقيييَا‪ِِ ،‬ضع تعنيقات ىا‪ِ ،‬حديحاً أصبح ييكن ىراسنة‬
‫اميُ ستخدو م يطّر اإلضافة إلخبارٌ عن ىشكنة ىا في اميُ نحق‪.‬‬

‫صفحة | ‪23‬‬ ‫ىدِنة خارج امصندِق‬


‫صّرة رقً ‪ 4.2.2‬مّاحدة ىن اإلضافات اميّجّدة عنٓ امسّق‬

‫‪ 4.2‬امصيغة امنَائية ُ‬
‫منينحقات‬

‫قبه امرفع عنٓ امسّق ِامذي سنتطرق مُ بامتفصيه في امنقطة امتامية‪ ،‬يجب أن تقّو بتجييع‬
‫ىنفات ِىجندا ت اميُ نحق امخاص بك عنٓ شكه ىنف ِاحد ىضغّط ىن نّع ‪ِ ZIP‬ىن جً رفعُ عنٓ‬
‫امسّق‪ .‬مكن‪ٍ ،‬ه ٍذٌ ٍي امصيغة امنَائية مإلضافة؟‬

‫امصيغة امنَائية مإلضافة ٍي ‪ ٍِّ CRX‬ىا يتعرف عنيُ ىتصفح كرِو أن ٍذا عبارة عن ىُ ن حق‬
‫تابع مُ‪ ،‬ييكننا إنشاء ٍذٌ امصيغة امنَائية ِمكن بيجرد رفع امينف اميضغّط امذي بَيئة ‪ ZIP‬عنٓ‬
‫امسّق سيقّو ِبشكه تنقائي تحّينُ امٓ ‪ CRX‬ميكّن ج اٍز منتحييه ىن ق به اميُ ستخدىين دِن أن‬
‫يتدخه اميطّر بعينية امتحّيه تنك‪.‬‬

‫عني أن أعرف ٍذٌ اميعنّىة؟‬ ‫مياذا إذاً‬


‫ّ‬

‫عّدة إمٓ صفحة إضافات اميُ سطبة عنٓ امجَاز‪ِ ،‬سبق ِأن شرحنا كيف نقّو بتركيب إضافتنا‬
‫أجناء امتطّير عنٓ ىتصفح كرِو‪ِ ،‬كان ٍناك طريقتان مذمك‪ :‬إىا بسحب ىجند اإلضافة امذي يحتّي‬
‫عنٓ ىنف ‪ِ Manifest.json‬باقي امينفات إمٓ صفحة اإلضافات‪ ،‬أِ ىن خٕل امضغط عنٓ ‪Load‬‬
‫‪ِ Unpacked Extension‬تحديد ىسار ىجند اإلضافة‪.‬‬

‫صفحة | ‪24‬‬ ‫ىدِنة خارج امصندِق‬


‫مكن ىاذا مّ أردنا إخراج امينحق أِ اإلضافة بامصيغة امنَائية ‪ CRX‬إلعطائَا مصديق أِ معييه ىا‬
‫متجربتَا ىحٕ ً قبه رفعَا منسّق؟ دعنا نذٍب مصفحة اإلضافات اميُ سطبة ِنختار ‪:Pack Extension‬‬

‫صّرة رقً ‪ 4.2.1‬متصدير اإلضافة إمٓ شكنَا امنَائي قبه امرفع إمٓ امسّق‬

‫ٍِذٌ امنافذة امينبحقة تخبرنا أين ٍّ ىسار إضافتنا ام تي نريد تحّينَا منصيغة امنَائية ‪ CRX‬كيا تشير‬
‫ٍذٌ امصّرة‪:‬‬

‫صّرة رقً ‪ 4.2.2‬متصدير اإلضافة إمٓ شكنَا امنَائي قبه امرفع إمٓ امسّق‬

‫كّننا نقّو بَذٌ امعينية ألِل ىرة‪ ٔ ،‬داعي مّضع ىسار ىنف ‪ Private Key‬ألننا ٔ نينكُ بعد‪،‬‬
‫مذمك بيجرد انتَائنا ىن تحديد ىسار إضافتنا ِامضغط عنٓ ‪ Pack Extension‬سنرْ امصيغة امنَائية‬
‫منيُ نحق باإلضافة مينف آخر بجانبُ بصيغة ‪:PEM‬‬

‫صّرة رقً ‪ 4.2.3‬تّضح امينفات ُ‬


‫اميخرجة‬

‫صفحة | ‪25‬‬ ‫ىدِنة خارج امصندِق‬


‫ٍذان امينفان سن جدٍيَا بنفس ىسار ىجند اإلضافة األصني‪ ٍّ Ext.crx ،‬ىنف امذي يحيه‬
‫امصيغة امنَائية مإلضافة‪ِ ،‬ييكن سحبُ ِإفٕتُ ىباشرة في صفحة اإلضافات اميُ سطبة‪ِ ،‬ييكن كذمك‬
‫رفعُ ىباشرة عنٓ استضافتك امخاصة حتٓ يقّو آخرِن بتجربتُ‪ِ ،‬كأنك تحيّ ه اإلضافة ىن امسّق‬
‫ألِل ىرة‪.‬‬

‫ٍذا ىا سيحصه عندىا تقّو بسحب ‪ Ext.crx‬إمٓ صفحة اإلضافات‪:‬‬

‫صّرة رقً ‪ 4.2.4‬عند تركيب إضافة ألِل ىرة بصيغتَا امنَائية ‪CRX‬‬

‫نفس امصندِق امذي سيظَر فّر تحييننا مإلضافة ىن امسّق امرسيي مكرِو‪ُ ،‬يظَر امصندِق‬
‫فّر تحييننا مإلضافة‪ :‬اسً اإلضافة‪ ،‬أيقّنتَا‪ِ ،‬امصٕحيات امتي تحتاجَا اإلضافة منعيه بشكه‬
‫صحيح‪ ،‬ييكن منيستخدو امرفض (ِامذي ينتج بامطبع عدو تحييه اإلضافة) أِ امقبّل بامضغط عنٓ‬
‫‪ Add extension‬م ُت ضاف مقائية اإلضافات اميُ سطبة في صفحة اإلضافات‪.‬‬

‫ىاذا إذاً بخصّص ىنف ‪ PEM‬اآلخر؟‬

‫إذا أردنا أن نقّو بعيه تعديه آخر مإلضافة أِ إضافة اميزيد ىن اميزايا إمٓ ىُ نحقنا‪ِ ،‬ىن جً‬
‫امتحّيه منصيغة امنَائية ‪ CRX‬ىرة أخرْ‪ ،‬فنحن اآلن بحاجة مينف ‪ PEM‬امذي قاو ىتصفح كرِو‬
‫بتّميدٌ منا أجناء قياىنا ألِل ىرة ىن تحّيه ىنفات اإلضافة إمٓ ‪ ، CRX‬فَّ بيحابة امختً امذي ختيُ منا‬
‫ىتصفح كرِو عندىا أنشأ منا ألِل ىرة ىنف ‪ِ ،CRX‬إذا أردت امتعديه ىرة أخرْ عنٓ ىحتّْ اإلضافة‬
‫ِتّميد ‪ CRX‬جديد‪ ،‬أنا بحاجة منختً ألجبت ٍّية ىُ نحقي ِيعطيَا ىا ُيسيٓ بٖ ‪ ID‬أِ اميعرّ ف امفريد‬
‫امخاص باإلضافة‪.‬‬

‫كيا أشرت سابقاً‪ ،‬نحن بام ّاقع ٔ نحتاج إمٓ كه ٍذٌ امعينيات عند رفع اإلضافة إمٓ امسّق‪،‬‬
‫فعند رفع اإلضافة منسّق ألِل ىرة يقّو بشكه تنق ائي بَذٌ امعنيية‪ِ ،‬يحفظ منا امختً مديُ دِن رفعُ‬
‫كه ىرة إمٓ امسّق! مكن أردت اإلشارة إمٓ ٍذٌ امنقطة ِكيفية امقياو بَا في حال ِجدت ىّقع ىن‬
‫ّ‬
‫يّفر اإلضافة خارج سّق ىتصفح كرِو ِتحييه ىنف ينتَي بصيغة ‪.CRX‬‬ ‫اميّاقع‬

‫صفحة | ‪26‬‬ ‫ىدِنة خارج امصندِق‬


‫‪ 4.3‬امرفع عنٓ سّق كرِو أِ عنٓ استضافتك امخاصة‬

‫نَاية شَر فبراير ىن عاو ‪ِ ،2104‬اإلصدار رقً ‪ 33‬ىن ىتصفح كرِو‪ِ ،‬بسبب اميشاكه األىنية‬
‫اميتزايدة امتي تعرض مَا اميُ ستخدىين بسبب اميُ ن حقات امتي كان ٍدفَا امضرر باميُ ستخدىين‪ ،‬فقد‬
‫أجبرت جّجه اميطّرين عنٓ رفع ىنحقاتًَ ِفقط عنٓ سّق كرِو (اميصدر)! ِٔ ييكن منيُ ستخدو‬
‫تحييه أي إضافة ىُ ستضافة خارج سّق كرِو اإلمكترِني‪ِ ،‬إن تً‪ ،‬سيحصه عنٓ تحذير بذمك‪.‬‬

‫ييكنك رفع إضافتك أِ ىنحقاتك عنٓ استضافتك امخاصة في حامتين فقط ‪:‬‬

‫‪ -‬إذا قاو اميُ ستخدو بتفعيه ِضع اميطّرين‪ ٍِّ ،‬األىر امذي قينا نحن بُ سابقاً متجربة اإلضافة‪.‬‬

‫ّ‬
‫يّضح تفاصينُ بامضغط ٍنا‪.‬‬ ‫‪ -‬ىا ُيسيٓ بٖ ‪ ٍِّ Enterprise Policy‬ىا‬

‫ِمكن‪ِ ،‬كيا رأينا في عينية تحّيه اإلضافة منصيغة امنَائية ‪ِ CRX‬أنَا عينية ىُ نَكة بعض‬
‫امشيء‪ ،‬فرفع اإلضافة ىباشرة إمٓ امسّق عنٓ شكه ىنف ىضغّط ‪ِ ZIP‬يقّو امسّق مّحدٌ بتحّيه‬
‫ىنحقاتنا امٓ امصيغة امنَائية دِن تدخه ىن اميطّر‪ ،‬قد زاح امكحير ىن امّقت مصامح اميطّرين‪.‬‬

‫كيا ِمن يقنق اميطّر ىن عينية تطّير امينحقات ِإعٕو اميُ ستخدىين بأن ٍناك نسخة جديدة‬
‫ىن إضافاتًَ ِيجب أن يقّىّا بتحيينَا يدِياً‪ ،‬فيتصفح كرِو سيقّو تنقائياً بتحييه امنسخة‬
‫األحدث ىن ىنحقك أِ إضافتك دِن تدخه ىن اميُ ستخدو بيجرد رفعك مننسخة األحدث إمٓ امسّق‪،‬‬
‫ِبحنّل ‪ 24‬ساعة تكّن امنسخة األحدث في كافة ىتصفحات ىُ ستخدىيك‪.‬‬

‫صفحة | ‪27‬‬ ‫ىدِنة خارج امصندِق‬


‫‪ 4.4‬ىن داخه صفحة اميطّرين‬

‫حتٓ ييكننا نشر إضافتنا اآلن إمٓ امسّق‪ ،‬ينزىنا شراء رخصة ىطّر ِامتي كيا أسنفنا ُتكنف‬
‫ميرة ِاحدة ‪ 5‬دِٔرات فقط‪ ،‬بعد إتياو ٍذٌ امعينية امبسيطة يصبح مديك صفحة خاصة ميراقبة نشاط‬
‫إض افاتك امحامية أِ إضافة ىنحقات جديدة‪ .‬صّرة رقً ‪ 4.4.0‬تشرح منا ىجيه اإلضافات امتي قيت‬
‫بنشرٍا عنٓ امسّق ِحامة كه ِاحدة ىنًَ‪:‬‬

‫ُ‬
‫ِامينحقات‬ ‫صّرة رقً ‪ 4.4.1‬ىن داخه صفحة اميطّرين امخاصة باإلضافات‬

‫ُ‬
‫ِامينحقات‬ ‫صّرة رقً ‪ 4.4.2‬ىن صفحة اميطّرين امخاصة باإلضافات‬

‫صفحة | ‪28‬‬ ‫ىدِنة خارج امصندِق‬


‫شرح مبعض األىّر‪:‬‬

‫‪ -‬إلضافة ىُ نحقنا امجديد نقّو بامضغط عنٓ زر ‪.Add new item‬‬

‫‪ -‬جّجه تسيح منا برفع حتٓ ‪ 21‬ىُ نحق أِ إضافة‪ِ ،‬إذا أردنا اميزيد نرسه طنب آخر مجّجه حتٓ‬
‫قيية قد تسيح مك‬
‫يتسنٓ منا رفع اميزيد‪ ،‬ستقّو جّجه بيراجعة حسابك ِطبيعة إضافتك ِإن كانت ّ‬
‫باميزيد!‬

‫‪ -‬ييك ننا تعديه بعض اميعنّىات امَاىة كإسً اميطّر امذي سيظَر عنٓ صفحة اإلضافة بامسّق‪ِ ،‬كيا‬
‫ّ‬
‫ىّضح اإلسً امذي يظَر ٍّ ‪ِ ،Dev. Mohammad M. AlBanna‬ىن جَة امسّق سيظَر اإلسً عنٓ‬ ‫ٍّ‬
‫ٍذا امشكه‪:‬‬

‫ّ‬
‫كيّفر رسيي مإلضافة‬ ‫ّ‬
‫اميطّر‬ ‫صّرة رقً ‪ 4.4.3‬تّضح عرض اسً‬

‫‪ -‬ييكننا أن نحدد ق ائية ىختبرين إلضافاتنا ِىُ نحقاتنا عبر بريدًٍ اإلمكترِني‪ ،‬متصنًَ دعّة فييا بعد‬
‫متجربة اإلضافة ىن امسّق‪ ،‬ىن امييكن أن يكّن ٍؤٔء بقية أعضاء فريق امتطّير ىحًٕ‪ ،‬ىن خٕل‬
‫تحديد ‪ِ Testers Accounts‬بريدًٍ اإلمكترِني‪.‬‬

‫صفحة | ‪29‬‬ ‫ىدِنة خارج امصندِق‬


‫‪ 4.5‬رفع إضافة‪/‬ىنحق جديد إمٓ امسّق ىن صفحة اميطّرين‬

‫ِبحياس شديد‪ ،‬دعنا نرفع أِل إضافة منا إمٓ امسّق عن طريق امضغط عنٓ زر ‪Add New Item‬‬
‫أِ إضافة عنصر جديد‪ٍِ ،‬ذٌ ٍي امصفحة امخاصة في إضافة أِل إضافة‪ /‬ىنحق منا‪:‬‬

‫صّرة رقً ‪ 4.5.1‬تعرض كيفية رفع أِل إضافة منا عنٓ امسّق‬

‫كيا نشاٍد بامصّرة أعٌٕ‪ ٔ ،‬داعي مرفع اإلضافة بصيغتَا امنَائية امتي أشرنا مَا سابقاً بٖ ‪ ،CRX‬به‬
‫نرفعَا كينف ىضغّط عنٓ ٍيئة ‪ ،ZIP‬نختار ‪ِ Choose File‬نحدد ىّقع امينف اميضغّط امخاص‬
‫باإلضافة ِىن جً امضغط عنٓ ‪:Upload‬‬

‫صّرة رقً ‪ِ 4.502‬إضافة أِمٓ ُىنحقاتنا ِىعنّىاتَا إمٓ سّق كرِو‬

‫صفحة | ‪31‬‬ ‫ىدِنة خارج امصندِق‬


‫إٍٔ ً بكً في أِمٓ إضافات نا ِىنحقاتنا! سنٕحظ في امقسً األِل حّل اسً اإلضافة ِرقً‬
‫امنسخة ِغيرٍا ىن اميعنّىات تً أخذٍا تنقائياً ىن ىنف ‪ Manifest.json‬امذي قينا بإنشائُ كأِل خطّة‪.‬‬

‫ٍذا امقسً غير ىعقد امبتة‪ ،‬قً بكتابة ِصف اإلضافة‪ِ ،‬تحديد األيقّنات ِغيرٍا ىن األىّر امرِتينية!‬

‫سأتطرق من قاط ٍاىة في ٍذٌ امصفحة‪:‬‬

‫صّرة رقً ‪ 4.5.3‬مربط اإلضافة بيّقع إمكترِني ُ‬


‫كيقدو رسيي مإلضافة‬

‫‪ -‬في حال كان إلضافتك أِ ىنحقك ىّقع شخصي‪ِ ،‬تريد ربط اميّقع امشخصي باميُ نحق بحيخ ىن‬
‫يستعرض اإلضافة ىن امسّق ُتظَر مُ أن ٍذا اميُ نحق ىقدو ىن ىّقع كذا ِكذا كيا في صّرة رقً‬
‫‪ ِٔ ، 4.5.4‬يعرض مُ إسً ىطّر اإلضافة ذاتَا‪ ،‬قً فقط بامضغط عنٓ ‪.Add a new site‬‬

‫صّرة رقً ‪ 4.5.4‬تّضح أن ىقدو إضافة ‪ ٍّ Google Photos‬ىّقع ‪photos.google.com‬‬

‫صفحة | ‪31‬‬ ‫ىدِنة خارج امصندِق‬


‫امضغط عنٓ ‪ Add a new site‬سينقنك مخدىة جّجه امتي ُتسيٓ ‪Google Webmasters Tools‬‬
‫ٍِي خدىة ىُ قدىة ىن جّجه تساعد أصحاب اميّاقع ميراقبة ىّاقعًَ ِأرشفتَا في ىحركات امبحخ‪،‬‬
‫ٍِّ ىّضّع آخر تياىاً! مكن باميختصر اميفيد سيطنب جّجه إلجبات ىنكية اميّقع برفع ىنف صغير‬
‫إمٓ ىُ ستضيف اميّقع أِ ِضح عنصر جديد في امصفحة امرئيسية داخه ‪.head‬‬

‫بعد إتياىك مَذٌ امعينية‪ِ ،‬امضغط عنٓ ‪ Refresh List‬ستجد رابط ىّقعك اإلمكترِني أصبح‬
‫ىضاف في امقائية ِييكنك ببساطة اختيارٌ كجَة رسيية ىُ قدىة مإلضافة‪.‬‬

‫ييكن كذمك امقياو بَذٌ امعينية في حال قيت بتطّير إضافة خاصة مشركة ىا‪ ،‬بامطبع إىا‬
‫ستطنب ىنًَ إنشاء حساب ىطّر خاص بًَ‪ ،‬أِ رفع إضافتًَ عنٓ حسابك امشخصي ىع اإلشارة أن‬
‫ىقدو اإلضافة ٍّ ىّقعًَ اإلمكترِني ‪ِ ،‬بامتامي يجب عنيك إضافة ىّقعًَ في قائيتك ميسيح مك‬
‫سّق امكرِو بامتحدث بإسيًَ ِنسب اإلضافة مًَ‪ٍِ .‬ذا يتً ىن خٕل ربط حساب ‪Google‬‬
‫‪ Webmasters Tools‬ىع اميّقع اإلمكترِني م نشركة أِ امجَة اميامكة منيُ نحق‪.‬‬

‫‪ -‬في حال كانت ا إلضافة ىدفّعة ِميست ىجانية‪ٍ ،‬ذا ٍّ امخيار األنسب مذمك‪:‬‬

‫صّرة رقً ‪ 4.5.5‬تحدد ىجانية اإلضافة أِ جعنَا ىدفّع ة مٕستعيال‬

‫بامضغط عنٓ ‪ ، Change Pricing‬ييكنك تحديد تسعيرة ىُ نحقك أِ إضافتك كيا ٍّ ىّضح بامصّرة امتامية‪:‬‬

‫صّرة رقً ‪ 4.5.6‬متحديد ِسائه امدفع (أفتراضي ٍّ ىجانية)‬

‫صفحة | ‪32‬‬ ‫ىدِنة خارج امصندِق‬


‫ىن ٍذٌ امشاشة ييكن تحديد ِسينة امدفع! إىا أن تكّن اإلضافة ىجانية‪ ،‬أِ نستخدو ِسينة‬
‫امدفع امتي تّفرٍا منا جّجه ع بر امسّق‪ ،‬أِ ِسينة دفع أخرْ ٔ تّفرٍا جّجه‪ِ .‬سنتطرق مَذا امقسً‬
‫بشكه ىفصه ٔحقاً في ٍذا امكتاب‪.‬‬

‫‪ -‬في حال كانت اإلضافة تطنب تسجيه دخّل اميُ ستخدىين ىن حساباتًَ عنٓ جّجه‪ ،‬فيجب عنيك‬
‫أن تتأكد ىن تفعيه ٍذا امخيار‪:‬‬

‫اميستخدىين قبه تحييه ُ‬


‫امينحق تسجيه امدخّل محساب جّجه‬ ‫صّرة رقً ‪ 4.5.7‬إلجبار ُ‬

‫ٍذا امخيار سيجبر أي ىُ ستخدو قبه تحييه إضافتك عنٓ اميتصفح‪ ،‬يجبرًٍ عنٓ تسجيه امدخّل‬
‫أِٔ ً عبر حساب جّجه ميتيك نّا ىن تحييه إضافتك‪.‬‬

‫‪ٍ -‬ه سبق مك ِزرت ىّقعاً إمكترِنيا ىا‪ِ ،‬عرض عنيك تحييه إضافة أِ ىُ نحق خاص بَذا اميّقع عبر‬
‫زر ىا؟ امضغط عنٓ ٍذا امزر من ينقنب إمٓ صفحة اإلضافة داخه امسّق‪ ،‬به امضغط عنٓ‬
‫امضغط عنٓ ٍ‬
‫ّ‬
‫متركب اإلضافة ىباشرة عنٓ اميتصفح ِأنت داخه اميّقع حتٓ!‬ ‫سيظَر صندِق تحييه ىباشر‬
‫امزر ُ‬

‫صّرة رقً ‪ 4.5.8‬ىثال متحييه اإلضافات ىن ىّاقعَا امرسيية دِن امتّجُ مصفحة اإلضافة في امسّق‬

‫صفحة | ‪33‬‬ ‫ىدِنة خارج امصندِق‬


‫ُيسيٓ ٍذا امنّع ىن تحييه اإلضافات دِن امذٍاب إمٓ صفحة اإلضافة نفسَا امٓ امسّق بٖ‬
‫‪ ،Inline Install‬أي امتحييه ىن ىّقعك دِن نقه اميُ ستخدو إم ٓ صفحة اإلضافة إمٓ امسّق‪ِ ،‬متفعيه‬
‫ٍذٌ امخطّة أنت بحاجة متفعيه ٍذا امخيار‪:‬‬

‫صّرة رقً ‪ 4.5.9‬متفعيه خيار ‪Inline Install‬‬

‫بتفعيه ٍذا امخيار‪ ،‬أنت ُتشير أن اإلضافة ىن امييكن تحيينَا عبر امضغط عنٓ زر ىا‪ ،‬مكن ٍه ٍذا كه‬
‫شيء؟ أنت تحتاج إلضافة بعض األكّاد امبرىجية ىن جَة ىّقعك امشخصي حتٓ يتعرف اميتصفح‬
‫عنٓ اإلضافة‪ٍِ ،‬ذا اميصدر سيشرح مك بامتفصيه كيف تقّو ذمك باستخداو ِاجَة جّجه امبرىجية‪.‬‬

‫‪ -‬ييكنك كذمك تفعيه ‪ٍِ Google Analytics‬ي خدىة ىن جّجه ىجانية كذمك في إحصاء زِّ ار ىّقعك‬
‫ِىن أين أتّا ِتفاصيه أخرْ‪ ،‬ييكنك كذمك تطبيق نفس األىر عنٓ زِّ ار صفحة إضافتك عنٓ امسّق‬
‫ىن خٕل امٖ ‪ ID‬عندىا تقّو بإنشاء ىتتبع جديد في خدىة ‪:Google Analytics‬‬

‫صّرة رقً ‪ 4.5.11‬إلضافة رقً ىتبع ىن خدىة جّجه ‪Google Analytics‬‬

‫ك ه ىا عنيك امقياو بُ بعد إنشاء اميتتبع امجديد ىن خدىة ‪ِ ٍّ Google Analytics‬ضع امرقً بعد ‪،UA-‬‬
‫ِستحصه عنٓ تقارير زِّ ار إضافتك ىن عنٓ سّق جّجه كرِو‪.‬‬

‫‪ -‬أخيراً ِميس آخراً‪ٍ ،‬ه اإلضافة جاٍزة مٕستعيال ىن ق به كافة اميُ ستخدىين ىن حّل امعامً؟ في آخر‬
‫ّ‬
‫تحدد ذمك‪:‬‬ ‫قسً ييكن أن‬

‫صّرة رقً ‪ 4.5.11‬تّضح خيار ظَّر اإلضافة في امسّق ىن عدىُ‬

‫صفحة | ‪34‬‬ ‫ىدِنة خارج امصندِق‬


‫امخيار األِل ‪ :Public‬امظَّر معيّو امزِّ ار ِاميُ ستخدىين مسّق كرِو‪.‬‬

‫امخيار امثاني ‪ :Unlisted‬فقط مين يينكّن رابط اإلضافة عنٓ امسّق‪.‬‬

‫امخيار امثامث ‪ :Private‬ييكن أن تحدد فئة ىخص صة إلختبار إضافتك ِامتي أشرنا مَا سابقاً في بداية‬
‫امدخّل مصفحة اميطّرين‪ ،‬سيصه فقط دعّة منيُ دخه بريدًٍ اإلمكترِني متجربة اإلضافة ِفقط‪.‬‬

‫‪ -‬كه شيء عنٓ ىا ُيراو اآلن؟ ييكنك أن تفعه امتامي‪:‬‬

‫صّرة رقً ‪ 4.5.12‬تّضح اإلجراء األخير‬

‫ىن امييين إمٓ اميسار‪:‬‬

‫‪ :Publish Changes‬أي امنشر فّراً‪ِ ،‬كيا أشرنا سابقاً بامعادة ٔ تأخذ امعينية أكحر ىن ساعتين كحد‬
‫أقصٓ ىا مً ُتحر اإلضافة امشك متصبح قابنة منتحييه ِامعرض في امسّق‪.‬‬

‫‪ :Preview Changes‬عرض كافة امتعديٕت كيا مّ أن اإلضافة تً قبّمَا ىن طرف جّجه ِتعرض‬
‫بامسّق اآلن‪ ،‬ستراٍا أنت كيا يراٍا اميستخدىّن بعد امنشر عنٓ امسّق‪.‬‬

‫‪ :Save draft and return to dashboard‬أي حفظ امتعديٕت كيسّدة ييكن امرجّع مَا ٔحقاً ِٔ تقً‬
‫بتطبيق امتعديٕت عنٓ اإلضافة في امسّق‪ِ ،‬عّدة إمٓ صفحة اميطّرين‪.‬‬

‫‪ :Discard draft‬أي ٔ تقّو بحفظ امتعديٕت امتي قيت بَا قبه قنيه‪.‬‬

‫ىسببات مرفض إضافتك ُ‬


‫ِىنحقاتك ىن امسّق‬ ‫ّ‬ ‫‪4.6‬‬
‫في ٍذا امقسً‪ ،‬سأضع ُ‬
‫ِأجيه مك ‪ %91‬ىن األسباب مرفض اإلضافات ِاميُ نحقات ىن امسّق‪،‬‬
‫حتٓ بعد قبّمَا! أجه‪ ٔ ،‬تتّتر إن أتاك إشعار إزامة عبر امبريد اإلمكترِني ميخبرك عن إزامة ىنتجك‬
‫امبرىجي أِ تحفتك ا مفنية ىن امسّق ألسباب غير ِاضحة‪ِ ،‬ىن ٍذٌ األسباب‪:‬‬

‫‪ - 2‬امكّد غاىض ِيخفي امكثير‪:‬‬

‫ّ‬
‫ىشفر‪ٍ ،‬ناك ىصطنح آخر يّازيُ ٍِّ ‪ِ Obfuscated‬يعني أن امكّد‬ ‫أن امكّد‬
‫ٔ نتحدث عن ّ‬
‫غاىض‪ِ ،‬يّجد امعديد ىن امخدىات اميجانية امتي تجعه ىن امكّد امخاص بك كّد ىيّ ٌّ أِ صعب‬
‫قراءتُ تحديداً في أكّاد جافاسكريبت‪.‬‬

‫صفحة | ‪35‬‬ ‫ىدِنة خارج امصندِق‬


‫دعّنا في امبداية نرْ امرسامة امتي ىن امييكن أن تتنقاٍا ىن جّجه‪:‬‬

‫صّرة رقً ‪ِ 4.6.1‬إشعار بإزامة إحدْ إضافاتي ىن امسّق‬

‫ٍذا نيّذج ىن رسامة ستصنك عبر امبريد اإلمكترِني يخبرك عن اسً اإلضافة امتي تيت إزامتَا‬
‫ىن امسّق‪ِ ،‬امجزء اميُ شار إميُ باميستطيه األحير ٍّ امجزء امذي ُتزال بسب بُ امعديد ىن اإلضافات‬
‫بامسّق‪ .‬فيا ٍّ امكّد امييّ َّ ٌ أِ امغاىض؟‬

‫ٍّ امكّد امذي يصعب قراءتُ أِ تتبع تعنيياتُ ىن ق به ىطّر آخر‪ ،‬كتغيير أسياء اميتغيرات‪،‬‬
‫ِامدِال‪ِ ،‬بعض امخدىات األخرْ تّفر مك ىيزة تغيير أىاكن امنصّص أِ ترىيزٍا ميصعب تعدينَا‬
‫كذمك‪.‬‬

‫كه ىا سبق ٍّ ضد سياسة جّجه في تطّير إضافات اميتصفح! فجّجه تريد أن ترفع‬
‫اإلضافة بامشكه امذي قيت أنت بتطّيرٌ‪ ،‬حتٓ يتسنٓ مًَ ىراجعتَا يدِياً ىن ق به ىطّرين آخرين‬
‫ميتأكدِا ىن سٕىتَا ِٔ ُتشكه ضرراً عنٓ اميستخدىين‪ .‬فاحذر ىن رفع إضافتك منسّق بكّد ىيّّ ٌ‬
‫ِاجعنُ دائياً ِاضح ِسَه امقراءة‪.‬‬

‫صفحة | ‪36‬‬ ‫ىدِنة خارج امصندِق‬


‫كّد ىضغّط ‪:Minimized‬‬ ‫‪-1‬‬

‫ىبرىجّا امّيب تعّّ دِا بامطبع عيه ضغط ألكّادًٍ امبرىجية متظَر كنَا بسطر ِاحد فقط‪ٔ ،‬‬
‫ِجّد ألسطر فارغة ِٔ حتٓ ِجّد تعنيقات‪ ،‬كيا ٍّ بامصّرة امتامية‪:‬‬

‫صّرة رقً ‪ 4.6.2‬عبارة عن كّد ىضغّط منيكتبة امشَيرة ‪jQuery‬‬

‫ٍذا جزء ىن ىكتبة ‪ jQuery‬أِ ىا ُيسيٓ بٖ ‪ ،Minimized jQuery‬نرْ أن امكّد كنُ بجانب بعضُ‬
‫امبعض ِٔ ىسافات ِغير سَه منقراءة باميطنق! مذمك فّر تحيينك ميكتبة ‪ jQuery‬تتيح مك خياران‪:‬‬
‫إىا تحييه اميكتبة امكاىنة دِن ضغط أِ نسخة ىضغّطة ‪ٍِ Minimized‬ي امنسخة امتي نقّو‬
‫باستخداىَا بامغامب ألنَا تّفر ىساحة منينف ِىنُ ىحافظة عنٓ امٖ ‪ Bandwidth‬امخاص بيّقعنا‬
‫اإلمكترِني‪.‬‬

‫ٍذا أيضاً ىخامف مسياسة جّجه‪ ،‬عنٓ امكّد أن يكّن كيا ٍّ ِاضح ِسَه‪ ،‬حتٓ ىع ِجّد‬
‫ىكاتب ىشَّرة ِىعرِفة كٖ ‪ jQuery‬ىحٕ ً فيجب أن ترفقَا في ىنحقاتك أِ إضافاتك بشكنَا األصني‬
‫ِامكاىه ِميس امشكه اميضغّط‪ِ...‬إٔ ستعرّ ض إضافتك مإلزامة ىن امسّق‪.‬‬

‫ٔ تقنق ىن ناحية حجً اإلضافة في حال فعٕ ً استخدىت فيَا ىكتبات خارجية‪ ،‬سي صبح حجً‬
‫إضافتك بامييجا بايت فعٕ ً مّ استخدىت ىكتبات غير ىضغّطة‪ ،‬مكن ٔ تقنق! فكيا قننا أن امصيغة‬
‫امنَائية مإلضافات ٍّ ‪ٍ ،CRX‬ذٌ امصيغة ستضغط امكّد بامشكه امٕزو حتٓ ٔ ُتشكه حجً اإلضافة‬
‫عائق منيستخدىين اآلخرين‪ ،‬كه شيء ىعيّل مُ حساب عنٓ ىا يبدِ‪.‬‬

‫أتصال ِامتّاصه ىع ‪ API‬أِ ىع ىّقع ىا‪:‬‬ ‫‪-2‬‬

‫قد يبدِ ٍذا أىر غريب نّعاً ىا ِمكن حصه ىعي بامفعه‪ ،‬ىجيه امرسامة امتي ترسنَا منا جّجه‬
‫شيء ىا ىخفي ِغير ِاضح بامكّد"‪ ،‬مّ فعٕ ً كانت إضافتك ِاضحة جداً ِغير ىضغّطة كيا‬
‫ِ‬ ‫ٍّ "‬
‫أسنفنا بامنقطتين امسابقتين ِِصنك إشعار بإزامة إضافتك ىن امسّق‪ ،‬إذاً عنيك امنظر حّل امطنبات‬
‫امتي تقّو بَا إضافتك أِ ىنحقك امخاص ىع امّاجَات امبرىجية ِامخدىات األخرْ‪ .‬يجب أن يكّن ىا‬
‫ُيرسه ِى ا ُيستقبه ِاضح جداً حتٓ يتسنٓ ميراجعي إضافتك ىن جّجه ىعرفة ذمك‪.‬‬

‫صفحة | ‪37‬‬ ‫ىدِنة خارج امصندِق‬


‫أسباب سابقة طرحتَا جّجه في سياسة اميحتّْ‪:‬‬ ‫‪-3‬‬

‫تّض حُ جّجه فعٕ ً في سياسة اميحتّْ‪ ٍِّ ،‬ناتج عن ىحصنة تجارب عاو‬
‫ّ‬ ‫ىا سبق ذكرٌ‪ ،‬مً‬
‫كاىه ىن تطّير اإلضافات ِاميُ نحقات مي ِمعيٕئي‪ .‬مكن جّجه تذكر في سياسة اميحتّْ امخاص‬
‫باإلضافات بأن ٔ تشيه ىحٕ ً اميحتّْ اإلباحي‪ ،‬اميحتّْ امذي ينتَك حقّق ىنكية ىا‪ ،‬أِ ىُ نحقاتك غير‬
‫قانّنية‪ِ .‬غيرٍا امعديد ىن األىّر امتي يجب أن تّافق سياسة جّجه في امنشر كيا ٍّ ىذكّر ىن‬
‫ٍذا اميصدر‪.‬‬

‫مذمك عزيزي اميطّر‪ /‬ة‪ ،‬إذا قّبنت إضافتك منيرة األِمٓ عنٓ امسّق فٕ تفرح كحيراً‪ ،‬قد يتً‬
‫إسقاطَا فييا بعد إذا ُِ جدت أنَا ىحيرة منشك أِ غير ِاضحة كيا أسنفنا بامسابق‪ ،‬فٖ بنينة ِضحاٍا تً‬
‫إسقاط آٔف اميُ نحقا ت ىن امسّق ِبعضًَ مً يتً إشعار ىطّريًَ حتٓ! اميّو جّجه أصبحت أكحر‬
‫صراىة في قبّمَا منيُ نحقات ميستضيفَا امسّق امخاص بًَ ِيحق اميستخدىين بيا ُيقدىُ امسّق مًَ‪.‬‬

‫ّ‬
‫تّضح فيَا أسباب إزامة اإلضافة‪ ،‬مّ مديك استفسار ييكنك امرد‬ ‫األصه‪ ،‬جّجه ترسه رسامة‬
‫عنٓ امرسامة ذاتَا ِستحصه عنٓ رد قد يكّن ىتأخر ( ىن يّىين إمٓ جٕجة أياو) بامغامب‪ِ ،‬ييكن أن‬
‫تطرح ىشكنتك في ىجيّعات جّجه منيساعدة‪.‬‬

‫كيف أعرف حامة إضافتي إذا تً إسقاطَا أو ٔ؟‬

‫سيصنك إشعار بذمك بامتأكيد‪ ،‬مكن عند دخّمك مصفحة اميطّرين‪ ،‬ستجد ح امة كه إضافة خاصة بك‪:‬‬

‫صّرة رقً ‪ 4.6.3‬تّضح حامة اإلضافات ىن صفحة اميطّرين‬

‫صفحة | ‪38‬‬ ‫ىدِنة خارج امصندِق‬


‫كيف أتّاصه ىع جّجه حّل ىشكنة ىا في ىُ نحقاتي؟‬

‫كيا أشرت سابقاً‪ ،‬ييكنك امرد عنٓ رسامة إشعار اإلزامة امذي ِصنك بامبريد اإلمكترِني‪ ،‬مكن ىع‬
‫تزايد شكاِي اميطّرين حّل امدعً امفني امسيء في فترة ىن امفترات‪ ،‬فقد قاىت جّجه بتّفير‬
‫صفحة خاصة منيطّرين بإرسال ىشكٕتًَ امتي يّا جٍَّا حّل ىُ نحقاتًَ‪ ،‬شكه امنيّذج‪:‬‬

‫صّرة رقً ‪ 4.6.4‬تّضح نيّذج أتصال ىع فريق امدعً امفني مسّق كرِو‬

‫ِحدد امٖ ‪ ID‬أِ ىا ُيسيٓ‬


‫ّ‬ ‫أرسه ِصف اميشكنة امتي تّاجَك (كأن تً إزامتَا دِن إشعارك ىحٕ ً)‬
‫باميعرّ ف امفريدامخا ص باميُ نحق أِ اإلضافة امخاصة بك‪.‬‬

‫صفحة | ‪39‬‬ ‫ىدِنة خارج امصندِق‬


‫ييكن امحصّل عنٓ اميعرّ ف امفريد بعدة طرق‪ ،‬فَذا ٍّ ىعرّ ف امٖ ‪ ID‬امخاص بأي إضافة‪:‬‬

‫ّ‬
‫اميعرف ىن خٕل امرابط امخاص باإلضافة عنٓ امسّق‬ ‫صّرة رقً ‪ 4.6.5‬تّضح امحصّل عنٓ‬

‫ييكن كذمك امحصّل عنٓ ‪ ID‬ىن مّحة امتحكً امخاصة باميطّرين‪ ،‬عبر امضغط عنٓ عرض اميزيد ىن‬
‫اميعنّىات حّل أي إضافة ىن اإلضافات اميعرِضة أىاىك‪:‬‬

‫ّ‬
‫اميعرف ألي إضافة ىن صفحة اميطّرين‬ ‫صّرة رقً ‪ 4.6.6‬تضّح آمية امحصّل عنٓ‬

‫صفحة | ‪41‬‬ ‫ىدِنة خارج امصندِق‬


‫أي ىن اإلضافات‬
‫ٍِّ ىا ستضعُ في خانة اميعرّ ف اميطنّبة في امنيّذج امذي سترسن ُ مجّجه ميعرفة ٍ‬
‫أِ امينحقات امتي ِاجَتك فيَا اميشكنة‪:‬‬

‫ّ‬
‫اميعرف امفريد إلضافتك في نيّذج امتّاصه ىع امدعً امفني امخاص بسّق بكرِو‬ ‫ّ‬
‫تّضح أين تضح‬ ‫صّرة رقً ‪4.6.7‬‬

‫أخيراً ِميس آخراً‪ ،‬ييكن ِضع صّرة منرسامة امتي ِصنتك ىن امدعً امفني ىحًٕ‪ ،‬أِ إرسال‬
‫امصيغة امنَائية مإلضافة ‪ CRX‬بامطريقة امتي تطرقنا مَا سابقاً‪ .‬بعد ذمك امضغط عنٓ ‪ Submit‬إلرسال‬
‫رداً إيجابياً دائياً‪.‬‬
‫امنيّذج ِانتظر امرد‪ِ...‬تينياتي بأن يكّن ّ‬

‫صفحة | ‪41‬‬ ‫ىدِنة خارج امصندِق‬


‫‪ .5‬امكسب اميادي ىن اإلضافات‬

‫يقدىّن ىنحقاتًَ بشكه ىجاني تياىاً‪ِ ،‬يعتيدِن عنٓ امكسب‬


‫ّ‬ ‫أغنب اميطّرين ِامشركات‬
‫اميادي ىن اإلضافات عن طريق ربطَا بخدىات ىدفّعة أخرْ تقدىَا امشركات أِ يقدىَا اميطّرِن‪.‬‬

‫مكن‪ِ ،‬كيا تجري امعادة في أي سّق إمكترِني يسيح مك بعرض ىنتجاتك إىا بشكه ىجاني أِ‬
‫ىدفّع‪ ،‬سنتطرق في امقسً األخير ىن ٍذا امكتاب اإلمكترِني حّل األساميب امقانّنية ِاميتاحة منربح‬
‫ىن إضافاتك ِىُ نحقاتك‪.‬‬

‫تّفر جّجه ‪ 4‬خيارات منحصّل عنٓ امعائد اميادي ىن اإلضافات ىُ نخصة في ٍذٌ امصّرة‪:‬‬

‫ُ‬
‫ِامينحقات‬ ‫صّرة رقً ‪ 5.1‬تّضح امخيارات اميتاحة منكسب اميادي ىن اإلضافات‬

‫ِىقيدة‪ِ ،‬عنٓ اميُ ستخدو‬


‫ّ‬ ‫‪ِ :Freemium -‬تعني تّفير نسخة تجريبية مبعض امّقت بخصائص ىحددة‬
‫أن يشتري امنسخة بعد ىرِر امّقت‪ِ .‬ىن امييكن كذمك تّفير نسخة ىجانية كنياً‪ ،‬مكن تسيح‬
‫منيُ ستخدو بشراء ىزايا داخنية جديدة منّصّل منّظائف امجديدة داخه اإلضافة‪.‬‬

‫‪ِ :One-time Payment -‬تعني امدفع ميرة ِاحدة‪ ،‬يشتري اميُ ستخدو اإلضافة امخاصة بك ِفقط‪.‬‬

‫‪ :Subscription -‬اإلشتراك باإلضافة‪ ،‬إىا اشتراك شَري أِ سنّي‪.‬‬

‫‪ :Custom -‬تحديد نظاو خاص بك بعيداً عن ِاجَة جّجه امبرىجية أِ امتعاىه ىع سّق جّجه‪،‬‬
‫كإنشاء ىتجرك اإلمكترِني‪.‬‬

‫صفحة | ‪42‬‬ ‫ىدِنة خارج امصندِق‬


‫تحدجنا سابقاً حّل تحديد ىا إذا كانت اإل ضافة ىجانية أِ ىدفّعة أجناء رفع إضافتنا أِ ىُ نحقنا إمٓ‬
‫امسّق‪:‬‬

‫بامضغط عنٓ زر ‪ Change Pricing‬نبدأ بت حدي د اآلمية بشكه ىخصص‪ ٍِّ ،‬ىا أشرنا إميُ في ٍذٌ امصّرة‪:‬‬

‫صفحة | ‪43‬‬ ‫ىدِنة خارج امصندِق‬


‫‪ 5.1‬شراء ُ‬
‫امينحق ميرة ِاحدة‪ ،‬أِ أشتراك امشَري‪/‬امسنّي‬

‫جّجه ِىن خٕل امّاجَة امبرىجية كذمك تساعدنا في بناء إضافات أِ ىُ نحقات ِعيه نظاو‬
‫شراء أِ حتٓ اشتراك شَري أِ سنّي منيُ نحق‪ ،‬ىن خٕل تحديد ِسينة امدفع امتي يّفرٍا ‪Chrome‬‬
‫ّ‬
‫ىّضح في امصّرة امتامية‪:‬‬ ‫‪ Web Store‬كيا ٍّ‬

‫صّرة رقً ‪ 5.1.1‬متحديد نظاو أشتراك باإلضافة أِ ُ‬


‫امينحق‬

‫مذمك‪ ٔ ،‬عنيك أن تقنق ك حيراً ىن ٍذٌ األىّر اميامية‪ ِٔ ،‬داعي متّفير استضافة خاصة مذمك‪،‬‬
‫مكن بامطبع ٍناك عدة قيّد ِىن أٍيَا امدِل اميسيّح بَا مبيع اميُ نحقات‪.‬‬

‫صفحة | ‪44‬‬ ‫ىدِنة خارج امصندِق‬


‫ٍذٌ ٍي امقائية امتي تسيح بَا جّجه ٔستخداو نظاو امدفع اإلمكترِني امتي تقدىُ‪:‬‬

‫صّرة رقً ‪ 5.1.2‬تحدد امدِل اميدعّىة امتي تستطيع بيع ُىنحقاتك ِامدِل امتي تستطيع شراء ُ‬
‫امينحقات‬

‫يّضح ٍذا اميصدر امدِل اميدعّىة ٔستخداو ِاجَة برىجية جّجه في امبيع ِامشراء ىن‬
‫امسّق‪ ،‬حتٓ تستطيع بيع ىُ نحقاتك يجب أن تكّن ضين امدِل اميّجّدة داخه اميُ ستطيه األحير‪ ،‬أىا‬
‫امدِل امتي تستطيع امشراء فَي امدِل اميّجّدة داخه اميُ ستطيه األحير باإلضافة مإلىارات امعربية‬
‫اميتحدة‪ ،‬اميينكة امعربية امسعّدية‪ ،‬اميغرب‪ ،‬ىصر‪ِ ،‬أِكرانيا‪ِ...‬سيتً دعً بعض امدِل األخرْ قريباً‪.‬‬

‫نستطيع أن نستنتج بأن امعامً امعربي ٔ يس تطيع استخداو ِسائه امبيع امذي يّفرٌ سّق كرِو‪،‬‬
‫مكن يستطيع امعديد ىن اميُ ستخدىين ىن بعض امدِل امعربية امشراء ىن داخه امسّق‪.‬‬

‫إذا كنت تسكن بإحدْ امدِل اميُ تاحة مبيع اميُ نحقات‪ ،‬إذاً إٍٔ ً بك ىع ِاجَة كرِو امبرىجية‬
‫ِامتعاىه ىع امدفعات ِتأكيد أشتراكات ِىا إمٓ آخرٌ‪ِ ،‬يجدر اإلشارة أن جّجه ستقتطع ‪ %5‬ىيا‬
‫تبيعُ ىن ىُ نحقات كّنَا ِفرّ ت مك امبيئة اميناسبة ِامّاجَة امبرىجية اميناسبة منتعاىه ىع نظاو امدفع‬
‫امخاص بًَ‪.‬‬

‫صفحة | ‪45‬‬ ‫ىدِنة خارج امصندِق‬


‫في حال كنت تسكن خارج امدِل اميسيّ ح بَا منتعاىه ىع ِسائه امبيع امتي يّفرٍا سّق‬
‫كرِو‪ ،‬بإىكانك إذاً امتّجُ منخيار األخير ببناء نظاىك امخاص في بيع ىُ نحقاتك‪:‬‬

‫صّرة رقً ‪ 5.1.3‬تّضح اختيار نظاو دفع ِشراء خاص بك‬

‫أنت مست ىُ قيداً يا صديقي باستخداو نظاو امبيع ِأشتراك امذي تقدىُ جّجه مك‪ ،‬مكن بامطب ع‬
‫سيسَه عنيك امكحير ِامكحير‪ .‬مّ كنت تينك ىتجرك اإلمكترِني امخاص بك مبيع ىُ نحقاتك‪ ،‬بامطبع‬
‫ّ‬
‫جّجه تسيح بذمك! مكن عنيك بناء ِاجَتك امبرىجية منتأكد ىن عينيات امشراء‪ ،‬أشتراك امشَري أِ‬
‫امسنّي‪ ٍِّ ،‬ىكنف ِقتاً ِجَداً مك‪.‬‬

‫ىحًٕ‪ ،‬أحد امعيٕء قاو ببناء ىتجرٌ اإلمكتر ِني مبيع ىُ نحقاتُ‪ِ ،‬كانت ِسينة امدفع اميتاحة ىن‬
‫اميُ ستخدىين ٍّ بي بال‪ .‬يّجد امعديد ىن ُنظً إدارة اميحتّْ كِّردبريس ِامعديد ىن اميُ نحقات‬
‫متحّيه ىّقعك اإلمكترِني ميتجر إمكترِني ِميس ىجرد ىحتّْ! امبدائه ىّجّدة ِعديدة‪.‬‬

‫صفحة | ‪46‬‬ ‫ىدِنة خارج امصندِق‬


‫‪ 5.2‬امبيع ىن داخه اإلضافة ‪In-App Payments‬‬

‫ىن امييكن امقياو بعينيات بيع داخه اإلضافة أِ اميُ نحق ٍِّ ىا ُيسيٓ ‪ٍِّ ،In-App Payments‬‬
‫ىصطنح نسيع بُ كحيراً في تطبيقات امَّاتف امذكية ِاألجَزة امنّحية‪ ،‬حيخ يّفر ٍذا امتطبيق عنٓ‬
‫ّ‬
‫ِىعدات منشخصية امتي‬ ‫سبيه اميحال شراء أدِات ِأنت داخه امتطبيق‪ ،‬أِ معبة ىا ِتريد شراء أسنحة‬
‫تنعب بَا‪.‬‬

‫جّجه تّفر ذمك أيضاً ىن خٕل ِاجَتَا امبرىجية‪ٍِ ،‬نا كافة امتفاصيه امبرىجية منقياو بذمك‪.‬‬

‫بامطبع ٍذا يشيه امقيّد امتي تحدجنا فيَا بخصّص قيّد امدِل اميتاحة ٔستخداو امبيع ِامشراء‬
‫ِىنصة جّجه مذمك‪.‬‬

‫كيف ييكن تطبيق ىبيعات ىن داخه اإلضافة ‪:In-App Purchases‬‬

‫‪ -‬أجناء دخّمك مصفحة اإلضافة ىن صفحة اميطّرين‪ ،‬اذٍب امٓ خيار ‪:In-app Products‬‬

‫صّرة رقً ‪ 5.2.1‬معرض بعض امينتجات منبيع ىن داخه إضافتك‬

‫‪ -‬قً بامضغط عنٓ ‪ِ Add new product‬ييكن إضافة أكحر ىن ىنتج مبيعُ ِأنت داخه اإلضافة ذاتَا‪.‬‬

‫صفحة | ‪47‬‬ ‫ىدِنة خارج امصندِق‬


‫‪ -‬قً بإعطاء تفاصيه امينتج امتي تّد بيعُ داخه اإلضافة بَذٌ امتفاصيه‪:‬‬

‫صّرة رقً ‪ 5.2.2‬إلدخال بيانات امينتج امذي نّد بيعُ داخه اإلضافة‬

‫ِييكن تحديد كذمك أن ٍذا امينتج ُيدفع ميرة ِاحدة أِ بنظاو أشتراك (امشَري أِ امسنّي)‪.‬‬

‫عند زيارة اميُ ستخدو مصفحة إضافتك عنٓ سّق كرِو‪ ،‬يستطيع أن يٕحظ عبارة‬

‫" ‪ " Offers in-app purchases‬كيا ٍّ ىُ شار بامصّرة امتامية‪:‬‬

‫صّرة رقً ‪ 5.2.3‬تّضح ُ‬


‫منيستخدو بأن ٍذٌ اإلضافة تّفر ىنتجات داخه اإلضافة ييكن شراؤٍا‬

‫صفحة | ‪48‬‬ ‫ىدِنة خارج امصندِق‬


‫‪ 5.3‬اإلعٕنات ِإعٕنات ‪Google AdSense‬‬

‫كيا تجري امعادة‪ُ ٔ ،‬ي حب اميُ ستخدىين امدفع مقاء اميُ نحقات أِ حتٓ تطبيقات امَّاتف امذكية‬
‫في امعديد ىن األحيان‪ ،‬مذمك ينج ٓء اميطّرِن ٔستخداو ِسائه أخرْ منربح ىقابه جَدًٍ في‬
‫تطّير خدىات معيّو اميُ ستخدىين‪.‬‬

‫ينج ٓء امعديد متطبيق نظاو إعٕنات ِقد يتجُ امعديد ىن اميطّرين ٔستخداو خدىة جّجه‬
‫مإلعٕنات ‪ Google AdSense‬في ىّاقعًَ اإلمكترِنية‪ ،‬مكن‪ٍ ...‬ه يصنح ذمك في ىُ نحقات جّجه؟‬

‫قد ٔ يرِق ذمك مك عزيزي اميطّّ ر‪ِ ،‬أعتذر منفسي ِمك أيضاً بأن ٍذٌ امّسينة غير ىُ تاحة‬
‫باميُ طنق ِقد تعرّ ضك محظر حسابك مّ حاِمت اإلمتفاف حّل اميّضّع!‬

‫فطبقاً مسياسة أستخداو امخاصة في تطّير إضافات اميُ تصفح ِكذمك سياسة أستخداو في‬
‫خدىة ‪ Google AdSense‬فٕ ييكننا استخداىَا في ىُ نحقاتنا‪ ،‬به ِامّاجَة امبرىجية امخاصة بيتصفح‬
‫كرِو ٔ تدعً ذمك! ٍّ ميس ىجرد نفس امكّد امذي نقّو بّضعُ في ىّاقعنا اإلمكترِنية ييكن ِضعُ‬
‫كذمك في ىُ نحقاتنا!‬

‫صّرة رقً ‪ 5.4.1‬تّضح عدو إىكانية استخداو خدىة إعٕنات جّجه في إضافات ىتصفح كرِو‬

‫مكن بامطبع‪ٍ ،‬ناك امعديد ىن امخدىات األخرْ أِ ىا ُتسيٓ بأطراف جامحة تّفر ِاجَة برى جية‬
‫أي‬
‫مدي ىصادر ىّجّقة حّل األىر كّني مً أتعاىه ىع ٍ‬
‫ّ‬ ‫أخرْ معرض إعٕناتًَ داخه ىُ نحقاتك‪ ٔ .‬يّجد‬
‫ىن ٍذٌ امخدىات‪ ،‬فتجربتَا يقع عنٓ عاتقك أنت‪.‬‬

‫‪ِ 5.3‬سائه أخرْ منربح؟‬

‫حسناً‪ ،‬يّجد امعديد ىن أساميب امربح األخرْ‪ ،‬كبيع ىنكية إضافتك مشركة ىا ٍِّ ىا تسيح بُ‬
‫جّجه‪ ،‬أ ِ امبدء بتطّير إضافات أخرْ معيٕئك بيقابه ىادي‪ ،‬أِ اإلشراف عنٓ تطّير ىُ نحقات أخرْ‪.‬‬

‫ىن امييكن كذمك عيه نظاو إعٕنات خاص بك يسيح ميّاقع أخرْ بنشر رِابط أِ ىّاضيع‬
‫داخه إضافتك امتي قيت بتطّيرٍا‪ ،‬ىع األخذ بعين أعتبار كافة امشرِط ِاميعايير امتي ّ‬
‫قدىتَا‬
‫جّجه مك في سياسة أستخداو‪.‬‬

‫صفحة | ‪49‬‬ ‫ىدِنة خارج امصندِق‬


‫امخاتية‬
‫ٍناك امعديد ىن اميطّرين يجنّن آٔف امدِٔرات فقط في تطّير إضافات اميتصفح ِتحديداً‬

‫ىتصفح كرِو ميا يقدىُ ىن سَّمة في امتّجيق ِسَّمة في امتعاىه ىع ام ّاجَة امبرىجية ميتصفح‬
‫كرِو ِامتطّير امدائً عنيَا ‪ٍِ ،‬ناك ىن يبدع في ربط امخدىات بين إضافات ىتصفح كرِو ىع امَّاتف‬
‫امذكية ٍِّ أىر ىيكن ِميس بيستحيه‪ ،‬فنحن نتحدث عن تقنيات ِيب ِييكن استخداىَا داخه‬
‫ىُ نحقاتنا‪.‬‬

‫امعني امقدير أن أكّن قد ُِ فقت في ٍذا امكتا ب اإلمكترِني بإصدارٌ األِل‪ِ ،‬سأسعٓ‬
‫ّ‬ ‫أسأل هللا‬
‫متطّيرٌ إن ّ‬
‫جد أي جديد ميحتّي ىا تّفرّ ٌ جّجه في إطار تطّير ىُ نحقات ِإضافات ىتصفح كرِو‪،‬‬
‫ِمّامدي ِسائر اميُ سنيين ىن بقاع األرض‪.‬‬
‫ّ‬ ‫ِٔ تنسّني ىن صامح دعاكً مي‬

‫صفحة | ‪51‬‬ ‫ىدِنة خارج امصندِق‬

You might also like