We are using MarketingCloudSDK V7.1.1 in our project. The app was working fine, suddenly from the past few days, our prod app started to break. On analysing we observed MarketingCloudSDK.sharedInstance().sfmc_refreshMessages() returns true but SFMCInboxMessagesRefreshComplete notification is not getting fired by the SDK.

When I upgraded the SDK to V7.5.1, it started to work again.

  1. What can be the reason for this?
  2. Why do we have different behavior in different versions of the SDK?
  3. if sfmc_refreshMessages returns true, should we not expect SFMCInboxMessagesRefreshComplete notification to be triggered?
  4. Is there any documentation that explains how SDK should work? I couldn't find anything concrete on the Official documentation here.

MarketingCloudSDK.sharedInstance().sfmc_refreshMessages() == true -> we display loading indicator & we remove the loading indicator after receiving SFMCInboxMessagesRefreshComplete notification. Now since the notification is not fired hence the loader never gets removed.

Any help is much appreciated.

  • Open a support case.
    – Bill Mote
    Feb 22, 2022 at 17:33
  • Will do that, meanwhile would you be able to answer any of the above queries?
    – Developer
    Feb 22, 2022 at 17:38

1 Answer 1


There was a bug addressed in v7.4.0 of the iOS SDK that would previously cause MarketingCloudSDK.sharedInstance().sfmc_refreshMessages() to return true everytime it was called, even if it was in fact throttled and not making the refresh call. The fix now provides a correct result (true or false) of whether the refresh call was executed when calling MarketingCloudSDK.sharedInstance().sfmc_refreshMessages(). As stated in the documentation:

"The underlying request to the server will be throttled such that it will execute at most every 60 seconds. If the method has been called less than 60s after the preceeding method call, NO will be returned and the request will not be made. If NO is returned, it is suggested that any UI used to reflect the refresh operation is updated (pull to refresh indicators, loading spinners, etc.)"

Please use the result of this function appropriately with your UI. It is important to note that SFMCInboxMessagesRefreshComplete will not be called if false is returned. In addition, as always, I would suggest updating to the latest 7.x version to take advantage of all the latest bug fixes etc.

  • Thank you very much for the detailed explanation. 1. RefreshMessage function is returning true only once in 60 seconds, which is inline with the documentation. I have a follow up question. 1. How do we know if the refresh is in progress? 2. If refreshMessage is called twice in 60second, then SFMCInboxMessagesRefreshComplete notification would be triggered or not? As the second call (within 60seconds) to refreshMessage would return false (it returned true first time).
    – Developer
    Feb 22, 2022 at 18:12
  • You will know if the refresh is in progress if the MarketingCloudSDK.sharedInstance().sfmc_refreshMessages() returns true, otherwise it will not be. If it is called twice in 60s, then the second call would return false and not be called, but the first call would go through and SFMCInboxMessagesRefreshComplete would be fired assuming the network call is able to go through and complete. Feb 22, 2022 at 18:58
  • I have updated the SDK to V7.4.0. Now If I send an "Alert+Inbox" message, MarketingCloudSDK.sharedInstance().sfmc_getAllMessages() will not return that message unless user taps on it & we set in SDK by calling MarketingCloudSDK.sharedInstance().sfmc_setNotificationRequest(response.notification.request). This was not the case before. Is this expected behaviour?
    – Developer
    Mar 1, 2022 at 16:20

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .