2016-12-26 12 views
-2

通知サービスを作成すると、新しいニュースストアについてユーザーに通知することができます。JSONのAndroid通知サービス

私のアプリにJSON API(https://newsapi.org/)のニュースが届いていて、彼には見たことのない新しい物語がある場合にユーザーに通知する必要があります。

+0

Uがアンドロイド(GCMまたはFCM)でプッシュ通知の概念をチェック持ち –

+0

@ShanmugapriyaD、。あなたは、放送受信装置と共にプッシュ通知のためにGCMまたはFCMを使用する必要が右です。 – Radhey

答えて

0

はい、ここFireBase services.Follow私の手順を使用してアンドロイドにプッシュ通知を作成するのは簡単です:

  • 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を追加を貼り付け実行しますプラグイン。
  • アクティビティクラスのString token = FirebaseInstanceId.getInstance().getToken();とします。このサイトでは、必要なパラメータを与えることによってこれをテストするには
  • :私のコード ザッツベータでhttp://apns-gcm.bryantan.info/
  • 0

    ルックを.. `パブリッククラスの通知は、Service { 文字列datanewsを拡張。 文字列titlenotif; 文字列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; 
    } 
    

    } `