在android中根据用户当前设备​​位置生成推送通知

时间:2015-09-11 13:11:46

标签: android android-studio push-notification location

我可以从服务器获取推送通知,但是当用户设备位置在纬度和经度上发生变化时,我的应用应该会收到推送通知。

案例1:

我必须将设备纬度和经度值发送到服务器,并且必须在用户设备当前位置发生变化时发送推送通知。(从位置A移动到位置B以获取通知)即使应用程序在后台运行,app也是如此需要配置系统操作系统才能获得推动。

案例2:

我可以在点击推送通知时移动到活动但我需要如果我从服务器点击第一个通知收到两个推送通知它必须采取FirstActivity并点击第二个推送通知采取到secondActivity。 如何识别哪个推送通知重定向到活动。

GCMNotificationIntentService:

中显示推送通知的代码
private void createNotification(String msg){
    Log.d(TAG, "Preparing to send notification...: " + msg);
    NotificationManager notificationManager = (NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE);
    Notification notification = new Notification(R.drawable.offer, "GCM Notification", System.currentTimeMillis());
    Intent notificationIntent = new Intent(this, FirstActivity.class);
    notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
    PendingIntent intent = PendingIntent.getActivity(this, NOTIFICATION_ID,notificationIntent, 0);
    notification.setLatestEventInfo(this, "Message From GCM", msg, intent);
    notification.flags |= Notification.FLAG_AUTO_CANCEL;
    notificationManager.notify(NOTIFICATION_ID, notification);
    NOTIFICATION_ID = NOTIFICATION_ID + 1;
}

1 个答案:

答案 0 :(得分:2)

1.您需要创建将在后台运行的服务。此外,您需要以某种方式从服务器向电话发送通知并处理它。但它可以在没有服务器的情况下实现,你可以只听 LocationListener.OnLocationChanged

2.根据第二个问题,您可以在显示通知之前准备好意图,将其分配给通知,点击后,您将直接转到此活动。

Intent intent = //prepare your intent
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_IMMUTABLE);
NotificationCompat.Builder builder = new NotificationCompat.Builder(this).setContentIntent(contentIntent);
notificationManager.notify(notificationId, builder.build());