TipKit not showing via TestFlight

My TipKit views are showing in Previews, when I run on a Simulator, and on a physical device (running iOS 17 Beta), but if I archive and upload to TestFlight, I do not see them (on devices running iOS 17 Beta)...

Anyone else encounter this?

I am using the Xcode 15 GM (15A240d). I tried manually adding the framework into the target.

I am worried that if I submit for Review it will not show on devices when released... Am I just supposed to trust that it will work via the App Store? 🫣

Accepted Reply

Just a quick update that this issue should be fixed in the iOS 17.2 developer beta. Please give it a try if you're testing any of the recent developer betas. Thanks again, @josepaul228 @nathanielblumer-busbud @nadastudio.

  • Thank you for the update! Very appreciated. :)

  • from my side, I can confirm that that the fix it's working in iOS 17.2!! Thanks for the support @melsam

Add a Comment

Replies

I have plugged in a test device (running iOS 17 Beta) and see the following in Console... though I'm not sure what to make of it:

  • Did set recordURI for Tip.(unknown context at $1024d8c0c).FilterSortFeatureTip (that is the name of one of my Tips)
  • found no value for key com.apple.TipKit.DisableDisplayFrequency in CFPrefsSearchListSource<0x283350360> (Domain: com.busbud.busbud, Container: (null))
  • found no value for key com.apple.TipKit.TipDisplayDuration in CFPrefsSearchListSource<0x280bb0990> (Domain: com.busbud.busbud, Container: (null))
  • Do you have any advanced tips setup? How are you calling Tips.configure()?

  • Good question! I am calling the Tips.configure in my App file in a .task { } the same way as done in the Apple docs

    try Tips.configure([ .displayFrequency(.immediate), .datastoreLocation(.applicationDefault) ])

    I'm not doing anything fancy (as far as I know).

    I configured with my Console that the try is not throwing any errors via TestFlight build. It's just not showing anything regardless.

  • I am following the basic configuration in my App file in a .task { } as seen in the Apple docs.

    try Tips.configure([ .displayFrequency(.immediate), .datastoreLocation(.applicationDefault) ])

    With the Console, I was able to confirm that the try is not throwing any errors.

Add a Comment

Hi @nathanielblumer-busbud, Is it possible that you may have already dismissed this tip on your test device during previous runs of the app? Once dismissed, the tip won't come back - unless you delete and reinstall the app. To eliminate this possibility, can you try deleting the app from your test device, reinstalling it from TestFlight and then see if you can get the tips to appear?

  • Alas @melsam I have deleted and reinstalled the App multiple times and have confirmed the same issue (not showing) on several other fresh devices installing the TipKit build from TestFlight. Has anyone else experienced this issue? I imagine I must be doing something wrong but I'm a loss :(

  • In your original message, you mention that you're developing on Xcode 15 GM (15A240d), but your test device is on an iOS beta. I wonder if the issue is just an incompatibility between the newer SDK and an older iOS beta. Have you tried running your TestFlight build on a device with the final iOS build?

  • @melsam Since the release I've been testing on Xcode Version 15.0 (15A240d) via App Store. My test device is now running iOS 17.0, with Beta Update disabled. I will try updating it to 17.0.1 and see if that changes anything...

Hi @nathanielblumer-busbud, I created a minimal "Hello World" app with a TipKit tip, and uploaded it to TestFlight. I then downloaded it to my personal iPhone from TestFlight. The tip appeared just fine and worked as expected. The tip also appeared in Xcode Previews and the iOS simulator. As far as I can tell, it's behaving correctly and there are no known issues that would affect TipKit on TestFlight builds.

As a next step, I suggest you try doing the same. Create a brand new Xcode project with the minimal code needed to show a tip. For this minimal app, use the same bundle ID as your existing app and publish it to TestFlight. Then download it from TestFlight and validate that the tip appears. If it does, then you can eliminate TestFlight as a factor in your tip not appearing. You can then investigate whether there is some UI or logic change in your TestFlight/production builds that may be preventing the tip from appearing.

Hope this is helpful.

Hello, we have exactly the same issue as @nathanielblumer-busbud.

We developed a tip in our UIKit application, and everything it's working as expected in debug mode on physical devices and simulators. But when we distribute the app in appcenter (adhoc distribution) the tip it's never displayed.

My config is:

if #available(iOS 17.0, *), isTipKitEnabledUseCase.isEnabled {
            #if DEBUG
                try? Tips.resetDatastore()
            #endif

            try? Tips.configure([
                // One tip per day
                .displayFrequency(.daily)
            ])
        }

And then we have this set of rules and options for the tip:

var rules: [Rule] {
        #Rule(RankingViewController.didAccessRanking) {
            // Tip will only display when the didAccessRanking event has been donated 45 or more times in the last two weeks.
            // TODO: This should be 42 instead of 4 (temporal testing values)
            $0.donations.donatedWithin(.weeks(2)).count >= 4
        }

        #Rule(ReferenceFiltersViewController.didViewRankingReferenceFilters) {
            // TODO: This should be 16 instead of 1 (temporal testing values)
            $0.donations.count <= 1
        }

        #Rule(RankingSortingTip.didViewRankingSortingTip) {
            // Tip will only display when the didViewRankingSortingTip event has not been donated in the last week.
            // TODO: This should be a week instead a minute (temporal testing values)
            $0.donations.donatedWithin(.minutes(1)).count < 1
        }
    }

    var options: [TipOption] = [
        MaxDisplayCount(3),
        IgnoresDisplayFrequency(false)
    ]

I check all the project configuration and build settings and can't really understand what it's going on 🥵

  • I have the exact same problem, please help

Add a Comment

@melsam @nathanielblumer-busbud Same here. No matter what I do, tips don't show if it is the TestFlight build. I can build and install that same binary directly from xcode, and tips appear; however, if then go to TF and download the same binary, they don't (The order doesn't matter, and uninstalling also does not work).

  • Hi @nadastudio , are you using UIKit or SwiftUI to present your tips?

  • Hey @melsam, I'm using SwiftUI, and relying on Rules that have both donations and properties

Add a Comment

There's an exception in the device console, have we a way to reveal the private message?

This exception is produced in the screen where I donate to the didAccessRanking event in the viewDidLoad of the controller. This donate function does not throws or return any error to see what it's happening in debug mode

  • @josepaul228 by any chance, could you try a TestFlight build with a tip that that does NOT rely on rules and donations, and instead just always displays the tip? I'm wondering if this TestFlight issue is caused by rules or is just TipKit in general. If you can share that additional information, it might be helpful for us in debugging this.

  • I tried removing all the rules and donations in one of my TestFlight builds and - alas - they were still not showing. :'(

  • sure @melsam, I just did the test and by removing the implementation of the rules array from my tip struct, the tip is displayed as expected in the first access to the screen. It seems the issue is related to the donations, I also left just one rule to try and it does not work.

    I've also tried the two ways to do a donation:

    Task { await RankingViewController.didAccessRanking.donate() }

    and

    RankingViewController.didAccessRanking.sendDonation()

    and it does not work

Hi @nathanielblumer-busbud could you follow the instructions in Testing a release build to debug the issue.

  • Thank you for the suggestion. I have confirmed our project scheme, build configuration settings (no differences between Debug & Release), installed fresh installs on multiple devices (as well as updated from existing versions), tried on iOS 17 beta & 17.0 & 17.0.1, toggled Low Power Mode, tested in English & French, tested in US & Canada region... No sign of TipKit :(

Add a Comment

Sure  @melsam, I just did the test and removed the implementation of the rules array from my tip and by doing that, the tip is displayed as expected the first time I access to the screen. I also did another test and left just one of the rules and it does not working, it seems that the issue is related to the donations then. I've also tried both ways to do a donation: Task { await RankingViewController.didAccessRanking.donate() } and RankingViewController.didAccessRanking.sendDonation() and it does not work

  • @melsam @josepaul228 not sure it is related to the donate() part, since my tips are not showing either, and my rules specify that donations.count must be < 1, which is true on start (when no donation has been made, to to speak)... And still, they don't show up. Might be related to rules, or to how are donations stored/read from rules, maybe?

Add a Comment

Thank you for sharing the additional information @josepaul228 , @nadastudio , @nathanielblumer-busbud. This does seem related to the event donations. I was able to reproduce the issue when a tip uses rules based on donations. We're investigating the issue and will have an update soon.

Our engineers have reviewed the issue and have determined that it is a bug for which there is no known workaround at this time.

The cause of the issue has been identified and engineering believes that some of the bug fixes in the upcoming iOS updates may address the issue.

Thank you for your understanding.

Just a quick update that this issue should be fixed in the iOS 17.2 developer beta. Please give it a try if you're testing any of the recent developer betas. Thanks again, @josepaul228 @nathanielblumer-busbud @nadastudio.

  • Thank you for the update! Very appreciated. :)

  • from my side, I can confirm that that the fix it's working in iOS 17.2!! Thanks for the support @melsam

Add a Comment

Faced with the same issue... Waiting for updates from Apple... Also, have rules and donates ... One thing that makes me happy is that I'm not alone on this ....

The issue seems to be resolved for me in iOS 17.2.1.