Не получать BroadcastReceiver, используя пример sinch

Я попытался использовать этот пример в своем приложении, чтобы иметь мгновенный обмен сообщениями https://www.sinch.com/tutorials/android-messaging-tutorial-using-sinch-and-parse/ Я вызываю широковещательный приемник для прослушивания трансляции из мой сервис, но он никогда не преуспевает или терпит неудачу. Мой диалог прогресса продолжает вращаться вечно, и тосты не отображаются.

Мой сервис:

public class MessageService extends Service implements SinchClientListener {
...
private LocalBroadcastManager broadcaster;
private Intent broadcastIntent = new Intent("il.ac.app.my.Activity.ListUsersActivity");
...
@Override
public int onStartCommand(Intent intent, int flags, int startId) {

    APP_KEY = getResources().getString(R.string.sinch_key);
    APP_SECRET = getResources().getString(R.string.sinch_secret);
    ENVIRONMENT = getResources().getString(R.string.sinch_hostname);

    //get the current user id from Parse
    String currentUserId = ParseUser.getCurrentUser().getObjectId();
    if (currentUserId != null && !isSinchClientStarted()) {
        startSinchClient(currentUserId);
    }
    broadcaster = LocalBroadcastManager.getInstance(this);
    return super.onStartCommand(intent, flags, startId);
}
...
@Override
public void onClientStarted(SinchClient client) {
    broadcastIntent.putExtra("success", true);
    broadcaster.sendBroadcast(broadcastIntent);

    client.startListeningOnActiveConnection();
    messageClient = client.getMessageClient();
}

Моя деятельность:

private void showSpinner() {
    progressDialog = new ProgressDialog(this);
    progressDialog.setTitle("Loading");
    progressDialog.setMessage("Please wait...");
    progressDialog.show();

    //broadcast receiver to listen for the broadcast from MessageService
    receiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            Boolean success = intent.getBooleanExtra("success", false);
            progressDialog.dismiss();
            if (!success) {
                Toast.makeText(getApplicationContext(), "Messaging service failed to start", Toast.LENGTH_LONG).show();
            }
            else {
                Toast.makeText(getApplicationContext(), "Messaging service started", Toast.LENGTH_LONG).show();
            }
        }
    };

    LocalBroadcastManager.getInstance(this).registerReceiver(receiver, new IntentFilter("il.ac.app.my.Activity.ListUsersActivity"));
}

2 ответа

Решение

В LoginActivity попробуйте запустить ListUsersActivity перед службой Sinch следующим образом:

 startActivity(intent);
 startService(serviceIntent);

Я попытался использовать этот пример в своем приложении, чтобы иметь мгновенный обмен сообщениями https://www.sinch.com/tutorials/android-messaging-tutorial-using-sinch-and-parse/ Я вызываю широковещательный приемник для прослушивания трансляции из мой сервис, но он никогда не преуспевает или терпит неудачу. Мой диалог прогресса продолжает вращаться вечно, и тосты не отображаются.

Мой сервис:

public class MessageService extends Service implements SinchClientListener {
...
private LocalBroadcastManager broadcaster;
private Intent broadcastIntent = new Intent("il.ac.app.my.Activity.ListUsersActivity");
...
@Override
public int onStartCommand(Intent intent, int flags, int startId) {

    APP_KEY = getResources().getString(R.string.sinch_key);
    APP_SECRET = getResources().getString(R.string.sinch_secret);
    ENVIRONMENT = getResources().getString(R.string.sinch_hostname);

    //get the current user id from Parse
    String currentUserId = ParseUser.getCurrentUser().getObjectId();
    if (currentUserId != null && !isSinchClientStarted()) {
        startSinchClient(currentUserId);
    }
    broadcaster = LocalBroadcastManager.getInstance(this);
    return super.onStartCommand(intent, flags, startId);
}
...
@Override
public void onClientStarted(SinchClient client) {
    broadcastIntent.putExtra("success", true);
    broadcaster.sendBroadcast(broadcastIntent);

    client.startListeningOnActiveConnection();
    messageClient = client.getMessageClient();
}
Другие вопросы по тегам