diff --git a/services/ans/src/advanced_notification_service.cpp b/services/ans/src/advanced_notification_service.cpp index 443c4d12426fe4966875185e03364699ee7cf11f..7b33b5aefbca3d7f360436c5349ea9035ce1bdee 100644 --- a/services/ans/src/advanced_notification_service.cpp +++ b/services/ans/src/advanced_notification_service.cpp @@ -1360,6 +1360,11 @@ ErrCode AdvancedNotificationService::Subscribe( ErrCode errCode = ERR_OK; do { + if (subscriber == nullptr) { + errCode = ERR_ANS_INVALID_PARAM; + break; + } + bool isSubsystem = AccessTokenHelper::VerifyNativeToken(IPCSkeleton::GetCallingTokenID()); if (!IsSystemApp() && !isSubsystem) { ANS_LOGE("Client is not a system app or subsystem"); @@ -1372,11 +1377,6 @@ ErrCode AdvancedNotificationService::Subscribe( break; } - if (subscriber == nullptr) { - errCode = ERR_ANS_INVALID_PARAM; - break; - } - errCode = NotificationSubscriberManager::GetInstance()->AddSubscriber(subscriber, info); if (errCode != ERR_OK) { break; @@ -1393,6 +1393,8 @@ ErrCode AdvancedNotificationService::Unsubscribe( HITRACE_METER_NAME(HITRACE_TAG_NOTIFICATION, __PRETTY_FUNCTION__); ANS_LOGD("%{public}s", __FUNCTION__); + SendUnSubscribeHiSysEvent(IPCSkeleton::GetCallingPid(), IPCSkeleton::GetCallingUid(), info); + bool isSubsystem = AccessTokenHelper::VerifyNativeToken(IPCSkeleton::GetCallingTokenID()); if (!IsSystemApp() && !isSubsystem) { ANS_LOGE("Client is not a system app or subsystem"); @@ -1412,7 +1414,6 @@ ErrCode AdvancedNotificationService::Unsubscribe( return errCode; } - SendUnSubscribeHiSysEvent(IPCSkeleton::GetCallingPid(), IPCSkeleton::GetCallingUid(), info); return ERR_OK; }