아무나 빌려가세요

flutter oneSignal 5.0.0 업데이트 변경사항 본문

플러터

flutter oneSignal 5.0.0 업데이트 변경사항

빌라노바 2023. 12. 6. 16:53

oneSingal 5.0.0 이상 버전 마이그레이션

마이그레이션 이유

이전버전에서 사용했던 push.Disable이 어느순간 적용되지 않는것을 발견했다. 깃 이슈에서도 누군가 글을 올렸지만 답변이 달리지 않는것으로 봐서 쉽게 해결되지 않을거란 생각을 했다. 결국 최근버전으로 마이그레이션 하기로 결정했다.

변경사항

너무나 많은것이 변경되어 약간 당황스러웠지만 변경사항중 필요한 것만 교체했다.

appid 등록

// 버전 5.0.0 이전
await OneSignal.shared.setLogLevel(OSLogLevel.verbose, OSLogLevel.none);
await OneSignal.shared.setAppId(KEY.ONESIG_ID);

---->
// 버전 5.0.0 이후
 OneSignal.Debug.setLogLevel(OSLogLevel.verbose);
 OneSignal.Debug.setAlertLevel(OSLogLevel.none);

 OneSignal.initialize(KEY.ONESIG_ID);

구독여부 판단 함수
주로 oneSignal의 userId값을 확인하기 위해 사용했다.

// 5.0.0 이전
OneSignal.shared
        .setSubscriptionObserver((OSSubscriptionStateChanges changes) async {
      if (changes.to.userId != null) {
        //tells you that the user has fully authorized push permissions
        final status = await OneSignal.shared.getDeviceState();
        print('device status:::::::::::::::${status?.userId}');
      }
    });

// 5.0.0 이후
OneSignal.User.pushSubscription.addObserver((state) async {
      //구독여부 판단 함수
      print(":::one ${state.current.jsonRepresentation()}");
      var prefs = await SharedPreferences.getInstance();
      if (state.current.id != null) {
        //tells you that the user has fully authorized push permissions
        print('device status:::::::::::::::${state.current.id}');
      }
    });

푸시알림 권한 확인 함수

// 5.0.0 이전
OneSignal.shared.promptUserForPushNotificationPermission().then((accepted) {
      print("Accepted permission: $accepted");
    });
// 5.0.0 이후
  OneSignal.Notifications.addPermissionObserver((state) {
      AppLogger().logInfo("Has permission $state");
    });

푸시알림 클릭시 이벤트를 발생시키는 함수
*5.0.0 이후의 코드에서 클릭시 함수가 4번 호출하는 부작용이 있다.

// 5.0.0 이전
OneSignal.shared.setNotificationOpenedHandler(
        (OSNotificationOpenedResult result) async {
      print(
          "push notification::${result.notification.rawPayload!}");
    });

// 5.0.0 이후
 OneSignal.Notifications.addClickListener((clickEvent) {
      AppLogger().logInfo("${clickEvent.notification.rawPayload}");
      if (clickEvent.notification.additionalData != null) {

      }
    });

앱에서 푸시알림 거부,허용하는 함수

// 5.0.0 이전
// Boolean값을 넣어 적용
OneSignal.shared.disablePush(false);

//5.0.0 이후

//push 허용
await OneSignal.User.pushSubscription.optIn();

//push 거부
await OneSignal.User.pushSubscription.optOut();

상당부분의 함수 이름과 구조가 변경되었으니 참고바란다.