是否可以在离线模式下发送通知?

时间:2017-11-21 06:45:05

标签: android push-notification android-sqlite

我一直在搜索它,但我没有得到任何有用的信息。

  • 我正在尝试开发一个Android应用程序。在这个应用程序中,我将创建一个管理员用户的旅行。我将拥有庞大的客户端用户,我想向他们发送有关我创建的旅行的通知。
  • 用户将选择特定时间查看通知。我希望在指定时间显示通知,但用户当时处于离线状态。
  • 通知将从我的手机SQLite获取Database的数据。

我不知道该怎么做。我已经google了很多但是没有任何想法或解决方案。

如果您有任何建议请帮助我,请建议我任何链接或其他教程等,

提前致谢。

1 个答案:

答案 0 :(得分:1)

  1. 如果您创建任何行程,请将该信息保存在服务器端数据库中。

  2. 在您的应用中,您需要BroadcastReceiver来检测用户现在是否已连接到互联网。然后创建一个服务器request并获取您最近创建的行程信息作为响应。 Internet Connection Detection code link

  3. 将用户设备本地信息保存在SQLite数据库中。

  4. 现在,您必须使用AlarmManager默认情况下在特定时间内显示通知或用户设置时间。 Alarm Example

  5. 您将在BroadcastReceiver中显示声音播放地点的通知。

  6. 通知代码。

    private void showNotification(Context context){
    
    //Vibrator v = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
    //v.vibrate(500);
    
    NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context);
    //Setting icon, title, message
    mBuilder.setSmallIcon(R.drawable.notification);
    mBuilder.setContentTitle("data form sqlite");
    mBuilder.setContentText("data form sqlite.");
    
    //Setting sound
    Uri alarmSound = Uri.fromFile(new File("file:///android_asset/noficicatin.mp3"));//RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
    mBuilder.setSound(alarmSound);
    MediaPlayer mp = new MediaPlayer();
    try {
        mp.setDataSource(new File("file:///android_asset/noficicatin.mp3").getAbsolutePath());
        mp.start();
    } catch (IllegalArgumentException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (SecurityException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IllegalStateException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    
    //mBuilder.setAutoCancel(true);
    //Setting Vibratortion
    long[] pattern = {500,500,500,500,500,500,500,500};
    mBuilder.setVibrate(pattern);
    
    NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
    mNotificationManager.notify(notificationID, mBuilder.build());
    
    
    }
    
  7. 我希望你知道show create server request,get response和SQLite database use。祝你好运。