إرسال رسالة FCM من اندرويد ستوديو - fcm with retrofit android studio
اذا كنت تريد اشعار مخصص للمستخدم فسوف تحتاج الى اضافة retrofit في تطبيقك مثل تريد عمل يقوم مستخدم بعمل اعجاب على سبيل المثال على منشور مستخدم اخر فعندما يقوم بالاعجاب او التعليق على منشور المستخدم يصله اشعار وهذة هي فكرة مقالة اليوم .
تطوير تطبيقات الهواتف الذكية وخصوصا تطوير تطبيقات الاندرويد واحد من اكثر المجالات التي يريد كثير منا تعلمها ويبحث عن دروس حول تعليم البرمجة للاطفال مجانا ونحن في جي كودرس في طبيعة الحال نحاول ان نوفر لكم دائما احدث الشروحات حول مجال تطوير تطبيقات الموبايل لكي تستطيع بناء تطبيقك بواسطة برنامج اندرويد ستوديو بسهوله وبدون اي تعقيد حيث بعد تعلمك لهذة المهاره يمكنك التقديم الى اي شركة تطوير تطبيقات الجوال للعمل فيها واكتساب خبره اكبر وتعلم مهارة العمل ضمن فريق ولكن قبل البدء في تطوير تطبيقات الاندرويد يجب عليك آخذ دورة جافا لان لغة جافا من اهم اللغات التي ينصح البدء بها في مجال تطوير تطبيقات الموبايل ونقدم لكم موقعنا المتواضع حول اكواد لغة جافا تساعدك في التطوير في اللغه .
من اكثر الوظائف التي تطلب في الوقت الحالي وهيبرمجة تطبيقات سطح المكتب و تطوير تطبيقات الموبايل سواء تطوير تطبيقات الاندرويد او تطبيقات الايفون ios فمجال التطوير عموما واحد من اكثر المجالات التي لديها تناسف كبير في سوق العمل وكل شركة تطوير تطبيقات الجوال تسعى الى يكون العاملين فيها قادرين على تطوير اي تطبيقات مع الحفاظ على clean code وهذا ما يميز كل مطور عن الاخر فالامر لا يقتصر فقط على تطوير تطبيقات الهواتف الذكية بل يجب عليك مراعاة كتابة " كود نظيف " يسهل لمن ياتي بعدك التعديل واذا كنت تعمل ضمن فريق من اجل تطوير تطبيقات الاندرويد فكل واحد يعرف يترك عمله نظيف لكي يسهل على الاخر الوصول الى المعلومه التي يحتاجها وليعرف كل شخص ساعد في تطور التطبيق الوصول الى ما يحتاج .
كيفية ارسال اشعارات مخصصة الى المستخدمين بواسطة اندرويد ستوديو - fcm with retrofit
كيفية ربط فايربيز كلاود بمكتبة Retrofit عن طريق برنامج اندرويد ستوديو
قم اولا بإضافة المكتبة التاليه داخل build.gradle
buildTypes {
debug {
buildConfigField("String", "FCM_BASE_URL", "\"https://fcm.googleapis.com/\"")
buildConfigField("String", "FCM_SERVER_KEY", "\"xxxxxxxxxxxxxxxxxxxxxxxx\"")
}
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
استبدل xxxxxxxxxxxxxxxxxxxxxxxx بالعنوان الخاص بالاشعارات في FCM وللحصول عليه ادخل على حسابك في firebase ومن ثم توجة الى علامة " الترس " الموجوده على اليسار ومن ثم اختر cloud messaging وسوف تجد المفتاح كما بالصورة قم بنسخة واستبدله بدل xxxxxxxxxx الموجوده في الكود .
الخطوة التالية هي ان تقوم بإضافة هذة المكتبة داخل dependencies في نفس build.gradle .
implementation 'com.squareup.retrofit2:retrofit:2.7.1'
implementation 'com.squareup.retrofit2:converter-gson:2.5.0'
implementation "com.squareup.okhttp3:logging-interceptor:4.3.1"
انتقل الان الى manifest وقم باضافة هذا البرمشن للوصول الى الانترنت .
permission internet
<uses-permission android:name="android.permission.INTERNET" />
الان قم بإنشاء كلاس جديد باسم ApiClient وهو سوف يكون Retrofit ويعني انه سوف يقوم بعملية تحويل كود json الى جافا لكي يفهمه البرنامج قد سبق وان شرحنا هذا في درس api وان شاء الله سوف نشرحه بشكل اكبر في مقالة منفصلة اخرى لانك سوف تحتاج هذة الميزة في تطوير تطبيقات الاندرويد بشكل كبير جدا وسوف تتعرض لها .
عموما قم بنسخ الكود التالي كامل ولصقه فهذة المرحلة هي مجرد Converter ولا يوجد بها تغيير تقريبا الا اذا كنت تريد التعامل مع اي شيئ اخر فقط تقوم باستبدال baseUrl وبدل العنوان بالعنوان الرئيسي الذي تعمل عليه وكل شيئ كان واضح في شرح api اذا لم تشاهدة انصحك بالرجوع اليه لانه مهمة جدا في تطوير تطبيقات الموبايل .
الكود السابق .
public class ApiClient {
private static Retrofit retrofit;
public static NotificationApiService getApiService () {
if (retrofit == null) {
retrofit = new Retrofit.Builder()
.baseUrl("https://fcm.googleapis.com")
.client(provideClient())
.addConverterFactory(GsonConverterFactory.create())
.build();
}
return retrofit.create(NotificationApiService.class);
}
private static OkHttpClient provideClient() {
HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
return new OkHttpClient.Builder().addInterceptor(interceptor).addInterceptor(chain -> {
Request request = chain.request();
return chain.proceed(request);
})
.build();
}
}
الان قم بإنشاء interface , بإسم NotificationApiService وهنا سوف تقوم بتمرير له key او المفتاح الذي سوف يستخدمه في العملية بمعنى اخر الكود الذي قمت بالحصول عليه من firebase في الخطوه الثانية فوق وايضا هذة الخطوه مهمة في تطوير تطبيقات الهواتف الذكية لذلك وهي بكل اختصار سوف تتعامل مع السيرفر .
استبدل zzzzzzz بالكود الخاص بك .
الكود الموجود في الصورة السابقة .
public interface NotificationApiService {
@Headers({
"Authorization: key="+"zzzzzzz" ,
"Content-Type: application/json"
})
@POST("fcm/send")
Call<JsonObject> sendNotification(@Body JsonObject payload);
}
الان ارجع الى MainActivity وقم بعمل private JsonObject buildNotificationPayload وهذة ببساطة تقوم بوضع التوكن الخاص بك بدل كلمة token وقمنا بعمل JsonObject وفيها سوف نقوم بتمرير البيانات مثال الاول key الخاص به title وبعدها يمكنك تمرير البيانات وهنا فقط اكتفينا بعمل "Title value" قم باستبادلها وضع العنصر الذي تريد تمريره وايضا السطر اللي اسفله نفس الوضع .
بعد ذلك نقوم بعمل مفتاح اخر باسم data ونقوم بتمرير البيانات السابقه بواسطتها حيث قمنا بوضع data لكي يتم ارسال title و message بمعنى اخر قمنا بعمل add data payload عندما يكون معك backend يقوم بعمل لك سيرفر وتقوم بتمرير البيانات هنا فقط وايضا التعامل ما الباك اند من اهم الاشياء التي يجب ان تتوفر لديك عندما تعمل على مشروع كبير في تطوير تطبيقات الموبايل لانك سوف تحتاج سيرفر وما الى ذلك والباك اند المسؤول عن هذا .
في الميثود pushNotification نقوم بدفع الاشعارات بواسطها على سبيل المثال يمكنك انشاء زر وعمل له setonclick وبعدها تقوم بإستدعاء هذة الميثود بداخله .
قم بتغيير "Token" الذي ياتي بعد "to" في buildNotificationPayload الى التوكن الخاص بالمستخدم حيث يمكنك تخزين توكن المستخدم في قواعد البيانات واستدعائه هنا عن طريق التوجة الى userid واخذ التوكن الخاص به .
الاكواد السابقة في الصورة .
private JsonObject buildNotificationPayload() {
JsonObject payload = new JsonObject();
payload.addProperty("to", "Token");
// compose data payload here
JsonObject data = new JsonObject();
data.addProperty("title", "Title value");
data.addProperty("message", "Message value");
// add data payload
payload.add("data", data);
return payload;
}
private void pushNotification() {
JsonObject payload = buildNotificationPayload();
// send notification to receiver ID
ApiClient.getApiService().sendNotification(payload).enqueue(
new Callback<JsonObject>() {
@Override
public void onResponse(Call<JsonObject> call, Response<JsonObject> response) {
if (response.isSuccessful()) {
Toast.makeText(MainActivity.this, "Notification send successful",
Toast.LENGTH_LONG).show();
}
}
@Override
public void onFailure(Call<JsonObject> call, Throwable t) {
String errormessage = t.getMessage();
Toast.makeText(MainActivity.this, errormessage, Toast.LENGTH_SHORT).show();
Log.i(TAG, "onFailure: is " + errormessage);
}
});
}
لمشاهدة باقي الحلقات حول الاشعارات في موقعنا :
البروجكت كامل على GitHub
الى هنا يكون سادس دروس من دروس التعامل مع الاشعارات بالاندرويد ستوديو ولمزيد من الدروس حول تطوير تطبيقات الاندرويد واكواد اندرويد ستوديو شاهد التالي :-