4

Я выполнил толчок уведомление в моем андроида приложения:Broadcast приемник толчок уведомление

В моем главном классе:

// PUSH 
Parse.initialize(this, applicationId, clientKey); 
PushService.setDefaultPushCallback(this, SlidingMenuActivity.class); 
ParseInstallation.getCurrentInstallation().saveInBackground(); 
ParseAnalytics.trackAppOpened(getIntent()); 

В моей Manifest.xml:

<!-- PUSH --> 
<service android:name="com.parse.PushService" /> 

<receiver android:name="com.parse.ParseBroadcastReceiver" > 
    <intent-filter> 
      <action android:name="android.intent.action.BOOT_COMPLETED" /> 
      <action android:name="android.intent.action.USER_PRESENT" /> 
    </intent-filter> 
</receiver> 

Когда я открываю приложение, я получаю уведомление. Я нажимаю на кнопку назад и закрываю приложение. Я все еще получаю уведомление примерно за 1 час. Через час я отправляю три уведомления и никаких уведомлений не появляется. Поэтому я перезапускаю приложение и появляюсь три уведомления уведомления.

Я предполагаю, что мой вещательный приемник был воссоздан. Почему мой андроид убивает моего получателя уведомлений?

Как я могу это исправить?

+0

Вопрос не совсем ясен. Вы используете Push или пользовательские трансляции? Это разные вещи. Вы должны дать более подробную информацию в своем вопросе. – Fedor

+0

Возможно, вы отмените регистрацию своего широковещательного приемника в своем onPause(). Вы? – Maddy

+0

как у достижения пользовательского вещания ресивер работать в вашем приложении @haythem souissi – Erum

ответ

0

попробовать мое решение он работал для меня: связать вещательный приемник к службе, добавив

public void onReceive(Context context, Intent intent) { 
    //add the following 
    Intent e = new Intent(context, urservice.class); 
    context.startService(e); 
} 

затем зарегистрировать приемник в службе OnCreate(), как так

@Override 
public void onCreate() { 
    super.onCreate(); 
    IntentFilter filter = new IntentFilter(Intent.BOOT_COMPLETED); 
    filter.addAction(Intent.USER_PRESENT); 
    BroadcastReceiver mReceiver = new ParseBroadcastReceiver(); 
    registerReceiver(mReceiver, filter); 
} 

то просто удалите свой «трансляционный приемник» из манифеста, в конце концов, вы хотите, чтобы служба проживала как можно дольше ., ну, тогда вам также нужны 2 кода для службы в вашем int onStartCommand (Intent intent, int flags, int startId), убедитесь, что вы ставите fo llowing

mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); 

    Intent bIntent = new Intent(urservice.this, urmain.class);  
    PendingIntent pbIntent = PendingIntent.getActivity(urservice.this, 0 , bIntent, 0); 

    NotificationCompat.Builder bBuilder = 
      new NotificationCompat.Builder(this) 
       .setSmallIcon(R.drawable.ic_launcher) 
       .setContentTitle("title") 
       .setContentText("sub title") 
       .setAutoCancel(true) 
       .setOngoing(true) 
       .setContentIntent(pbIntent); 
    barNotif = bBuilder.build(); 
    this.startForeground(1, barNotif); 
// also the following code is important 
return Service.START_STICKY; 

Теперь сделайте возврат липким в конце своей команды onstart. не стесняйтесь спрашивать меня.

надежды я помог ,,, удачи. :)

+0

почему -1 после того, как пользователь четко дал ответный ответ ????? – aljuaid86

+0

в любом случае я рад, что помог тебе схайтом. – aljuaid86

0

Перемещено ли устройство? Получается ли это на память? Все эти вещи вы должны учитывать. Возможно, вам придется удерживать блокировку следования или запустить службу, которая возвращает значение, чтобы перезапустить липкий.

Смежные вопросы