Skip to content

Releases: qiscus/qiscus-sdk-android

Qiscus Chat SDK (core) v1.6.6

06 Jun 09:34
Compare
Choose a tag to compare

Changelog :

  • Prevent Crash when connecting realtime
  • Fix Issue Refresh token in some case

Note :
**Please add this proguard when use this version


# With R8 full mode generic signatures are stripped for classes that are not
# kept. Suspend functions are wrapped in continuations where the type argument
# is used.
-keep,allowobfuscation,allowshrinking class kotlin.coroutines.Continuation
-keep,allowobfuscation,allowshrinking interface retrofit2.Call
-keep,allowobfuscation,allowshrinking class retrofit2.Response

# R8 full mode strips generic signatures from return types if not kept.
-if interface * { @retrofit2.http.* public *** *(...); }
-keep,allowoptimization,allowshrinking,allowobfuscation class <3>

Qiscus Chat SDK (core) v1.6.5

24 May 08:54
Compare
Choose a tag to compare

Changelog :

  • Prevent crash ANR when failing to connect to realtime lib

***Note:

  • please add this maven for support lib retrofit if get an error when sync gradle
maven { url 'https://oss.sonatype.org/content/repositories/snapshots' }
  • and add this proguard
# With R8 full mode generic signatures are stripped for classes that are not
# kept. Suspend functions are wrapped in continuations where the type argument
# is used.
-keep,allowobfuscation,allowshrinking class kotlin.coroutines.Continuation
-keep,allowobfuscation,allowshrinking interface retrofit2.Call
-keep,allowobfuscation,allowshrinking class retrofit2.Response

# R8 full mode strips generic signatures from return types if not kept.
-if interface * { @retrofit2.http.* public *** *(...); }
-keep,allowoptimization,allowshrinking,allowobfuscation class <3>

Qiscus Chat SDK (core) v1.6.4

02 May 16:08
5b8b50c
Compare
Choose a tag to compare

Changelog :

  • Support Android Studio Latest (Flamingo) & AGP 8
  • Improve ActivityLifeCircle
  • Improve Realtime

***Note:

  • If you get a crash after building apk with Proguard in Android Studio Latest (Flamingo) & AGP 8, you can use this version. ( root problem crash is from library retrofit in the version before not supporting AGP 8 )
  • please add this maven for support lib retrofit if get an error when sync gradle
maven { url 'https://oss.sonatype.org/content/repositories/snapshots' }

Qiscus Chat SDK (core) v1.6.3

14 Feb 09:14
Compare
Choose a tag to compare

Changelog :

  • Support enableJetifier = false

Qiscus Chat SDK (core) v1.6.2

17 Jan 10:07
Compare
Choose a tag to compare

Changelog :

  • Improve library realtime, and remove permission SCHEDULE_EXACT_ALARM.

Note :

  • in this version you don't need to set permission SCHEDULE_EXACT_ALARM to support realtime, if you was set this permission, you can remove this permission from your code

Qiscus Chat SDK (core) v1.6.1

13 Dec 08:55
Compare
Choose a tag to compare

Changelog :

  • Prevent crash when accessing lib jupukData in some device

Qiscus Chat SDK (core) v1.6.0

25 Oct 08:09
Compare
Choose a tag to compare

Changelog :

  • New Flow expired token

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 :

  • Please contact us, if you want to implement the flow expired token and manually or automatic call the API refresh token

Qiscus Chat SDK (core) v1.5.1

29 Sep 09:22
Compare
Choose a tag to compare

Changelog :

  • Try to Fix crash EncryptedSharedPreference

Qiscus Chat SDK (core) v1.5.0

20 Sep 03:35
Compare
Choose a tag to compare

Changelog :

  • Support ExpiredToken

for example :

  • if you get error when call API qiscusCore with error code 403, please call api refreshToken
 QiscusAccount account = QiscusCore.getQiscusAccount();
        QiscusApi.getInstance().refreshToken(account.getEmail(), account.getRefreshToken())
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(QiscusCore::saveRefreshToken, throwable -> {
                    QiscusErrorLogger.print(throwable);
                });
 

Qiscus Chat SDK (core) v1.4.4

18 Aug 08:08
Compare
Choose a tag to compare

Changelog :

  • Prevent crash android.permission.SCHEDULE_EXACT_ALARM set false from user

Note:

  • Please show the popup customer to enable SCHEDULE_EXACT_ALARM permission, because Qiscus Core SDK (Application) can't create a popup, only from activity can create the popup
  • If SCHEDULE_EXACT_ALARM permission is set to false, new messages will be delayed (only from sync and PN for realtime new messages)

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();

            }
        }