اذهب إلى المحتوى

Mohamed Foudane

الأعضاء
  • المساهمات

    15
  • تاريخ الانضمام

  • تاريخ آخر زيارة

أجوبة بواسطة Mohamed Foudane

  1. السلام عليكم

    هل يمكن وضع دالة في Class MyApplication وهذه الدالة ترتبط ب parameter  من نوع Activity 

    ثم استدعيها على نفس الكلاس

     

    public class MyApplication extends Application {
    
        private static MaxInterstitialAd interstitialAd;
      
       
    
        @Override
        public void onCreate() {
            super.onCreate();
            Stetho.initializeWithDefaults(this);
    
            loadMaxInterstitialAd();
        }
      
      
      public void loadMaxInterstitialAd () {
    
            interstitialAd = new MaxInterstitialAd("adUnitId",//  Activity هنا مطلوب ادخال);
            interstitialAd.loadAd();
            interstitialAd.setListener(new MaxAdListener() {
                @Override
                public void onAdLoaded(MaxAd ad) {
    
                }
    
                @Override
                public void onAdDisplayed(MaxAd ad) {
    
                }
    
                @Override
                public void onAdHidden(MaxAd ad) {
                    
    
                }
    
                @Override
                public void onAdClicked(MaxAd ad) {
    
                }
    
                @Override
                public void onAdLoadFailed(String adUnitId, MaxError error) {
    
                
    
                }
    
                @Override
                public void onAdDisplayFailed(MaxAd ad, MaxError error) {
                    
                }
            });
    
        }
    
     
      
    
    }

     

  2. public class MyApplication extends Application {
    
        @Override
        public void onCreate() {
            super.onCreate();
    
            loadAdmobBanner();
        }
    
        public void loadAdmobBanner() {
          
            try {
                admobBanner = new AdView(this);
                admobBanner.setAdSize(AdSize.BANNER);
                admobBanner.setAdUnitId(this.getResources().getString(R.string.admob_banner_id));
                AdRequest adRequest = new AdRequest.Builder().build();
                admobBanner.loadAd(adRequest);
    
            } catch (Exception ignored) {
            }
        }
    
      
    
        public static void showBannerAd (Activity activity, LinearLayout adContainer) {
    
            try {
    
                adContainer.addView(admobBanner);
    
            } catch (Exception ignored) {
            }
    
    
        }

     

    هذا هو الكود، لاحظ معي ان دالة loadAdmobBanner باستدعائها في MainApplication Class.

    في حين اقوم بإستدعاء دالة showAdmobBanner في MainActivity مثلا...

    في حالة تأخر اعلان البانر في التحميل بسبب ضعف الانترنيت مثلا وإشتغلت MainActivity قبل انتهاء تحميل الإعلان فإنه لن يظهر حتى اعمل refresh ل MainActivity.

     

    هل اتضح المشكل سيدي ام لا ؟

  3. الفكرة ببساطة هي :

     

    private void loadBannerAd () {
      
        ...//الدالة الأولى
        ...
    }
    
    
    private void showBannerAd () {
      
        ...//الدالة الثانية
        ...
    }

     

    عند استدعاء الدالة الثانية التي هي showBannerAd لا اريد ان تشتغل حتى تنتهي الأولى

    لأن الأولى تستغرق قليل من الوقت وبذلك قد لا يظهر الإعلان لأن التحميل لم يكتمل بعد !!!

    • أعجبني 1
  4.  

    بتاريخ 1 ساعة قال Wael Aljamal:

    إذاً الأفضل هو تحميل الملف إلى التطبيق بشكل ديناميكي،

    يكون لديك استضافة مرفوع عليها الملف، يقوم التطبيق عند التشغيل بالاتصال و تحميل ملف الإعداد ثم استخدامه لضبط الاتصال.

    بهذه الحالة لا تحتاج لتحديث التطبيق نفسه، بل عليك تحديث ملف الإعداد من الاستضافة وهذا أمر سهل يمكنك القيام به بشكل يومي لبضع دقائق مثلاً، وبهذه الطريقة تتخلص من تحديد مدة صلاحية الملف نفسه.

    يمكنك في موضع متقدم أن تقوم بكتابة سكربت يعمل على تحديث الملف في الاستضافة بشكل آلي وهذا يسهل عليك الأمور.

    بتطبيق الخطوة السابقة ستتمكن من استخدام خدمة vpngate 

     

    نعم اعرف هذا 

    بالنسبة للحل الأول، نعم اتفق معك لكن هو ايضا يحتاج لمراقبة مستمرة وتحديث كل يوم او يوميو في السرفر .

    الحل الثاني هو افضل حل لكنه يحتاج الى احترافية وانا مبتدئ في هذا المجال.

     

    لذلك اعتقد انه لو ملفات تابثة ومستقرة وتعمل لمدة طويلة سيكون افضل بالنسبة لي، ولا يهمني ان كانت مجانية او مدفوعة

  5. بتاريخ 1 ساعة قال Hassan Hedr:

    ملفات الإعدادات الخاصة ب Open VPN يمكنك الحصول عليها من موفري تلك الخدمة إما بالمجان أو تكون مدفوعة،

    أحد المواقع الذي يقدم ملفات إعدادات مجانية هو VPN Gate يمكنك البحث فيه عما يناسبك، لكنك قد لا تجد خدمة بالمجان لا محدودة بما أنه مجاني 

    لا مشكلة عندي ان تكون مدفوعة لكن بشرط ان تكون لا محدودة من حيث عدد الاجهزة المتصلة...

    تعبت من البحث فلم اجد شيئا كل الموقع الموفرة لهذه الخدمة يكون عدد الاجهزة محدود .

    بالنسبة لموقع vpngate مشكلته ان السرفرات لا تدوم اكثر يجب تحديثها في كل يوم او يومين 

     

    • أعجبني 1
  6. السلام عليكم 

    قمت بإنشاء تطبيق vpn اندرويد يعمل بواسطة ملفات configs للأوبن فبن .
    لكنني لا اعرف كيف سأحصل على ملفات Open VPN configs تكون لا محدودة النطاق الترددي وكذلك لا محدودة من حيث عدد المتصلين في الآن نفسه ؟

  7. بتاريخ 8 دقائق مضت قال Wael Aljamal:

    ربما سبب المشكلة هو عمل تخزين مؤقت caching يحفظ القيمة السابقة لناتج الاتصال ولا يعمل تحديث.

    نعم اعتقد ان هذه هي المشكلة بالتحديد...

     

    بالنسبة لتعريف myString :

    عرفته على هذا الشكل :

    private String myString = "initialValue";

     

    لكن هذه القيمة تتغير الى stringValue بعد تشغيل getStringFromJson () .

    ثم لا تتغير بعد ذلك 

  8. بتاريخ 1 دقيقة مضت قال Wael Aljamal:

    أنت تتصل على الرابط التالي

    
    String url = "https://stringfromJson.json";
                         ^^^^^^^^^^^^^^^^^^^^^^

    هل لديك صلاحية لتعديل النص في ذلك الموقع؟ حاولت طلب الرابط وهو غير متوفر..

    وأرجو إطلاعي أين تحاول تعديل قيمة السلسلة النصية، لأن الشيفرة لا أعتقد فيها مشكلة.

    لا هذا الموقع مجرد مثال فقط 

    نعم لدي صلاحية لتعديل النص في الموقع المشكل ليس في الموقع. انما المشكل في الكود جافا.

    لأنما عندما Clear All Data في الهاتف ثم اعيد تشغيله يأخذ القيمة الجديدة وتبقى هذه القيمة ثابتة مرة اخرى حتى وان غيرتها في الموقع  الى ان اقوم من جديد ب Clear All Data 

    • أعجبني 1
  9. لدي مشكل  وهو عدم تحديث قيمة متغير من نوع String تم وضعه في السرفر في كل مرة ادخل الى Activity.

    كما تلاحظون في الكود اسفله انا اقوم باستدعاء قيمة string من السرفر ثم اعطيها ل myString. الى الأن كل شيء على ما يرام.

    الان بعدما ادخل الى السرفر واغير قيمة String من هناك لا تتغير في التطبيق بعد اعادة تشغيل Method يبقى myString يأخذ القيمة الاولى التى اخذها بعد الدخول الى التطبيق لأول مرة 

    private void getStringFromJson () {
    
            String url = "https://stringfromJson.json";
    
            RequestQueue requestQueue = Volley.newRequestQueue(getApplicationContext());
    
            JsonObjectRequest jsonObjectRequest = new JsonObjectRequest (Request.Method.GET, url, null, new Response.Listener<JSONObject>() {
    
                @Override
                public void onResponse(JSONObject response) {
    
                    try {
                        JSONObject object = response.getJSONObject("StringJsonObject");
    
                        String stringValue = object.getString("StringJsonValue");
                   
                        myString = stringValue;
    
    
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
    
                }
            }, new Response.ErrorListener() {
    
                @Override
                public void onErrorResponse(VolleyError error) {
                    // TODO: Handle error
    
                }
            });
    
            requestQueue.add(jsonObjectRequest);
        }

     

×
×
  • أضف...