아무나 빌려가세요
flutter oneSignal 5.0.0 업데이트 변경사항 본문
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();
상당부분의 함수 이름과 구조가 변경되었으니 참고바란다.
'플러터' 카테고리의 다른 글
Error (Xcode): Sandbox: dart(30630) deny(1) file-read-data 해결방법 (0) | 2023.12.12 |
---|---|
ios17 inappwebview 에러 (0) | 2023.09.22 |
xcode15 - flutter DT_TOOLCHAIN_DIR ios빌드 에러 (2) | 2023.09.22 |
xcode15 - Error (Xcode): Cycle inside Runner; building could produce unreliable results. 에러 (0) | 2023.09.22 |
Error (Xcode): File not found: libarclite_iphoneos.a 에러 해결 (0) | 2023.05.12 |