web-dev-qa-db-ja.com

Androidのローカル通知?

IOSでは、アプリがバックグラウンドにあるときに「ローカル通知」を使用して、何かが発生したこと、ユーザーが注意を払う必要があることをユーザーに通知します。

ローカル通知...アプリがフォアグラウンドで実行されていなくても、アプリで新しいデータが利用可能になったときにユーザーに通知します。たとえば、メッセージングアプリは新しいメッセージがいつ到着したかをユーザーに通知し、カレンダーアプリはユーザーに今後の予定を通知します。

Apple dev-ローカルおよびリモート通知の概要

[アプリ自体が新しいデータを提供している場合は「ローカル」です。リモートサーバーが更新を送信している場合は「リモート」。]

Androidに同等のものはありますか?

45
Arsalan Haider

古いAPIも対象とする場合は、NotificationCompat.Builderを使用します。

    Intent intent = new Intent(ctx, HomeActivity.class);
    PendingIntent contentIntent = PendingIntent.getActivity(ctx, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);

    NotificationCompat.Builder b = new NotificationCompat.Builder(ctx);

    b.setAutoCancel(true)
     .setDefaults(Notification.DEFAULT_ALL)
     .setWhen(System.currentTimeMillis())         
     .setSmallIcon(R.drawable.ic_launcher)
     .setTicker("Hearty365")            
     .setContentTitle("Default notification")
     .setContentText("Lorem ipsum dolor sit amet, consectetur adipiscing elit.")
     .setDefaults(Notification.DEFAULT_LIGHTS| Notification.DEFAULT_SOUND)
     .setContentIntent(contentIntent)
     .setContentInfo("Info");


    NotificationManager notificationManager = (NotificationManager) ctx.getSystemService(Context.NOTIFICATION_SERVICE);
    notificationManager.notify(1, b.build());
40
Sumoanand

LocalBroadcastManagerはより良いソリューションのように見えます: http://developer.Android.com/reference/Android/support/v4/content/LocalBroadcastManager.html 独自のカスタムIntentアクションを作成し、プロセスにブロードキャストし、アクティビティなどがそのインテントの受信者として登録されていることを確認してください。

5
qix

タイトル、ティッカー、アイコン、サウンドを含む単一の通知に複数行のテキストを使用するなど、ビッグデータを使用してローカル通知を起動する場合は、次のコードを使用します..役立つと思います。

   Intent notificationIntent = new Intent(context,
            ReminderListActivity.class);



    notificationIntent.putExtra("clicked", "Notification Clicked");
    notificationIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP
            | Intent.FLAG_ACTIVITY_SINGLE_TOP); // To open only one activity


        // Invoking the default notification service 

        NotificationManager mNotificationManager;
        NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(
                context);
        Uri uri = RingtoneManager
                .getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
        mBuilder.setContentTitle("Reminder");
        mBuilder.setContentText("You have new Reminders.");
        mBuilder.setTicker("New Reminder Alert!");
        mBuilder.setSmallIcon(R.drawable.clock);
        mBuilder.setSound(uri);
        mBuilder.setAutoCancel(true);

        // Add Big View Specific Configuration 
        NotificationCompat.InboxStyle inboxStyle = new NotificationCompat.InboxStyle();
        String[] events = null;

            events[0] = new String("Your first line text ");
            events[1] = new String(" Your second line text");



        // Sets a title for the Inbox style big view
        inboxStyle.setBigContentTitle("You have Reminders:");

        // Moves events into the big view
        for (int i = 0; i < events.length; i++) {
            inboxStyle.addLine(events[i]);
        }

        mBuilder.setStyle(inboxStyle);

        // Creates an explicit intent for an Activity in your app 
        Intent resultIntent = new Intent(context,
                ReminderListActivity.class);

        TaskStackBuilder stackBuilder = TaskStackBuilder
                .create(context);
        stackBuilder.addParentStack(ReminderListActivity.class);


        // Adds the Intent that starts the Activity to the top of the stack


        stackBuilder.addNextIntent(resultIntent);
        PendingIntent resultPendingIntent = stackBuilder
                .getPendingIntent(0, PendingIntent.FLAG_CANCEL_CURRENT);

        mBuilder.setContentIntent(resultPendingIntent);
        mNotificationManager = (NotificationManager) context
                .getSystemService(Context.NOTIFICATION_SERVICE);


        // notificationID allows you to update the notification later  on.


        mNotificationManager.notify(999, mBuilder.build());
4
Pratibha Sarode