来自JSON的Android Notification Service

时间:2016-12-26 10:26:22

标签: java android json service notifications

如何制作通知服务,通知用户一些新的新闻报道?

我从JSON API(https://newsapi.org/)获取新闻到我的应用,如果有任何他没见过的新故事,我想要显示用户通知。

2 个答案:

答案 0 :(得分:0)

是的,使用FireBase服务在Android中创建推送通知很容易。请按照以下步骤进行操作:

  • https://firebase.google.com/docs/notifications/android/console-audience到这里在firebase控制台中创建你的第一个项目。
  • 您将获得一个已下载的文件并将其粘贴到您的应用模块中并执行该网站提供的说明
  • 在project.copy中创建这些文件并粘贴1。https://github.com/firebase/quickstart-android/blob/master/messaging/app/src/main/java/com/google/firebase/quickstart/fcm/MyFirebaseInstanceIDService.java
    2。https://github.com/firebase/quickstart-android/blob/master/messaging/app/src/main/java/com/google/firebase/quickstart/fcm/MyFirebaseMessagingService.java
  • 添加必要的权限和gradle插件。
  • 在Activity类中调用此String token = FirebaseInstanceId.getInstance().getToken();
  • 要通过在此网站中提供所需参数来对此进行测试:http://apns-gcm.bryantan.info/
  • 答案 1 :(得分:0)

    看看我的代码 多数民众赞成.. `public class Notification extends Service {     String datanews;     String titlenotif;     String destnotif;     MyAsynk asynk;

    @Override
    public void onCreate() {
        super.onCreate();
        Timer timer = new Timer();
        timer.schedule(new UpdateTimeTask(), 0, 1800000); //тикаем каждые 30 мinute без задержки 1800000
    
    }
    //задача для таймера
    //Проверяем на новую запись.
    class UpdateTimeTask extends TimerTask {
        public void run() {
            asynk = new MyAsynk();
            asynk.execute();
            createNotification(getApplicationContext());//пушим уведомление
        }
    }
    class MyAsynk extends AsyncTask<Void,Void,StringBuilder> {
        @Override
        //работа в бекграунде
        protected StringBuilder doInBackground(Void... voids) {
            StringBuilder stringBuilder = new StringBuilder();
            String key = "YOUR_KEY";
            try {
                URL url = new URL("YOUR_URL_HERE" + key);
                URLConnection uc = url.openConnection();
                uc.connect();
                BufferedInputStream in = new BufferedInputStream(uc.getInputStream());
                int ch;
                while ((ch = in.read()) != -1) {
                    stringBuilder.append((char) ch);
                }
            } catch (Exception e) {
            }
            return stringBuilder;
        }
        @Override
        protected void onPostExecute(StringBuilder stringBuilder) {
    
            try {
                JSONObject jsonObject = new JSONObject(stringBuilder.toString());
                JSONArray array = jsonObject.getJSONArray("articles");
                for (int i = 0; i < array.length(); i++) {
                    JSONObject object = array.getJSONObject(i);
                    String title = object.getString("title");
                    String desc = object.getString("description");
                    String newsdata = object.getString("publishedAt");
                    datanews = newsdata;
                    titlenotif = title;
                    destnotif = desc;
                }
            }
            catch (Exception e){
            }
        }
    }
    private void createNotification(Context context) {
        NotificationManager manager = (NotificationManager) context.getSystemService(NOTIFICATION_SERVICE);
        NotificationCompat.Builder ncBuilder = new NotificationCompat.Builder(context);
        Intent intent = new Intent(this, MainActivity.class);
        PendingIntent pIntent = PendingIntent.getActivity(this, 0, intent, 0);
        ncBuilder.setVibrate(new long[]{500});
        ncBuilder.setLights(Color.WHITE, 3000, 3000);
        ncBuilder.setSound(Settings.System.DEFAULT_NOTIFICATION_URI);
        ncBuilder.setContentIntent(pIntent);
        ncBuilder.setContentTitle(titlenotif + "");
        ncBuilder.setContentText(destnotif + "");
        ncBuilder.setTicker("You have news!");
        ncBuilder.setSmallIcon(R.drawable.news_icon);
        ncBuilder.setAutoCancel(true);
    
        manager.notify((int)System.currentTimeMillis(),ncBuilder.build());
    }
    public IBinder onBind(Intent arg0) {
        return null;
    }
    

    }`