2017-02-14 2 views
0

앱이 작동하지 않아도 새 메시지를받을 때 알림을 제공하는 안드로이드 응용 프로그램을 만들어야합니다. firebase 데이터베이스를 사용하고 있습니다. firebase datasnapshot에 대한 코드를 작성했지만 앱이 작동 할 때만 작동합니다. 앱이 작동하지 않는 경우이 코드를 실행해야합니다.알림을위한 끝없는 배경 서비스 만들기

 Mref=new Firebase("https://iyutue-30s49.firebaseio.com/"); 
    Mref.addChildEventListener(new ChildEventListener() { 
     @Override 
     public void onChildAdded(DataSnapshot dataSnapshot, String s) { 

      String value=dataSnapshot.getValue(String.class); 
      myDb.GetAllData(); 
      String idd= String.valueOf(myDb.id); 
      if (value.equals(idd)==true){ 
       NotificationCompat.Builder builder=new NotificationCompat.Builder(getApplicationContext()); 
       builder.setSmallIcon(R.drawable.ic_tab_profile); 
       builder.setContentTitle("plaese").setContentText("jijo"); 
       Intent intent =new Intent(getApplicationContext(),MainActivity.class); 
       TaskStackBuilder stackBuilder=TaskStackBuilder.create(getApplicationContext()); 
       stackBuilder.addParentStack(MainActivity.this); 
       stackBuilder.addNextIntent(intent); 
       PendingIntent pendingIntent=stackBuilder.getPendingIntent(0,PendingIntent.FLAG_UPDATE_CURRENT); 
       builder.setContentIntent(pendingIntent); 
       NotificationManager NM=(NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE); 
       NM.notify(0,builder.build()); 
      } 
     } 

     @Override 
     public void onChildChanged(DataSnapshot dataSnapshot, String s) { 

     } 

     @Override 
     public void onChildRemoved(DataSnapshot dataSnapshot) { 

     } 

     @Override 
     public void onChildMoved(DataSnapshot dataSnapshot, String s) { 

     } 

     @Override 
     public void onCancelled(FirebaseError firebaseError) { 

     } 
    }); 

나는 응용 프로그램도 작동하지 않는 경우 백그라운드에서이 코드를 실행 advnace

+2

앱이 활성화되어 있지 않은 상태에서 연결을 유지하면 배터리가 심각하게 소모되어 사용자 환경에 해를 끼칠 수 있습니다. 대신 Firebase Cloud Messaging을 사용하여 앱을 열지 않은 사용자의 이벤트를 알리는 것이 좋습니다. –

+0

@ FrankvanPuffelen하지만 여기서는 firebase를 사용합니다. 그러나 앱이 활성화되어 있지 않으면이 코드는 작동하지 않습니다. –

+0

과 같은 기본 애플리케이션과 whatzaap과 같은 다른 주요 애플리케이션도 백그라운드 프로세스 및 서비스를 항상 실행합니다. 최선의 방법이 아닌가? –

답변

1

이 코드 조각은 안드로이드 구성 요소 내에서 실행되는 포장 할 필요가 나에게 감사를 도와주세요 필요가있다. 그것은 정말로 당신의 방아쇠가 무엇인지에 달려 있습니다. 이것이 백그라운드에서 수행하기를 원하는 것이라면 service 또는 broadcastreciever을 사용하는 것이 가장 좋습니다. 내가 언급했듯이, 그것은 실제로 방아쇠에 달려있다.

예를 들어 새로운 SMS를 감지했을 때 축배를 보여줘야하는 앱이 있다고 가정 해 보겠습니다. 이 경우 브로드 캐스트에 등록해야하며 SMS가 도착하면 시스템에서 브로드 캐스트 리시버를 호출합니다. 수신기에서 자신의 논리를 넣을 수 있습니다 (예를 들면 축배를 보여주세요).

+0

제게 사례에 대한 제안을 해주십시오. –

+0

트리거 포인트는 무엇입니까? 코드를 실행하고 싶습니까? 분명히 루프 나 무언가에서이 코드를 계속 실행하고 싶지 않을 것입니다. – Dibzmania

+0

응용 프로그램이 활성화되지 않은 경우에도 새로운 데이터가 firebase에 삽입 될 때이 코드를 실행해야합니다. –