2016-12-10 8 views
1

私はこのオプションをフォロー/アンフォローユーザーがあるアンドロイドアプリを開発しています。誰かが彼に従うと、FirebaseDatabaseのカウンターは1増加し、誰かが彼のフォローを解除すると、カウンターは1ずつ減少します。火災基地の値が増減したかどうかを知る方法?

私は誰かが彼に従うとすぐにサービスを開始することによって彼に従うたびにユーザーに通知しようとしていますアプリを終了してコードをServiceに書き込んでください。ここで

は、サービスのonCreate()のコードです:

firebaseDatabaseFollowers.child("***").child("***").child("followers").addValueEventListener(new ValueEventListener() { 
      @Override 
      public void onDataChange(DataSnapshot dataSnapshot) { 

       b = sharedPref2.getBoolean(SettingsActivity.KEY_PREF_NOTIF_FOLLOW, true); 
       Toast.makeText(getBaseContext(), "b: " + String.valueOf(b), Toast.LENGTH_SHORT).show(); 

       if (dataSnapshot.getValue() != null) { 

        if (String.valueOf(b).equals("true")) { 

         final int m = (int) ((new Date().getTime()/1000L) % Integer.MAX_VALUE); 

         Intent notificationIntent = new Intent(getBaseContext(), NotificationARBroadcastReceiver.class); 
         notificationIntent.putExtra(NotificationARBroadcastReceiver.NOTIFICATION, getNotificationService()); 
         PendingIntent pendingIntent = PendingIntent.getBroadcast(getBaseContext(), m, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT); 
         AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); 
         alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, 0, pendingIntent); 

        } 
       } else { 
        Toast.makeText(getBaseContext(), "database is null", Toast.LENGTH_SHORT).show(); 
       } 
      } 

      @Override 
      public void onCancelled(DatabaseError databaseError) { 

      } 
     }); 

通知部が正常に動作しています。唯一の問題は、ユーザーがユーザーのフォローを解除しても通知が配信され、これが発生しないようにすることです。

したがって、FirebaseDatabaseのカウンターが増減した場合、それに応じて通知することができますか?

お知らせください。

答えて

1

ユーザーが現在持っているフォロワーの数を保持するグローバル変数をアプリケーションに格納します。データベースが新しい情報を送信するときに、新しい番号>または<の保存番号を使用して保存した番号と比較することができます。しかし、ユーザーがオフラインになってオンラインに戻ったときに、1人のユーザーがフォローされず、2人がフォローされたとすると、これは問題になる可能性があります。この場合、ユーザーは+1のフォロワー通知を受け取るだけです。私が推薦するかもしれないのは、Instagramのように、それに続くユーザのユーザ名を送ることです。たとえば、「John Smithがあなたに従った」とします。または "James Smithはあなたをフォローしていない!"

+0

私は 'SharedPreferences'に'ユーザーが現在持っているフォロワーの数を保持するグローバル変数 'を保存するはずですか? –

+0

私はAndroidでプログラミングしていないので、その意味がわかりません - ごめんなさい!変数を保存して、必要などのクラスでもアクセスできるようにするのがもっと理にかなっていると思います(一般対個人) –

関連する問題