هیچ دوره ای در سبد آموزش شما وجود ندارد
Push Notification اندروید
صفحه نخستNotification یک پیامی است که می توانید به کاربرهای خارج از برنامه نمایش دهید. شما می توانید در اندروید Notification های مربوط به خود را به راحتی ایجاد کنید.اندروید کلاس NotificationManager را برای این هدف ارائه می دهد. برای استفاده از این کلاس ،باید با درخواست سیستم اندروید از طریق متد (getSystemService)،یک شئ از این کلاس را به عنوان نمونه قرار دهید. ترکیب آن را می توانید در زیر مشاهده کنید.
NotificationManager NM; NM=(NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
پس از آن شما یک Notification از طریق کلاس Notification ایجاد کرده اید و ویژگی هایی مانند آیکن، متن ، زمان و غیره را مشخص می کنید، که ترکیب آن در زیر ارائه شده است.
Notification notify = new Notification(android.R.drawable.stat_notify_more,title,System.currentTimeMillis());
چیز دیگری که نیاز دارید این است که یک PendingIntent را به عنوان یک پارامتر به وسیله ی context و intent ارسال کنید. با ارائه ی PendingIntent به یک برنامه ی دیگر، حق اجرای عملکرد مشخص شده ای را به آن برنامه می دهید مثل اینکه آن برنامه، برنامه ی خودتان است.
PendingIntent pending = PendingIntent.getActivity(getApplicationContext(), 0, new Intent(),0);
و آخرین کاری که باید انجام دهید فراخوانی متد setLatestEventInfoاز کلاس Notification و ارسال intent معلق همراه با شئ notification و اجزای بدنه می باشد. ترکیب آن به شکل زیر می باشد:
notify.setLatestEventInfo(getApplicationContext(), subject, body,pending); NM.notify(0, notify);
علاوه بر متد notify، متد های دیگری در کلاس NotificationManager وجود دارند که لیست آنها در زیر ارائه شده است.
شماره | متد و توضیحات |
1 | cancel(int id)
این متد Notification نمایش داده شده پیشین را کنسل می کند. |
2 | cancel(String tag, int id)
این متد هم Notification نمایش داده شده پیشین را کنسل می کند. |
3 | cancelAll()
این متد همه ی Notification های نمایش داده شده پیشین را کنسل می کند. |
4 | notify(int id, Notification notification)
این متد یک Notification را برای نمایش در status bar پست می کند. |
5 | notify(String tag, int id, Notification notification)
این متد هم یک Notification را برای نمایش در status bar پست می کند. |
مثال
این مثال استفاده از کلاس NotificationManager را توضیح می دهد. این مثال برنامه پایه ای ایجاد می کند که به شما اجازه می دهد تا یک Notification درست کنید.
برای انجام این مثال لازم است آن را روی یک دستگاه واقعی یا روی یک شبیه ساز اجرا کنید.
مرحله | توضیحات |
1 | برای ایجاد یک برنامه ی اندروید از Eclipse IDE استفاده خواهید کرد و آن را با عنوان Notification به عنوان بسته ی com.PRG.Notification نام گذاری کنید. |
2 | فایل src/MainActivity.java را برای افزودن کد Notification تغییر دهید. |
3 | لایه ی XML فایل res/layout/activity_main.xml را تغییر داده و اگر لازم است مولفه ی GUI به آن اضافه کنید. |
4 | برنامه را اجرا کنید و یک دستگاه اجرایی اندروید انتخاب کرده و برنامه را روی آن نصب کنید و نتایج را بررسی کنید. |
در اینجا محتوای MainActivity.java را می بینید.
package com.example.sairamkrishna.myapplication; import android.app.Notification; import android.app.NotificationManager; import android.content.Context; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; public class MainActivity extends ActionBarActivity { EditText ed1,ed2,ed3; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ed1=(EditText)findViewById(R.id.editText); ed2=(EditText)findViewById(R.id.editText2); ed3=(EditText)findViewById(R.id.editText3); Button b1=(Button)findViewById(R.id.button); b1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String tittle=ed1.getText().toString().trim(); String subject=ed2.getText().toString().trim(); String body=ed3.getText().toString().trim(); NotificationManager notif=(NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE); Notification notify=new Notification.Builder (getApplicationContext()).setContentTitle(tittle).setContentText(body). setContentTitle(subject).setSmallIcon(R.drawable.abc).build(); notify.flags |= Notification.FLAG_AUTO_CANCEL; notif.notify(0, notify); } }); } }
در اینجا محتوای activity_main.xml می باشد.
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Notification" android:id="@+id/textView" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:textSize="30dp" /> . <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Tutorials Point" android:id="@+id/textView2" android:layout_below="@+id/textView" android:layout_centerHorizontal="true" android:textSize="35dp" android:textColor="#ff16ff01" /> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/editText" android:layout_below="@+id/textView2" android:layout_alignLeft="@+id/textView2" android:layout_alignStart="@+id/textView2" android:layout_marginTop="52dp" android:layout_alignRight="@+id/textView2" android:layout_alignEnd="@+id/textView2" android:hint="Name" /> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/editText2" android:hint="Subject" android:layout_below="@+id/editText" android:layout_alignLeft="@+id/editText" android:layout_alignStart="@+id/editText" android:layout_alignRight="@+id/editText" android:layout_alignEnd="@+id/editText" /> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:inputType="textPersonName" android:ems="10" android:id="@+id/editText3" android:hint="Body" android:layout_below="@+id/editText2" android:layout_alignLeft="@+id/editText2" android:layout_alignStart="@+id/editText2" android:layout_alignRight="@+id/editText2" android:layout_alignEnd="@+id/editText2" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Notification" android:id="@+id/button" android:layout_marginTop="77dp" android:layout_below="@+id/editText3" android:layout_alignRight="@+id/textView" android:layout_alignEnd="@+id/textView" /> </RelativeLayout>
در زیر محتوای AndroidManifest.xml را مشاهده می کنید.
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.sairamkrishna.myapplication" > <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
اجازه بدهید برنامه ی TextToSpeech شما را اجرا کنیم. فرض می کنیم که دستگاه موبایل اندروید خود را به کامپیوتر متصل کرده اید. برای اجرای برنامه از Eclipse، یکی ازفایل های فعالیت پروژه را باز کرده و روی آیکن Run از تولبار کلیک کنید. قبل از شروع برنامه شما، Eclipse پنجره ی زیر را برای انتخاب گزینه محل اجرای برنامه ی اندرویدتان، نمایش خواهد داد.
اکنون فیلد را با تیتر، موضوع و بدنه پر کنید، همان طور که در تصویر زیر می بینید.
اکنون روی دکمه ی notify کلیک کنید، پس از آن یک اخطاریه در قسمت بالای notification bar خواهید دید، درست مانند تصویر زیر
حال notification bar را به سمت پایین اسکرول کرده و اخطاریه را ببینید، که در تصویر زیر نمایش داده شده است.