-
المساهمات
1070 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
15
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو Mohamd Imran
-
من أي تقوم بوضع السعر للسلعة ؟هل من api أم من مصدر محلي داخل التطبيق ؟
- 11 اجابة
-
- 1
-
للأسف لم أعثر على شرح خاص بذلك ,لكن سهل يمكنك عمل api في السيرفر (مثلما قمت سابقاً) خاص بإرجاع العملة بناء على الطلب مثال <?php //getting the database connection require_once 'DbConnect.php'; //an array to display response $response = array(); if(isset($_GET['id'])){ $id = intval($_GET['id']); $result = mysqli_query("SELECT id, currency FROM table WHERE id=$id"); $row = mysqli_fetch_assoc($result); $response = $row['id']." ".$row['currency']; } //displaying the response in json structure echo json_encode($response); فليكن إسم الملف cur.php نقوم بإرسال المتغير id وال api سيرجع لنا العملة الخاص بذلك ال id http://example.com/cur.php?id=1 وإستخدم تلك العملة في السلعة
- 11 اجابة
-
- 2
-
مرحباً @Ahmed Yasser5 إن كان تطبيقك لا يحوي على مستخدمين أو بيانات لحفظها في قاعدة البيانات أتوقع لن تحتاج إلى قاعدة بيانات بل تحتاج إلى عمل برمجة تنزيل المقالات في التطبيق ,وإن إحتجت إلى قاعدة بيانات في التطبيق يمكنك إستخدام sqlite كقاعدة بيانات
- 2 اجابة
-
- 1
-
مرحباً @مروان مروان3 يمكنك عمل ذلك من جهة السيرفر أو من جهة التطبيق ,من جهة التطبيق لعرض العملة المناسبة لدولة المستخدم يمكنك عمل مصفوفة تحوي رمز الدولة التي تريد ومقابل كل دولة تضع العملة ,وعند إدراج سلعة من قبل المستخدم قبل إدراج السلعة نقوم بالتحقق من دولة المستخدم مثلاً إن كانت السعودية نعرض sar ,وبالنسبة لتحويل العملة نفس الطريقة لكن نقوم بعملية حسابية العملة الرئيسية ستكون الدولار ,وعند عرض مستخدم من السعودية لتلك السلعة يتم ضرب سعر السلعة(دولار) بسعر صرف الريال السعودي رح يطلع إلنا السعر بالريال السعودي ونضع ذلك السعر للسلعة ,يمكنك عمل ذلك من جهة السيرفر أو التطبيق ,يمكنك عمل api وعمل جدول في قاعدة البيانات يحوي الدول الخاصة بكل مستخدم وال api يأخذ مثلا id المستخدم ودولته من التطبيق ويقوم بإرجاع العملة بناء على ذلك من هذه سيسهل عليك في حالة تطور التطبيق ويمكنك إستخدام العملة المرجعة لذلك المستخدم
- 11 اجابة
-
- 1
-
وعليكم السلام أخي @مروان مروان3 إن كنت تريد تعريب التطبيق أي تحويل اللغة إلى الإنجليزية وبناء التطبيق ,يمكنك ذلك من خلال وضع جميع النصوص التي تستخدمها في تطبيقك إلى ملف strings.xml ومن ثم إستدعاءها في تطبيقك , وأي ترجمة تريدها فقط قم بتعريب النصوص في الملف للغة التي تريد
- 4 اجابة
-
- 1
-
وعليكم السلام أخي @مروان مروان3 دعنا نقسم ال api إلى قسم وحماية التطبيق بشكل عام إلى قسم أخر ,لحماية التطبيق مثلاً من التفكيك أو سرقة السورس كود لا يمكن الحماية ١٠٠٪ لكن بنسبة ٩٥٪ الطريقة التالية فعالة هي بإستخدام ProGuard وسيقوم بتشفير تطبيقك بالكامل وأيضاً تسريعه لتفعيل ذلك في تطبيقك إذهب إلى ملف build.gradle الخاص بتطبيقك ثم إبحث عن minifyEnabled وقم بتغيير القيمة إلى true وأيضاً إبحث عن shrinkResources وقم بتغيير القيمة إلى true وتحت shrinkResources أضف التالي proguardFiles getDefaultProguardFile('proguard-android.txt') ثم أعد بناء التطبيق ,هكذا إنتهينا من هذا القسم ,الأن بخصوص قسم حماية ال api يوجد عدة طرق وعدة مكتبات لحماية الطلبات مثل JWT سأذكر طريقة سهل عملها وشرحها هنا ,وهي إرسالة توكن مع ال request يوجد عدة طرق لكن هذه إحداها ,في الأندرويد نقوم بالحصوص على id الهاتف هكذا String UniqueID=Secure.getString(getActivity().getContentResolver(),Secure.ANDROID_ID); بعد ذلك نقوم بإرسال ذلك مع ال api هكذا http://example.com/api/get_info.php?par=request&id=UniqueID بعد ذلك في جهة السيرفر نقوم بالتأكد من أن الطلب قادم من جهاز موبايل من خلال التأكد من ال id مثال if($_REQUEST['UniqueID']=="" || strlen($_REQUEST['UniqueID'])<9){ //هنا الid خاطئ قم بعمل شيء مثل إلغاء الطلب الخ.. }else{ //هنا ال id صالح قم بتمرير الطلب }
-
مرحباً أخي @مروان مروان3 بصراحة لم أفهم المشكلة كاملة بالضبط ,لكن يمكنك فقط بدل حفظ النص أن تقوم بحفظ الرقم من خلال sharedPreferences هكذا edit.putInt('key',1); ولإستدعاء ذلك الرقم نقوم بالتالي share.getInt('key',0); ولإسناد النص المقابل لذلك الرقم ,أنصحك بعمل switch يقوم بالتأكد من الرقم أو ال position الخاص ب materialBetterSpinner adapterوإسناد النص بناء على الرقم ,مثال switch(share.getInt('key',0)){ case 1: materialBetterSpinner.setText("Baby"); break; case 2: materialBetterSpinner.setText("Woman"); break; default: materialBetterSpinner.setText("Choose Something"); }
- 2 اجابة
-
- 1
-
اه ,جربه على جهاز عادي وليس محاكي ,لدي يعمل على جهاز عادي
-
هل قمت بتشغيله على جهاز أندرويد ؟, يجب أن يتم تشغيله على جهاز أندرويد وليس المتصفح
- 29 اجابة
-
- 1
-
مرحباً @خالد نبيل لا أعلم ما هو إصدار الأوفيس الحديث الذي إستخدمته ,وما هي خطوات الربط التي قمت بها لأنها تختلف عن الإصدار القديم حتى أعطيك سبب عدم العمل ,على كل حال لربط الكريستال مع الإكسس نسخة ٢٠١٦ يمكنك إتباع الخطوات الموجودة هنا ربما ستساعدك على حل المشكلة
-
وعليكم السلام أخي @صالح السوفي إن كنت تٌجيد النقاط المذكورة في سؤالك أتوقع أنه يمكنك البدء في برمجة نظام المبيعات بدون مشاكل
- 2 اجابة
-
- 1
-
لا يوجد مشكلة فقط قم بإضافة التالي إلى الحدث deviceready في ملف index.js document.querySelector('#loadmypdf').document.location.href='assets/foo.pdf'; أو document.addEventListener("deviceready", loadPDF1, false); مع الفنكشن هذه أسفله function loadPDF1() { console.log('loadmypdf'); document.location.href='assets/foo.pdf'; }
-
السلام عليكم أخي @عبده الغاوي يوجد العديد من المصادر لتعلم جافا لبرمجة تطبيقات الأندرويد يوجد هنا قناة تعلم ذلك من الصفر يمكنك الإطلاع عليها من هنا (إضغط)
-
تمام يمكنك فقط وضع الوسم التالي في صفحة ال html ومن ثم قم بوضع الملف الخاص بك في مجلد assets ,وقم بتغيير foo.pdf إلى إسم الملف الخاص بك <a href="assets/foo.pdf">my pdf </a> وأضف زر لتحميل الملف عند الضغط <button id="loadmypdf">document.location.href</button> وفي ملف index.js إستخدم الفنكشن التالية لتحميله function init() { document.querySelector('#loadmypdf').addEventListener('touchend', loadPDF1,false); } function loadPDF1() { console.log('loadmypdf'); document.location.href='assets/foo.pdf'; } مع تغيير document.location.href='assets/foo.pdf'; إلى إسم الملف الخاص بك
-
أهلا بك @محمود الكيال الوصول إلى الملفات أين ؟ أقصد في أي لغة ؟ , بشكل عام صحيحة لكن يرجى ذكر هل تطبيق ؟
- 5 اجابة
-
- 1
-
تقريباً نسيت إرجاع المتغير mToken إلى قبل أي هكذا أي هكذا private PhoneAuthProvider.ForceResendingToken mToken;
- 27 اجابة
-
- 1
-
اعتذر قم بإضافة متغير من نوع String بإسم mText وأعد إرجاع المتغير mToken إلى اوبجيك PhoneAuthProvider.ForceResendingToken وقم بإسناد editText.getText().toString() إليه ثم إستخدمه في الميثود في ال onClicklistener الخاص بال edittext mText = editText.getText().toString(); resendVerificationCode(mText,mToken);
- 27 اجابة
-
- 1
-
العفو ,هو بصيغة pdf لكن القائم على الكتاب جعله غير قابل للتنزيل ,فقط يمكنك قراءته أون لاين من الرابط المرفق سابقاً
-
هنا قم بتعديل المتغير إلى نوع String private String mToken; وإستدل TaskExecutors.MAIN_THREAD بthis الميثود التالية private void sendVerificationCode(String number) { progressBar.setVisibility(View.VISIBLE); PhoneAuthProvider.getInstance().verifyPhoneNumber( number, 10, TimeUnit.SECONDS, this, mCallBack ); } وبالنسبة للخطأ هذا فهو ببساطة لأنه يحتاج إلى تسجل الدخول أولاً قبل الحصول على التوكن ,لذلك يجب أن تقوم بإستخدام تسجيل الدخول مع جوجل ثم الحصول على المستخدم وإستخدامه في الميثود signInWithCredential تفضل متوفر هنا الكود الرسمي من جوجل لهذه العملية هنا ,بعد تطبيق ذلك المفترض أن يعمل بدون مشاكل وبالنسبة لإعادة تشغيل الجهاز فهو لأن الجلسة تنتهي عند إغلاق التطبيق لكن بعد تطبيق المذكور ستحل المشكلة إن شاء الله
- 27 اجابة
-
- 1
-
السلام عليكم @Sami Remili تفضل الخوارزميّة بواسطة لغة بايثون
-
مرحباً @Hamza Soliman الدورة تبدأ عند التسجيل لكن إن واجهت مشكلة في ذلك ,يرجى التواصل مع الدعم وهم سيفيدونك بالتفاصيل الخاصة بذلك الدعم الفني
-
أهلا بك @مروان مروان3 يمكنك عمل ذلك من خلال عمل متغير فليكن بإسم mToken ثم عدل الميثود التالية إلى @Override public void onCodeSent(String s, PhoneAuthProvider.ForceResendingToken forceResendingToken) { super.onCodeSent(s, forceResendingToken); verificationId = s; mToken = forceResendingToken; } ثم نقوم بإستخدام الميثود التالية لإعادة إرسال الرمز مرة أخرى private void resendVerificationCode(String phoneNumber, PhoneAuthProvider.ForceResendingToken token) { PhoneAuthProvider.getInstance().verifyPhoneNumber( phoneNumber, 60, TimeUnit.SECONDS, this, mCallback, token); } ثم قم بعمل onClickListener ,وإستدعي الميثود عند ضغط الزر لإعادة إرسال الرمز ونقوم بإستدعاء الميثود هكذا مع تمرير الرقم ومتغير mToken إليها resendVerificationCode(phonenumber,mToken);
-
صحيح يوجد لديك خطأ هنا عدل الميثود @Override public void onCodeSent(String s, PhoneAuthProvider.ForceResendingToken forceResendingToken) { super.onCodeSent(s, forceResendingToken); verificationId = s; } قم بعمل متغير بإسم mToken وعدل الميثود إلى @Override public void onCodeSent(String s, PhoneAuthProvider.ForceResendingToken forceResendingToken) { super.onCodeSent(s, forceResendingToken); verificationId = s; mToken = forceResendingToken; } ثم نقوم بإستخدام الميثود التالية لإجبار إعادة إرسال الرمز مرة أخرى private void resendVerificationCode(String phoneNumber, PhoneAuthProvider.ForceResendingToken token) { PhoneAuthProvider.getInstance().verifyPhoneNumber( phoneNumber, 60, TimeUnit.SECONDS, this, mCallback, token); } ثم قم بعمل زر مثلا ,وإستدعي الميثود عند ضغط الزر لإجبار إعادة إرسال الرمز نستعديها هكذا مع تمرير الرقم ومتغير mToken إليها resendVerificationCode(phonenumber,mToken);
- 27 اجابة
-
- 1
-
مرحباً أخي @مروان مروان3 هذه ليست مشكلة في إرسال الكود لكن ما يحدث هو إذا قرأت الdocs الخاص بالخدمة يوضحون بأن الميثود verifyPhoneNumber إذا قمت بإستعائها عدة مرات مثلا عند إستجعائها من الميثود onStart أو أي ميثود تعمل عند بدء تشغيل التطبيق فإن الميثود verifyPhoneNumber لن ترسل رسالة تأكيد إلا بعد إنتهاء مهلة الطلب ومهلة الطلب أنت محددها 60 وهذا كثير لذلك جرب تغييرها إلى ١٠ هنا private void sendVerificationCode(String number) { progressBar.setVisibility(View.VISIBLE); PhoneAuthProvider.getInstance().verifyPhoneNumber( number, 10, TimeUnit.SECONDS, TaskExecutors.MAIN_THREAD, mCallBack ); }
- 27 اجابة
-
- 1
-
إن لا تحتاجه يمكنك الإستغناء عنه