2014-12-03 1 views
1

Есть ли способ установить NotificationCompat.BigTextStyle() в обработчике уведомлений по умолчанию для синтаксиса Parse? Когда я отправляю одно нажатие, содержащее поле «предупреждение», sdk показывает уведомление со стилем по умолчанию и текстом, который он обрезает.Parse - Android - текст, обрезанный по умолчанию push-уведомлением

ответ

1

Вы должны настроить свою «данные». Вместо обычного

Parse.Push.send({ 
    channels: [ "Giants", "Mets" ], 
    data: { 
    alert: "The Giants won against the Mets 2-3." 
    } 
}, { 
    success: function() { 
    // Push was successful 
    }, 
    error: function(error) { 
    // Handle error 
    } 
}); 

Вы должны выработать свой полезный груз, чтобы что-то вроде этого, например:

var myData = { 

    action:"com.yourcompany.blahblah.UPDATE_SOMETHING", // take note of this!!! 
    message:"You are awesome", 
    somethingelse:3 
}; 

// Note: some "data" field names are reserved 

    Parse.Push.send({ 
    channels: [ "Mets" ], 
    data: myData 
}, { 
    success: function() { 
    // Push was successful 
    }, 
    error: function(error) { 
    // Handle error 
    } 
}); 

Вы можете увидеть это в документации: https://parse.com/docs/push_guide#options-data/JavaScript

А затем, ваш клиент Android:

1.) Удалите эти метки в файле манифеста

<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> 
<receiver android:name="com.parse.ParsePushBroadcastReceiver" 
    android:exported="false"> 
    <intent-filter> 
    <action android:name="com.parse.push.intent.RECEIVE" /> 
    <action android:name="com.parse.push.intent.DELETE" /> 
    <action android:name="com.parse.push.intent.OPEN" /> 
    </intent-filter> 
</receiver> 

2.) Создайте собственный BroadcastReceiver (я предлагаю тип WakefulBroadcastReceiver), который затем запускает IntentService для отображения уведомления. Этот радиовещательный приемник прислушивается к действию, указанного ранее в пользовательской полезной нагрузки данных:

<receiver 
    android:name="com.yourcompany.blahblah.MyCustomReceiver" 
    android:enabled="true" 
    android:exported="false" > 
    <intent-filter> 
     <action android:name="com.yourcompany.blahblah.UPDATE_SOMETHING" /> 
    </intent-filter> 
</receiver> 

3.) В вашем IntentService (конечно, зарегистрированном в вашем файле манифеста, а), вы можете извлечь «отжатом» данные в формате JSON из массовки намерение, и ремеслу, однако вы хотите, чтобы появиться ваше уведомление:

@Override 
protected void onHandleIntent(Intent intent) { 

     final Bundle extras = intent.getExtras(); 
     final JSONObject json = new JSONObject(extras.getString("com.parse.Data")); 
     // keys matching your myData payload object names/keys 
     final String message = json.getString("message"); 
     final int somethingelse = json.getInt("somethingelse"); 

     // YOUR code to compose the Notification however you want it to appear follows here 

EDIT:

Другой метод:

1.) Создайте новый класс, который расширяет ParsePushBroadcastReceiver (https://parse.com/docs/android/api/com/parse/ParsePushBroadcastReceiver.html)

2.) замещают методы особенно getNotification (Context контекст, Намерение Намерение)

3.) сочинить ваше уведомление BigStyle оттуда

+0

Я знаю это, и я использую эту функцию. Но когда вы отправляете простой push с платформы Parse, полезная нагрузка по умолчанию содержит поле «alert» по умолчанию. Мой вопрос указывал на то, что мне нужно обработать обработчик по умолчанию Parse, который может использовать BigContentView. Или, если это невозможно, переопределите обработчик по умолчанию, но я так и не нашел этого. –

+0

Я вижу, я обновил свой ответ, чтобы попробовать другой способ сделать это (все еще использую полезную нагрузку по умолчанию) – alpinescrambler

+0

Я попробую и дам вам знать, спасибо. –