-
المساهمات
787 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
2
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو Flutter Dev
-
@عبدالرشيد احمد السلام عليكم ورحمة الله وبركاته هلا بيك ي غالي اعذرني اول شي على تاخر ردي كنت شغال ب كود صفحة مختلفة السموحه منك جاري تجريب الكود ورح اوافيك ب النتيجة باذن الله بعد دقائق @عبدالرشيد احمد هلا بيك عزيزي قمت بتطبيق الكود المرفق منك اخوي اول من اعمل طلب لرمز يصير كراش ل تطبيق وهذا نتيجة Logcat java.lang.NullPointerException: Attempt to invoke virtual method 'com.google.android.gms.tasks.Task com.google.firebase.auth.FirebaseAuth.signInWithCredential(com.google.firebase.auth.AuthCredential)' on a null object reference at com.example.myapplication.MainActivitytt.signInWithCredential(MainActivitytt.java:101) at com.example.myapplication.MainActivitytt.access$300(MainActivitytt.java:26) at com.example.myapplication.MainActivitytt$2.onVerificationCompleted(MainActivitytt.java:90) at com.google.firebase.auth.api.internal.zzer.zza(Unknown Source) at com.google.firebase.auth.api.internal.zzeu.run(Unknown Source) at android.os.Handler.handleCallback(Handler.java:751) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6682) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410) مع العلم ان الرقم يصل او رمز التفعيل استقبله ولكن الكراش موجود
-
السلام عليكم ورحمة الله وبركاته تحيه طيبه للجميع لدي استفسار انا عامل SharedPreferences لحفظ البيانات من edittext لما اخرج من الاكتفتي او انتقل اكتفتي ثاني لا يتم حذف البيانات الكود شغال ميه ميه المشكلة فقط الكود حاليا يعمل لدى edittext1 مثلا ولكن انا لدي اكثر من حقل edittext3 ,edittext1,edittext1 final SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this); editText.setText(pref.getString(LAST_TEXT, "")); editText1.setText(pref.getString(LAST_TEXT2, "")); editText2.setText(pref.getString(LAST_TEXT3, "")); editText3.setText(pref.getString(LAST_TEXT4, "")); editText4.setText(pref.getString(LAST_TEXT5, "")); editText5.setText(pref.getString(LAST_TEXT6, "")); editText.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override public void afterTextChanged(Editable s) { pref.edit().putString(LAST_TEXT, s.toString()).commit(); pref.edit().putString(LAST_TEXT2, s.toString()).commit(); pref.edit().putString(LAST_TEXT3, s.toString()).commit(); pref.edit().putString(LAST_TEXT4, s.toString()).commit(); pref.edit().putString(LAST_TEXT5, s.toString()).commit(); pref.edit().putString(LAST_TEXT6, s.toString()).commit(); pref.edit().putString(LAST_TEXT7, s.toString()).commit(); } }); لو عملته بشكل التالي رح يعمل في اول حقل فقط كيف ممكن اضيف جميع الحقول ؟ اكثر طريقة مختصره ممكن للكود لو تكرمتو الي معه فكره احتاج
-
وعليكم السلام ورحمة الله وبركاته هلا بيك اخوي شاكر لك عزيزي افادتك ربي يعطيك العافيه
-
نفترض لدي متاجر ولكن المتاجر عامة بمعنى لا استطيع تحديدها ولكن استطيع تحديد السلع المنشوره حسب الفكره التي قمت بشرحها انت في جدول السلع خانه باسم country of item مثلا ولما يدخل المستخدم لتطبيق لزم يختار هو من اي بلد وعلى اختياره رح يعرض له التطبيق السلع الي تم تخزينها مسبقا في دولته استطيع القيام بهذا الفكره باستخدم Shared Preferences اذا المستخدم عمل تسجيل عضويه من خلال صفحة التسجيل رح احفظ بيانات الدوله وكلما فتح ب حسابه رح استخدم Shared Preferences لجلب الدوله وعرض المواضيع او السلع واذا لم يعمل عضويه افترض ان الفكره ايضا ممكنه من خلال Shared Preferences ولكن بنسبه ل عرض صفحة اختيار الدول او صفحه مخصصه للمستخدم في اول دخول له لتطبيق كيف يمكن عمل ذلك؟
-
السلام عليكم ورحمة الله وبركاته لدي استفسار لو تكرمتو.. لقد سبق وشاهدت في بعض التطبيقات مثل OLX والسوق المفتوح تقريبا يتم سوال المستخدم في بداية دخوله لتطبيق في اول مره عن بلده ثم يتم عرض المواضيع إعتماداً على الموقع الذي اختاره مع امكانية عرض الجميع طبعا كيف يتم عمل ذلك؟كيف ممكن نعمله؟ ياليت اذا احد معه فكره عن الموضوع يساعدنا
-
لم يسبق لي العمل مع فايربيس ولكني حسب ما فهمت لا يمكنني تحميل قواعد mysql وملفات php التي لدي الان وجاهزه ل مشروعي ولا يمكنني تغير مشروعي كامل الان بمعنى اخر انا مجبور على عدم استخدمها لدى مشروعي الان هذا ما فهمته من شرحك عزيزي كل الشكر لك ي غالي
-
طيب عزيزي كيف بخصوص قواعد firebase وهل ممكن اختيار قواعد firebase في حالتي الان؟ واذا ممكن ما رايكم بها؟
-
السلام عليكم ورحمة الله وبركاته حبيت استفسر عن استضافه قد تمت تجربتها من قبلكم وكانت ممتازه من ناحية الاسعار والدعم الفني؟ عربيه او اجنبيه وما هيا؟ كذلك ما رايكم ب استضافة https://ae.000webhost.com/ لقد رايت الكثير من المبرمجين في شروحات الاندرويد يستخدمونها مع العلم اني ارغب برفع قواعد بيانات من نوع mysql وملفات php الخاصه بتطبيقي اندرويد وهل ممكن اختيار قواعد firebase في حالتي الان؟ واذا ممكن ما رايكم بها؟
-
يبدو ان الامر يحصل فقط في حالة ان المستخدم قد تحقق من رمز OTP لقد قمت بتجربة التاليه قمت بطلب OTP ولكن لم اعمل تحقق وقد تم ارساله لي وقمت بنفس الخطوه مره ثانيه وثالثه والامر ناجح اذن المشكلة فقط لو المستخدم عمل تحقق فلن يستطيع طلبه من جديد قبل اعادة التشغيل على هذا النحو لا بأس بالامر شكرا لك عزيزي كثير يمشي الحال في الوقت الحالي لا مشكلة
- 27 اجابة
-
- 1
-
اذا انا فاهم عدل بيكون شكل الكود كالتالي كامل: public class VerifyPhoneActivity extends AppCompatActivity { private static final String TAG = "VerifyPhoneActivity"; private PhoneAuthProvider.ForceResendingToken mResendToken; private PhoneAuthProvider.OnVerificationStateChangedCallbacks mCallbacks; private String verificationId; private FirebaseAuth mAuth; private ProgressBar progressBar; private EditText editText; private String mToken; String mText; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_verify_phone); mAuth = FirebaseAuth.getInstance(); progressBar = findViewById(R.id.progressbar); editText = findViewById(R.id.editTextCode); findViewById(R.id.tt).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // mAuth.getInstance().signOut(); resendVerificationCode(mText,mToken); // resendVerificationCode(editText.getText().toString(),mToken); } }); String phonenumber = getIntent().getStringExtra("phonenumber"); sendVerificationCode(phonenumber); findViewById(R.id.buttonSignIn).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mText = editText.getText().toString(); String code = editText.getText().toString().trim(); if (code.isEmpty() || code.length() < 6) { editText.setError("Enter code..."); editText.requestFocus(); return; } verifyCode(code); } }); } private void verifyCode(String code) { PhoneAuthCredential credential = PhoneAuthProvider.getCredential(verificationId, code); signInWithCredential(credential); } private void signInWithCredential(PhoneAuthCredential credential) { mAuth.signInWithCredential(credential) .addOnCompleteListener(new OnCompleteListener<AuthResult>() { @Override public void onComplete(@NonNull Task<AuthResult> task) { if (task.isSuccessful()) { Intent intent = new Intent(VerifyPhoneActivity.this, ProfileActivitytt.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); startActivity(intent); } else { Toast.makeText(VerifyPhoneActivity.this, task.getException().getMessage(), Toast.LENGTH_LONG).show(); } } }); } private void sendVerificationCode(String number) { progressBar.setVisibility(View.VISIBLE); PhoneAuthProvider.getInstance().verifyPhoneNumber( number, 10, TimeUnit.SECONDS, this, mCallBack ); } private PhoneAuthProvider.OnVerificationStateChangedCallbacks mCallBack = new PhoneAuthProvider.OnVerificationStateChangedCallbacks() { /* @Override public void onCodeSent(String s, PhoneAuthProvider.ForceResendingToken forceResendingToken) { super.onCodeSent(s, forceResendingToken); verificationId = s; } */ @Override public void onCodeSent(String s, PhoneAuthProvider.ForceResendingToken forceResendingToken ) { super.onCodeSent(s, forceResendingToken); verificationId = s; // mToken = forceResendingToken; mText = editText.getText().toString().trim(); } @Override public void onVerificationCompleted(PhoneAuthCredential phoneAuthCredential) { String code = phoneAuthCredential.getSmsCode(); if (code != null) { editText.setText(code); verifyCode(code); } } @Override public void onVerificationFailed(FirebaseException e) { Toast.makeText(VerifyPhoneActivity.this, e.getMessage(), Toast.LENGTH_LONG).show(); } }; private void resendVerificationCode(String phoneNumber, PhoneAuthProvider.ForceResendingToken token) { PhoneAuthProvider.getInstance().verifyPhoneNumber( phoneNumber, 10, TimeUnit.SECONDS, this, mCallBack, token); } }
- 27 اجابة
-
- 1
-
قمت بتعديل التالي: private String mToken; فظهرت لدي المشكله التاليه : 'resendVerificationCode(java.lang.String, com.google.firebase.auth.PhoneAuthProvider.ForceResendingToken)' in 'com.example.myapplication.VerifyPhoneActivity' cannot be applied to '(java.lang.String, java.lang.String)' Incompatible types. Found: 'com.google.firebase.auth.PhoneAuthProvider.ForceResendingToken', required: 'java.lang.String'
- 27 اجابة
-
- 1
-
هلا بيك عزيزي @Mohamd Imran قمت بعمل الكود كامل مع تعديلك كالتالي : public class VerifyPhoneActivity extends AppCompatActivity { private static final String TAG = "VerifyPhoneActivity"; private PhoneAuthProvider.ForceResendingToken mResendToken; private PhoneAuthProvider.OnVerificationStateChangedCallbacks mCallbacks; private String verificationId; private FirebaseAuth mAuth; private ProgressBar progressBar; private EditText editText; private PhoneAuthProvider.ForceResendingToken mToken; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_verify_phone); mAuth = FirebaseAuth.getInstance(); progressBar = findViewById(R.id.progressbar); editText = findViewById(R.id.editTextCode); findViewById(R.id.tt).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // mAuth.getInstance().signOut(); resendVerificationCode(editText.getText().toString(),mToken); } }); String phonenumber = getIntent().getStringExtra("phonenumber"); sendVerificationCode(phonenumber); findViewById(R.id.buttonSignIn).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String code = editText.getText().toString().trim(); if (code.isEmpty() || code.length() < 6) { editText.setError("Enter code..."); editText.requestFocus(); return; } verifyCode(code); } }); } private void verifyCode(String code) { PhoneAuthCredential credential = PhoneAuthProvider.getCredential(verificationId, code); signInWithCredential(credential); } private void signInWithCredential(PhoneAuthCredential credential) { mAuth.signInWithCredential(credential) .addOnCompleteListener(new OnCompleteListener<AuthResult>() { @Override public void onComplete(@NonNull Task<AuthResult> task) { if (task.isSuccessful()) { Intent intent = new Intent(VerifyPhoneActivity.this, ProfileActivitytt.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); startActivity(intent); } else { Toast.makeText(VerifyPhoneActivity.this, task.getException().getMessage(), Toast.LENGTH_LONG).show(); } } }); } private void sendVerificationCode(String number) { progressBar.setVisibility(View.VISIBLE); PhoneAuthProvider.getInstance().verifyPhoneNumber( number, 10, TimeUnit.SECONDS, TaskExecutors.MAIN_THREAD, mCallBack ); } private PhoneAuthProvider.OnVerificationStateChangedCallbacks mCallBack = new PhoneAuthProvider.OnVerificationStateChangedCallbacks() { /* @Override public void onCodeSent(String s, PhoneAuthProvider.ForceResendingToken forceResendingToken) { super.onCodeSent(s, forceResendingToken); verificationId = s; } */ @Override public void onCodeSent(String s, PhoneAuthProvider.ForceResendingToken forceResendingToken) { super.onCodeSent(s, forceResendingToken); verificationId = s; mToken = forceResendingToken; } @Override public void onVerificationCompleted(PhoneAuthCredential phoneAuthCredential) { String code = phoneAuthCredential.getSmsCode(); if (code != null) { editText.setText(code); verifyCode(code); } } @Override public void onVerificationFailed(FirebaseException e) { Toast.makeText(VerifyPhoneActivity.this, e.getMessage(), Toast.LENGTH_LONG).show(); } }; private void resendVerificationCode(String phoneNumber, PhoneAuthProvider.ForceResendingToken token) { PhoneAuthProvider.getInstance().verifyPhoneNumber( phoneNumber, 10, TimeUnit.SECONDS, this, mCallBack, token); } } ولكن المشكلة لا تزال مستمره في حالة المرة الاولى للمستخدم يستطيع استقبل الكود ولكن لو عمل للمره الثانية لا يستطيع ذلك لا يستقبل الكود الا اذا قمت باعادة تشغيل هاتفي مع العلم انني حتى من جدول المستخدمون قمت بحذفه ولكن لم تحل المشكلة ايضا كود اعادة ارسال الرمز الان بعد الضغط عليه يعود بي الى صفحة تسجيل الرقم مع تفاصيلي التي ادخلتها سابقا مثل الدوله + رقم الهاتف ولما اعمل ارسل الرمز ايضا لا يتم الارسال. لا اعلم ما هيا العلاقه بين اعادة تشغيل الهاتف واستقبل الرمز بهذا الطريقة ارفقت ملف المشروع كامل ليكون اوضح MyApplication3.rar
- 27 اجابة
-
- 1
-
هلا بيك عزيزي 60 ثانية او انا غلطان ؟ لني قمت بالانتظار لكثر من 4 ساعات تقريبا والمشكلة مستمره فقط حينما اعيد تشغيل الجهاز استطيع استقبل الرمز لمرة واحده ولو حاولت من جديد لن ياتي حتى اعيد التشغيل مره اخره هذا ما وجدته بعد التجربه
- 27 اجابة
-
- 1
-
السلام عليكم ورحمة الله وبركاته استخدم خاصية OTP من firebase لتحقق من ارقام المشتركين في تطبيقي وقد واجهتني مشكلة في حالة المستخدم تاخر فس ادخال رمز OTP قمت باضافة زر للقيام باعادة ارسال الرمز للمستخدم ولكن لم اعلم كيف يمكنني كتابة كود الاستعاده انا استخدم هذا الكود الان كامل public class VerifyPhoneActivity extends AppCompatActivity { private String verificationId; private FirebaseAuth mAuth; private ProgressBar progressBar; private EditText editText; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_verify_phone); mAuth = FirebaseAuth.getInstance(); progressBar = findViewById(R.id.progressbar); editText = findViewById(R.id.editTextCode); findViewById(R.id.tt).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //=======here I want add it==============/////////// } }); String phonenumber = getIntent().getStringExtra("phonenumber"); sendVerificationCode(phonenumber); findViewById(R.id.buttonSignIn).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String code = editText.getText().toString().trim(); if (code.isEmpty() || code.length() < 6) { editText.setError("Enter code..."); editText.requestFocus(); return; } verifyCode(code); } }); } private void verifyCode(String code) { PhoneAuthCredential credential = PhoneAuthProvider.getCredential(verificationId, code); signInWithCredential(credential); } private void signInWithCredential(PhoneAuthCredential credential) { mAuth.signInWithCredential(credential) .addOnCompleteListener(new OnCompleteListener<AuthResult>() { @Override public void onComplete(@NonNull Task<AuthResult> task) { if (task.isSuccessful()) { Intent intent = new Intent(VerifyPhoneActivity.this, ProfileActivitytt.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); startActivity(intent); } else { Toast.makeText(VerifyPhoneActivity.this, task.getException().getMessage(), Toast.LENGTH_LONG).show(); } } }); } private void sendVerificationCode(String number) { progressBar.setVisibility(View.VISIBLE); PhoneAuthProvider.getInstance().verifyPhoneNumber( number, 20, TimeUnit.SECONDS, TaskExecutors.MAIN_THREAD, mCallBack ); } private PhoneAuthProvider.OnVerificationStateChangedCallbacks mCallBack = new PhoneAuthProvider.OnVerificationStateChangedCallbacks() { @Override public void onCodeSent(String s, PhoneAuthProvider.ForceResendingToken forceResendingToken) { super.onCodeSent(s, forceResendingToken); verificationId = s; } @Override public void onVerificationCompleted(PhoneAuthCredential phoneAuthCredential) { String code = phoneAuthCredential.getSmsCode(); if (code != null) { editText.setText(code); verifyCode(code); } } @Override public void onVerificationFailed(FirebaseException e) { Toast.makeText(VerifyPhoneActivity.this, e.getMessage(), Toast.LENGTH_LONG).show(); } }; }
- 1 جواب
-
- 1
-
السلام عليكم ورحمة الله وبركاته اسعد الله اوقاتكم جميعا يا رب لدي استفسار لو تكرمتو قمت بتجربة خدمة فايربيس لتحقق من رقم الهاتف . في بداية تفعيلي للخدمه كان كل شي ولكن مع التجارب وطلب الرمز لكذا مره حدث انقطاع في استقبل الرمز لم اعد قادر على استقبل رمز التحقق طبعا قلت ممكن يحتاج وقت وتوقفت اكثر من 5 ساعات ولكن بعد التجربة لا تزال المشكلة مستمرة. وقد شاهدت ايضا بانني لو قمت باضافة رقم هاتفي في نظام هواتف الاختبار بعد حذف الرقم لا يعود قادر على استقبل رسائل التحقق ايضا لا اعلم ما هو السبب هل يوجد حل لهذا المشكلة ؟ هذا هو الكود الذي استخدمه : public class MainActivitytt extends AppCompatActivity { private Spinner spinner; private EditText editText; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); spinner = findViewById(R.id.spinnerCountries); spinner.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, CountryData.countryNames)); editText = findViewById(R.id.editTextPhone); findViewById(R.id.buttonContinue).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String code = CountryData.countryAreaCodes[spinner.getSelectedItemPosition()]; String number = editText.getText().toString().trim(); if (number.isEmpty() || number.length() < 6) { editText.setError("Valid number is required"); editText.requestFocus(); return; } String phoneNumber = "+" + code + number; Intent intent = new Intent(MainActivitytt.this, VerifyPhoneActivity.class); intent.putExtra("phonenumber", phoneNumber); startActivity(intent); } }); } @Override protected void onStart() { super.onStart(); if (FirebaseAuth.getInstance().getCurrentUser() != null) { Intent intent = new Intent(this, ProfileActivitytt.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); startActivity(intent); } } } public class VerifyPhoneActivity extends AppCompatActivity { private String verificationId; private FirebaseAuth mAuth; private ProgressBar progressBar; private EditText editText; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_verify_phone); mAuth = FirebaseAuth.getInstance(); progressBar = findViewById(R.id.progressbar); editText = findViewById(R.id.editTextCode); String phonenumber = getIntent().getStringExtra("phonenumber"); sendVerificationCode(phonenumber); findViewById(R.id.buttonSignIn).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String code = editText.getText().toString().trim(); if (code.isEmpty() || code.length() < 6) { editText.setError("Enter code..."); editText.requestFocus(); return; } verifyCode(code); } }); } private void verifyCode(String code) { PhoneAuthCredential credential = PhoneAuthProvider.getCredential(verificationId, code); signInWithCredential(credential); } private void signInWithCredential(PhoneAuthCredential credential) { mAuth.signInWithCredential(credential) .addOnCompleteListener(new OnCompleteListener<AuthResult>() { @Override public void onComplete(@NonNull Task<AuthResult> task) { if (task.isSuccessful()) { Intent intent = new Intent(VerifyPhoneActivity.this, ProfileActivitytt.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); startActivity(intent); } else { Toast.makeText(VerifyPhoneActivity.this, task.getException().getMessage(), Toast.LENGTH_LONG).show(); } } }); } private void sendVerificationCode(String number) { progressBar.setVisibility(View.VISIBLE); PhoneAuthProvider.getInstance().verifyPhoneNumber( number, 60, TimeUnit.SECONDS, TaskExecutors.MAIN_THREAD, mCallBack ); } private PhoneAuthProvider.OnVerificationStateChangedCallbacks mCallBack = new PhoneAuthProvider.OnVerificationStateChangedCallbacks() { @Override public void onCodeSent(String s, PhoneAuthProvider.ForceResendingToken forceResendingToken) { super.onCodeSent(s, forceResendingToken); verificationId = s; } @Override public void onVerificationCompleted(PhoneAuthCredential phoneAuthCredential) { String code = phoneAuthCredential.getSmsCode(); if (code != null) { editText.setText(code); verifyCode(code); } } @Override public void onVerificationFailed(FirebaseException e) { Toast.makeText(VerifyPhoneActivity.this, e.getMessage(), Toast.LENGTH_LONG).show(); } }; } قمت بتجربة لحل المشكلة باستخدام السطر التالي ولكن لم ينجح الامر FirebaseAuth.getInstance().signOut();
- 27 اجابة
-
- 1
-
شكرا على الإفادة ي غالي
- 4 اجابة
-
- 1
-
طيب عزيزي بخصوص المبلغ الذي سوف أكون مجبور على دفعه لو كنت انا من باب التطوير ولكن سبحان الله تطبيقي وصل هذا العدد في شهر محدد رح يتم توقيف عملية التحقق الى ان يتم الدفع ام سأكون ملزم قانونيا اني أقوم بعملية الدفع ؟ مثلا انا لو وصل الى هذا العدد وحبيت الغي الخدمة حتى لا أقوم بعملية الدفع هل سينج الامر ام سيكون فيه بند قانوني ويتم محاسبتي عليه ؟
-
السلام عليكم ورحمة الله وبركاته احتاج افهم نقطة ي اخوان الي معه فكره حول الموضوع بخصوص خدمة firebase OTP والتي من خلالها نستطيع التحقق من رقم الهاتف المسجل في التطبيق الذي فهمته يتم منح المطور 10k تحقق في كل شهر كيف يتم احتساب 10k? هل هذا يعني انه في كل شهر يمكن ان اسجل في تطبيقي 10 الاف مستخدم ؟ بالمجاني وفي كل شهر جديد يتم منحي عشره غيرهم؟ اما لها طريقة احتساب مختلفة ؟ احس الرقم كبير شوية يعني على كذا مافيه احد محتاج يشتري منهم الخدمة او يعمل ترقية لنه 10 الاف مستخدم شهري رقم كبير ياليت احد يوضح الفكره يمكن يكون لدي سوى فهم للموضوع