آموزش Push Notification اندروید
آموزش Push Notification اندروید
Notification یک پیامی است که می توانید به کاربرهای خارج از برنامه نمایش دهید. شما می توانید در اندروید Notification های مربوط به خود را به راحتی ایجاد کنید.
اندروید کلاس NotificationManager را برای این هدف ارائه می دهد. برای استفاده از این کلاس ، باید با درخواست سیستم اندروید از طریق متد getSystemService()،یک شئ از این کلاس را به عنوان نمونه قرار دهید. ترکیب آن را می توانید در زیر مشاهده کنید.
NotificationManager NM;
NM=(NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
پس از آن شما یک Notification از طریق کلاس Notification ایجاد کرده اید و ویژگی هایی مانند آیکن، متن ، زمان و غیره را مشخص می کنید، که ترکیب آن در زیر ارائه شده است.
Notification notify=newNotification(android.R.drawable.stat_notify_more,title,System.currentTimeMillis());
چیز دیگری که نیاز دارید این است که یک PendingIntentرا به عنوان یک پارامتر به وسیله ی context و intent ارسال کنید. با ارائه ی PendingIntent به یک برنامه ی دیگر، حق اجرای عملکرد مشخص شده ای را به آن برنامه می دهید مثل اینکه آن برنامه، برنامه ی خودتان است.
PendingIntent pending=PendingIntent.getActivity(getApplicationContext(),0,newIntent(),0);
و آخرین کاری که باید انجام دهید فراخوانی متد setLatestEventInfoاز کلاس Notification و ارسال intent معلق همراه با شئ notification و اجزای بدنه می باشد. ترکیب آن به شکل زیر می باشد:
notify.setLatestEventInfo(getApplicationContext(), subject, body,pending);
NM.notify(0, notify);
علاوه بر متد notify، متد های دیگری در کلاس NotificationManager وجود دارند که لیست آنها در زیر ارائه شده است.
-
cancel(int id)
این متد Notification نمایش داده شده ی پیشین را کنسل می کند.
-
cancel(String tag, int id)
این متد هم Notification نمایش داده شده ی پیشین را کنسل می کند.
-
cancelAll()
این متد همه ی Notification های نمایش داده شده ی پیشین را کنسل می کند.
-
notify(int id, Notification notification)
این متد یک Notification را برای نمایش در status bar پست می کند.
-
notify(String tag, int id, Notification notification)
این متد هم یک Notification را برای نمایش در status bar پست می کند.
مثال
این مثال استفاده از کلاس NotificationManager را توضیح می دهد. این مثال برنامه ی پایه ای ایجاد می کند که به شما اجازه می دهد تا یک Notification درست کنید.
برای انجام این مثال لازم است آن را روی یک دستگاه واقعی یا روی یک شبیه ساز اجرا کنید.
-
برای ایجاد یک برنامه ی اندروید از Eclipse IDE استفاده خواهید کرد و آن را با عنوان Notification به عنوان بسته ی com.PRG.Notification نام گذاری کنید. زمان ایجاد این برنامه مطمئن شوید که Target SDKو Compile With در آخرین ورژن Android SDKهستند تا از سطوح بالاتر API استفاده کنید.
-
فایل src/MainActivity.java را برای افزودن کد Notification تغییر دهید.
-
لایه ی XML فایل res/layout/activity_main.xml را تغییر داده و اگر لازم است مولفه ی GUI به آن اضافه کنید.
-
برنامه را اجرا کنید و یک دستگاه اجرایی اندروید انتخاب کرده و برنامه را روی آن نصب کنید و نتایج را بررسی کنید.
در اینجا محتوای MainActivity.javaرا می بینید.
package com.PRG.Notification;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Typeface;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import static java.lang.System.currentTimeMillis;
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(R.drawable.noti,tittle,System.currentTimeMillis());
PendingIntent pending= PendingIntent.getActivity(getApplicationContext(), 0, new Intent(), 0);
notify.setLatestEventInfo(getApplicationContext(),subject,body,pending);
notif.notify(0, notify);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
در اینجا محتوای activity_main.xml می باشد.
<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/7gt;
در زیر محتوای AndroidManifest.xml را مشاهده می کنید.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.PRG.Notification " >
<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>
اجازه بدهید برنامه ی Notification شما را اجرا کنیم. فرض می کنیم که دستگاه موبایل اندروید خود را به کامپیوتر متصل کرده اید. برای اجرای برنامه از Eclipse، یکی ازفایل های فعالیت پروژه را باز کرده و روی آیکن Run از تولبار کلیک کنید.
موبایل خود را به عنوان یک گزینه انتخاب کرده و سپس آن را بررسی کنید.
- نوشته شده توسط سعید نوشادی
- بازدید: 6532