Qiscus provide everything you need to power up your app with chats. And it's now made simple.
Changelog :
Changelog :
Note :
Changelog :
Changelog :
implementation call API refresh token if the auto-refresh token is false from BE (by default is true), request contact us for setting auto-refresh false
for implementation manually calling the API refresh token, can use this code.
@Subscribe
public void onRefreshToken(QiscusRefreshTokenEvent event) {
if (event.isTokenExpired()) {
if auto refresh token false from be, you need to call api refresh token manually
//callRefreshToken();
} else if (event.isUnauthorized()) {
//need to force logout
logoutUser();
} else {
// do somethings
}
}
private void callRefreshToken() {
QiscusCore.refreshToken(new QiscusCore.SetRefreshTokenListener() {
@Override
public void onSuccess(QiscusRefreshToken refreshToken) {
}
@Override
public void onError(Throwable throwable) {
}
});
}
private void logoutUser() {
if (QiscusCore.hasSetupUser()) {
Qiscus.clearUser();
}
}
***Note :
Changelog :
Changelog :
for example :
QiscusAccount account = QiscusCore.getQiscusAccount();
QiscusApi.getInstance().refreshToken(account.getEmail(), account.getRefreshToken())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(QiscusCore::saveRefreshToken, throwable -> {
QiscusErrorLogger.print(throwable);
});
Changelog :
Note:
for example to show popup :
AlarmManager alarmMgr = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
if (!alarmMgr.canScheduleExactAlarms()) {
AlertDialog.Builder alertBuilder = new AlertDialog.Builder(this);
alertBuilder.setCancelable(true);
alertBuilder.setTitle("Permission necessary");
alertBuilder.setMessage("Schedule Exact Alarm permission is necessary for realtime");
alertBuilder.setPositiveButton(android.R.string.yes, (dialog, which) -> {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
Intent intent = new Intent(
ACTION_REQUEST_SCHEDULE_EXACT_ALARM,
Uri.parse("package:" + this.getPackageName())
);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
this.getApplicationContext().startActivity(intent);
}
});
AlertDialog alert = alertBuilder.create();
alert.show();
}
}
Improve appConfig Sync and SyncEvent