Navigate the App Store landscape. Share strategies for app submission, distribution, marketing, and user acquisition. Discuss best practices for getting your app discovered and downloaded.

General Documentation

Post

Replies

Boosts

Views

Activity

Appstore not aproving our App Tracking Transparency
We have an app that checks user GPS locations to complete Work Orders and send them to a server for user visualization. We already implemented the App Tracking code in our project following the documentations and guides found on internet. The problem is that App Store is telling us that the app Tracking code is not implemented the way it is intended to be. The message from the appstore we get when we try to upload the app: "Hello, Thank you for your message. It would be appropriate to refer to the available documentation to confirm App Tracking Transparency has been correctly implemented. In particular, review the specifications for the requestTrackingAuthorization(completionHandler:) type method, make any necessary adjustments, and test your app on a device running iOS 15." Our code: Version currentVersion = new Version(Device.systemVersion); Version ios14 = new Version("14.5"); if (ATTrackingStatusBinding.GetAuthorizationTrackingStatus() == ATTrackingStatusBinding.AuthorizationTrackingStatus.NOT_DETERMINED && currentVersion >= ios14) { ATTrackingStatusBinding.RequestAuthorizationTracking(AuthorizationTrackingReceived); sentTrackingAuthorizationRequest?.Invoke(); yield return new WaitUntil(() => ATTrackingStatusBinding.GetAuthorizationTrackingStatus() != ATTrackingStatusBinding.AuthorizationTrackingStatus.NOT_DETERMINED); if(ATTrackingStatusBinding.GetAuthorizationTrackingStatus() == ATTrackingStatusBinding.AuthorizationTrackingStatus.AUTHORIZED) { StartCoroutine(CheckGPSRoutine()); } } We need help to solve this urgent issue and know how to correcly implement App Tracking so we can upload the app to appstore. Thanks!
1
0
1.3k
Jan ’22
Will Simulator Screenshots Ever Upload to Store
No matter what size of simulator you use on any Macbook from any year, the screenshots are completely unusable on app store connect. App store connect requires extremely obscure, uncommon, and illogically sized images for screenshots. If you take a real screenshot on an actual iPhone 13 then try to upload that image it will also no work. Will Apple ever make software that properly works with its own development software? Will Apple ever make it so the simulators screenshots are properly sized or will apple allow for appropriately sized images to be uploaded for screenshots? Funny enough the best way to get around this problem is to use a third party conversion app to make up for apples extreme inadequacy and purposeful stifling of innovation and invention. Apple should take a note from the people they are keeping their boot on the neck of. It is elementary practice to resize images on devices and in widgets. They are forcing these crazy restrictions due to sheer laziness and lack of ability.
10
5
4.1k
Mar ’22
Help making existing IOS Application on Mac
Looking to make my existing IOS application available on Mac. I have done all of the steps as best I can determine across all the articles tools and topics for Xcode/App Connect/Transporter. I have no builds to upload in the MacO/S apps part of Apple Connect. The app runs fine in the simulator for Mac OS and I have managed to export an executable which I might be able to send to someone outside of the App Store but haven't tried/tested. Transporter won't load the exported (notarized? supposedly) file into Xcode because its already got a build with the same number. I targeted Standard Architecture option, which says should run on Intel or ARM, - I am not clear on which OS I should have selected to target to make that happen. Any hints to a concise todo list to make it happen would be good. My observation is that most of the examples in the various documentation are either MacOS Store oriented or Xcode on IOS for details. The high level information describes the planned/expected support but doesn't match the tools examples
3
0
1.2k
Mar ’22
iCloud share link opens the wrong app on App Store
Hi everyone, we recently integrated UICloudSharingController to share cloudkit records on one of our apps, but we noticed while testing that the icloud share link opens the wrong app on App Store if we invite a participant who has not the app installed on his device. We thought it was because for another our app (app store opens the download page for this app) we basically duplicated the same coredata/cloudkit implementation, forgetting maybe some cloudkit references of the first app and indeed we noticed a wrong icloud container assignment for the second app, which essentially had two containers, the correct one (its own) and the one of the first app (the wrong one). So, we fixed the problem, every app has his own container now and only his own, and we updated the provisional profiles as well, in order to have the correct icloud containers entitlements. Unfortunately the problem persists and after check everything else (containers, app groups, PersistentStoreDescriptions etc.) we don't have any more ideas. What else should we check? Thanks in advance for your suggestions. Some more detail of the issue: If we have the app installed on the device the icloud share link opens the right app. The same icloud share link works properly on Mac Catalyst (the App Store opens the correct app page if we don't have the app installed). The problem is only on iOS.
1
0
528
May ’22
Programmatically press "delete" or "cmd + v" in sandboxed app
Im working on a small text snippet / lorem ipsum app as a side project and the idea is, for instance, whenever and wherever user types "lorem10" I'd like to print/paste 10 random lorem ipsum words. Eg. "lorem10 " -> ("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do") For that to be possible I need to, Programmatically press "delete" key to remove the trigger string ("lorem10"). Programmatically press "cmd + v" for pasting the result string. This is possible, even in sandbox! But it requires accessibility permission. For instance I can simulate "delete" key press like this: func delete() {     let eventSource = CGEventSource(stateID: .combinedSessionState)     let keyDownEvent = CGEvent(       keyboardEventSource: eventSource,       virtualKey: CGKeyCode(51),       keyDown: true)     let keyUpEvent = CGEvent(       keyboardEventSource: eventSource,       virtualKey: CGKeyCode(51),       keyDown: false)     let loc = CGEventTapLocation.cghidEventTap     //Triggers system default accessibility access pop-up     keyDownEvent?.post(tap: loc)     keyUpEvent?.post(tap: loc)   } My question is essentially if this is allowed in Mac App Store? Because requesting accessibillity permission like this is not allowed in sandbox: func getPermission() { AXIsProcessTrustedWithOptions([kAXTrustedCheckOptionPrompt.takeUnretainedValue():true] as CFDictionary). } But I can simulate one short "shift" or "cmd" key press for instance, and trigger the pop-up inside a sandboxed app and get around this it seems. Is this a bug? I really hope I can release my app in the Mac App Store, but doing so I just want to be sure Im not using any bug that might get removed in the near future.
1
1
1.5k
Jun ’22
ordering transactions and renewal state from notifications
The notification webhook is marketed as a way to get server-side updates on changes to in-app subscriptions. In the normal case, you can use that information to know the current state of a subscription. However, the retry system means that a notification may come up to 72hrs after the actual state change occurred and that also means that notification may be out-dated (another state change occurred between the time it was intended to be sent and the time it actually got successfully sent). How are we supposed to ensure that a received notification is the current state of a subscription? Can we used the signedDate to determine the order of notifications? (ie. when a notification fails to be sent and is resent, is the signedDate not altered so it can be used to order the notifications?) Or do we need to always make a request to the /inApps/v1/subscriptions/ endpoint to get the latest state and not rely on the contents of the notification?
2
0
928
Jul ’22
Deploying simple "Hello world" QT Python App to App Store
Good evening, I'm trying to deploy an extremely simple Python QT app to the app store: it's roughly ~10 lines of code that shows a window containing a"Hello, world!" message. This seemingly trivial task of deploying a "Hello World" app to the store has been extremely difficult, perhaps because of my lack of familiarity with the Apple ecosystem. I'd like to demonstrate all of the steps I've taken, my current understanding of deployments, and what the problems are. Project files Here's the code for the app (in a file located at src2/test_app/app.py). import os, sys from PySide2.QtWidgets import * class MainWindow(QMainWindow): def __init__(self, *args, **kwargs): super(MainWindow, self).__init__(*args, **kwargs) self.setCentralWidget(QLabel("Hello, world!")) if __name__ == '__main__': os.environ["QT_MAC_WANTS_LAYER"] = "1" app = QApplication(sys.argv) window = MainWindow() window.show() app.exec_() Furthermore, I've created an assets folder which contains an icon.icns file and I also created a Pyinstaller config/test_app.spec file to bundle this app into a testapp.app package: block_cipher = None added_files = [ ('../assets', 'assets') ] a = Analysis( ['../src2/test_app/app.py'], pathex=[], binaries=[], datas=added_files, hiddenimports=[], hookspath=[], hooksconfig={}, runtime_hooks=[], excludes=[], win_no_prefer_redirects=False, win_private_assemblies=False, cipher=block_cipher, noarchive=False ) pyz = PYZ( a.pure, a.zipped_data, cipher=block_cipher ) exe = EXE( pyz, a.scripts, a.binaries, a.zipfiles, a.datas, [], name='testapp', debug=False, bootloader_ignore_signals=False, strip=False, upx=True, upx_exclude=[], runtime_tmpdir=None, console=True, disable_windowed_traceback=False, target_arch=None, codesign_identity=None, entitlements_file=None, icon='../assets/64.icns' ) coll = COLLECT( exe, a.binaries, a.zipfiles, a.datas, strip=False, upx=True, upx_exclude=[], name='app' ) app = BUNDLE( coll, name='testapp.app', icon='../assets/icon.icns', bundle_identifier='com.stormbyte.test-app.pkg', info_plist={ 'NSPrincipalClass': 'NSApplication', 'NSAppleScriptEnabled': False, 'LSBackgroundOnly': False, 'LSApplicationCategoryType': 'public.app-category.utilities', 'NSRequiresAquaSystemAppearance': 'No', 'CFBundlePackageType': 'APPL', 'CFBundleSupportedPlatforms': ['MacOSX'], 'CFBundleIdentifier': 'com.stormbyte.test-app.pkg', 'CFBundleVersion': '0.0.1', } ) In addition, I have an config/entitlements.plist file, containing all of the necessary information for binaries built by pyinstaller: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <!-- These are required for binaries built by PyInstaller --> <key>com.apple.security.cs.allow-unsigned-executable-memory</key> <true/> <key>com.apple.security.cs.disable-library-validation</key> <true/> <key>com.apple.security.app-sandbox</key> <true/> </dict> </plist> This entitlements file is apparently necessary for pyinstaller to run things on Mac successfully, which is why I included it. Building the .APP I am able to build this app with: pyinstaller \ --noconfirm \ --log-level WARN \ --distpath '/Users/nikolay/Desktop/projects/cling_wrap/dist' \ --workpath '/Users/nikolay/Desktop/projects/cling_wrap/build' \ './config/test_app.spec' This creates a testapp.app file in my dist folder and the file icon I've designated appears just as I've intended. Codesigning the .APP binaries Next, I am able to use the codesign tool to sign all of the files that are part of the testapp.app I've just created. codesign \ -vvv \ --strict \ --deep \ --force \ --timestamp \ --options runtime \ --entitlements './config/entitlements.plist' \ --sign "Developer ID Application: Nikolay ***** (Z57YJ*****)" \ '/Users/nikolay/Desktop/projects/cling_wrap/dist/testapp.app' This successfully executes. Building the .PKG Installer Next, I am able to use productbuild to create a .PKG file, which will allow a user to install the app: productbuild \ --version '0.0.1' \ --sign "Developer ID Installer: Nikolay **** (Z57YJ*****)" \ --component '/Users/nikolay/Desktop/projects/cling_wrap/dist/testapp.app' \ /Applications testapp.pkg This successfully outputs: ... productbuild: Adding certificate "Developer ID Certification Authority" productbuild: Adding certificate "Apple Root CA" productbuild: Wrote product to testapp.pkg When I attempt to run this installer, everything works. I can even see the app installed in my Applications folder, and I can double-click and run it: With this confirmed, I am ready to run the notarization & stapling process prior to submitting my app to the App Store. I run notarization using the xcrun tool: xcrun altool \ --notarize-app \ --primary-bundle-id com.stormbyte.test-app.pkg \ --username=*****@gmail.com \ --password **** \ --file '/Users/nikolay/Desktop/projects/cling_wrap/testapp.pkg' Which outputs: No errors uploading '/Users/nikolay/Desktop/projects/cling_wrap/testapp.pkg'. RequestUUID = c40ebde4-dcd1-*********** I then receive an e-mail from Apple telling me that the notorization process has been successful: Next, I run the stapler tool: xcrun stapler staple '/Users/nikolay/Desktop/projects/cling_wrap/testapp.pkg' Which is also successful. Finally, I attempt to use Transporter to upload my app to the store but this happens: It says that the icon failed (when it clearly exists and is recognized by Mac?!!) and that the signature is invalid? Am I using the incorrect certificates for distribution to the App store? Thanks!
5
2
3.8k
Jul ’22
how to identify transaction is in free trial period in notification v2
In notification version1, there is an field called is_trial_period, is useful for us to identify this transaction is in free trial, and we can judge the user's payment status and recomand some feature for him. but, in notification version2 the filed is not appear, in this scenari, how can I identify this user is in free trial period ?
3
3
1.4k
Oct ’22
Where to get 5.5 inch iPhone screenshots for submission
Hello, I'm new to iOS development and I'm trying to take some screenshots of my app to submit to the App Store. I'm running Ventura 13.0.1 and XCode 14.1. So far I've used these simulators to take screenshots: 6.5 inch - iPhone 11 Pro Max 6.7 inch - iPhone 14 Pro Max 12.9 inch - iPad Pro 6th gen What I'm stuck on is getting the 5.5 inch screenshots, which are required for App Store submission. As far as I can tell from some online searching, the latest iPhone with that screen size was the 8 Plus. I've installed the oldest iOS simulator that XCode has listed (iOS 13.7), but it still won't let me run a simulator for the iPhone 8 Plus to get those screenshots. I don't have the physical device to take screenshots on. Does anyone know how to get the 5.5 inch screenshots without having to manually resize them?
22
8
59k
Nov ’22
App cannot be opened because the developer cannot be verified.
Submit my app to Mac App Store. workflow: Sign with cert: Developer ID Application ---&gt; Success Notarize ---&gt; Success Sign with cert: 3rd Party Mac Developer Application ---&gt; Success productbuild with cert: 3rd Party Mac Developer Installer, and get .pkg artifact---&gt; Success Transporter upload ---&gt; Success TestFlight notify, and app update to the latest version ---&gt; Success Click open, and then the ERROR comes like the screenshot photo So I'm confusing which step's wrong. And I believe my account certificates, profiles are all configured with no problem. Anybody have any clues? I've been here for many days.
4
0
1.7k
Jan ’23
Promo Codes for Mac Catalyst Apps
I have looked high and low all and cannot find an answer or solution. I have an app that is primarily used by Mac users. I am looking to implement promo codes in the coming weeks. The presentCodeRedemptionSheet call does not work for Mac Catalyst apps saying "This function doesn’t affect Mac apps built with Mac Catalyst" in the documentation. AppStore.presentOfferCodeRedeemSheet also does not work for Mac Catalyst. If it is the case that you can't redeem in-app, that is fine if I can direct users to the Mac App Store to redeem promo codes, but I cannot find a way to do that either. I can only find a route to redeem gift cards. I have also tried clicking on a specific promo code link (something like https://apps.apple.com/redeem?ctx=offercodes&id=00000000&code=PROMOCODE) and that just redirects to the Gift Card redemption screen in the Mac App Store. So is there any way for a Mac only user (a user that does not have an iPhone or iPad) to use app promo codes? Thanks!
1
0
636
Mar ’23
Xamarin App updated with Xcode 14.3. A 1024 x 1024 pixel app icon for your app must be added to the asset catalog in Xcode
At App Store Connect > add for review: "Unable to Add for Review The items below are required to start the review process: A 1024 x 1024 pixel app icon for your app must be added to the asset catalog in Xcode." Seems to be an old problem. I've tried whole day but this problem seems to persist. Just to be sure, resized the 1024x1024 image to 1024x1024. Already deleted the AppIcon from Assets.xcassets and refilled the icons; created a new set of icons, deleted the AppIcon from Assets.xcasstes and refilled the icons again. Still missing the 1024x1024 icon. Need some help please!
6
0
929
Apr ’23
App Store Review with Social Sign In Demo Account
We're trying to release a social media app that uses social sign in. The two sign in options are google sign in and apple sign in. Our app keeps getting rejected because the testers cannot login to the demo account. Apple requires a 2 factor verification, and google requires a 2 factor verification. At this point, we are stuck. We don't want to go through the process of keeping track of usernames and passwords just for app review. What do we do?
1
2
777
May ’23
"Asset validation failed Invalid Provisioning Profile" error while validating a .pkg file
I am creating a macOS application to be distributed to Mac App Store. I am getting an error when I try to validate my .pkg file with the "altool". This is the error I am getting: 2023-06-28 22:15:18.389 *** Error: Asset validation failed Invalid Provisioning Profile. The provisioning profile included in the bundle com.***.safari.web.Extension [com.***.safari.web.Extension.pkg/Payload/XXXX.app] is invalid. [Missing code-signing certificate.] For more information, visit the macOS Developer Portal. (ID: cef119d1-f045-4e50-94f7-22ee94877fad) (90283) { NSLocalizedDescription = "Asset validation failed"; NSLocalizedFailureReason = "Invalid Provisioning Profile. The provisioning profile included in the bundle com.***.safari.web.Extension [com.***.safari.web.Extension.pkg/Payload/XXXXXXX.app] is invalid. [Missing code-signing certificate.] For more information, visit the macOS Developer Portal. (ID: cef119d1-f045-4e50-94f7-22ee94877fad)"; NSUnderlyingError = "Error Domain=IrisAPI Code=-19241 "Asset validation failed" UserInfo={status=409, detail=Invalid Provisioning Profile. The provisioning profile included in the bundle com.***.safari.web.Extension [com.***.safari.web.Extension.pkg/Payload/XXXXXX.app] is invalid. [Missing code-signing certificate.] For more information, visit the macOS Developer Portal., id=cef119d1-f045-4e50-94f7-22ee94877fad, code=STATE_ERROR.VALIDATION_ERROR.90283 "iris-code" = "STATE_ERROR.VALIDATION_ERROR.90283"; } Exited with code exit status 1 CircleCI received exit code 1 The steps I am following, are as follows: Command to generate the archive: xcodebuild -workspace ${WORKSPACE}/XXXXXX.xcodeproj/project.xcworkspace -scheme XXXXXX -sdk macosx -destination 'generic/platform=macOS' -archivePath ${WORKSPACE}/XXXXXXExt.xcarchive DEVELOPMENT_TEAM=XXXXXXXXXXXX PROVISIONING_PROFILE_SPECIFIER="match Development com.***.safari.web.Extension mac" PRODUCT_BUNDLE_IDENTIFIER=com.***.safari.web.Extension CODE_SIGN_STYLE=Manual CODE_SIGN_IDENTITY="Apple Development" archive **The command to generate the .app file (export archive step): ** xcodebuild -exportArchive -exportOptionsPlist ${WORKSPACE}/Config/Prod-MacAppStore-exportOptions.plist -archivePath ${WORKSPACE}/XXXXXX.xcarchive -exportPath ${WORKSPACE}/mac/packages I am using AppStore Distribution certificate for this step. **The Command for generating .pkg file: ** productbuild --component ${WORKSPACE}/mac/packages/XXXXXX.app /Applications/ ${WORKSPACE}/mac/packages/XXXXX-${app_build_number}.unsigned.pkg The Command for signing the .pkg file: productsign --sign "3rd Party Mac Developer Installer: XXXXX Inc. (XXXXXXXXXX)" ${WORKSPACE}/mac/packages/XXXXX-${app_build_number}.unsigned.pkg ${WORKSPACE}/mac/packages/XXXXX-${app_build_number}.pkg I am using Mac Developer Installer certificate for this step. The Command for validating the .pkg file: xcrun altool --validate-app -f ${WORKSPACE}/mac/packages/signed/XXXXX-${app_build_number}.pkg -t macos --apiKey "${APP_STORE_API_KEY}" --apiIssuer ${APP_STORE_API_ISSUER} --show-progress The last command is failing. Could someone please let me know what I am missing? And what does it mean by "Missing code-signing certificate"?
3
1
2.3k
Jun ’23