Проблемы с push-уведомлениями Sinch

Эй, я перепробовал все учебники, которые я мог найти в Интернете, говорящие о том, чтобы позволить sinch sdk управлять push-уведомлениями Android с помощью

     @Override
public int onStartCommand(Intent intent, int flags, int startId) {

        currentUserId = ParseUser.getCurrentUser().getObjectId();

    if (currentUserId != null && !isSinchClientStarted()) {
        startSinchClient(currentUserId);
        Log.d("pp", currentUserId);
    }

 //        make sure you have created a SinchClient
//        if (SinchHelpers.isSinchPushIntent(broadcastIntent)) {
//            NotificationResult result = sinchClient.relayRemotePushNotificationPayload(broadcastIntent);
//        }

    broadcaster = LocalBroadcastManager.getInstance(this);

    return super.onStartCommand(intent, flags, startId);
}

public void startSinchClient(String username) {
    sinchClient = Sinch.getSinchClientBuilder().context(this)
            .userId(username)
            .applicationKey(APP_KEY)
            .applicationSecret(APP_SECRET).environmentHost(ENVIRONMENT).build();

    sinchClient.addSinchClientListener(this);

    sinchClient.setSupportMessaging(true);
    sinchClient.setSupportManagedPush(true);
    sinchClient.setSupportActiveConnectionInBackground(true);

    sinchClient.checkManifest();

//        sinchClient.registerPushNotificationData("goodies-59e3".getBytes());

    sinchClient.start();
}

private boolean isSinchClientStarted() {
    return sinchClient != null && sinchClient.isStarted();
}

@Override
public void onClientFailed(SinchClient client, SinchError error) {
    broadcastIntent.putExtra("success", false);
    broadcaster.sendBroadcast(broadcastIntent);

    sinchClient = null;
}

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


person Nappy    schedule 11.01.2016    source источник
comment
опубликуйте свой код, что вы пробовали.   -  person Anjali Tripathi    schedule 11.01.2016
comment
@AnjaliTripathi я обновил свой вопрос, пожалуйста, помогите мне здесь   -  person Nappy    schedule 11.01.2016


Ответы (2)


Пожалуйста, выполните следующие действия:

1) Разрешение в манифесте:

<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE"/>
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<permission android:name="com.sinch.messagingtutorial.app.permission.C2D_MESSAGE"
                android:protectionLevel="signature" />
<uses-permission android:name="com.sinch.messagingtutorial.app.permission.C2D_MESSAGE" />
<uses-permission
        android:name="com.google.android.c2dm.permission.RECEIVE" />

2) Добавьте сервисную библиотеку Google Play в свой проект, а также создайте идентификатор проекта вашего проекта в консоли разработчика Google Play.

3) Используя идентификатор вашего проекта, объявите следующее в LoginActivity.java onCreate:

final GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(getApplicationContext());
    class RegisterGcmTask extends AsyncTask<Void, Void, String> {
        String msg = "";
        @Override
        protected String doInBackground(Void... voids) {
            try {
                msg = gcm.register("your-project-number");
            } catch (IOException ex) {
                msg = "Error :" + ex.getMessage();
            }
                return msg;
        }
        @Override
        protected void onPostExecute(String msg) {
            intent = new Intent(getApplicationContext(), ListUsersActivity.class);
            serviceIntent = new Intent(getApplicationContext(), MessageService.class);
            serviceIntent.putExtra("regId", msg);
            startActivity(intent);
            startService(serviceIntent);
        }
    }

Для получения более подробной информации см. https://www.sinch.com/tutorials/send-push-notifications-android-messaging-app-using-gcm/ ссылка

и для демонстрации см. ссылку Github https://www.sinch.com/tutorials/send-push-notifications-android-messaging-app-using-gcm/

person Anjali Tripathi    schedule 12.01.2016
comment
Спасибо @Anjali, я попытался реализовать этот учебник, и после этого, когда я открываю приложение в первый раз, я не получаю ошибок, но когда я выхожу из приложения, я получаю сообщение об ошибке с журналами, говорящими о том, что вызвано: java.lang.NullPointerException: Попытка вызвать виртуальный метод 'java.lang.String android.content.Intent.getStringExtra(java.lang.String)' для нулевой ссылки на объект Это относится к строке, говорящей:: regId = намерение.getStringExtra(regId); Пожалуйста, я могу получить некоторую помощь в этом? - person Nappy; 23.01.2016

Я бы удостоверился, что ваше приложение имеет следующие разрешения для получения push-сообщений (и разрешение WAKE_LOCK для продолжения выполнения после получения push-уведомления).

<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE"/> <uses-permission android:name="android.permission.WAKE_LOCK"/> <permission android:name="YOUR.APP.PACKAGENAME.gcm.permission.C2D_MESSAGE" android:protectionLevel="signature"/> <uses-permission android:name="YOUR.APP.PACKAGENAME.gcm.permission.C2D_MESSAGE"/>

Я также рекомендую просмотреть эту ссылку для получения push-уведомлений GCM: https://developers.google.com/cloud-messaging/#manifest

Надеюсь это поможет!

person Caren García    schedule 11.01.2016