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

Crime Reporting Guideline 1.7
My App has beed rejected multiple times for not complying with the Criminal Activity Reporting Guideline 1.7. Essentially, I have to provide a documentation showing partnership with local law enforcement (where ever the app is used). The App, SafeSpot, gives users near real time crime data at their geo but also enables users to "tag" or post a crime they witnessed so other users can stay away. Here's the response i got: Specifically, it is unclear if you have partnered with local law enforcement to respond to the reports of alleged criminal activity. To provide users a safe and reliable experience, apps may only be used to report criminal activity in locations where you have the active involvement of local law enforcement. Next Steps To ensure that your app is partnering with the appropriate institutions, you must provide documentation or evidence of your relationship with local law enforcement wherever your app is distributed. Please attach the documentation. Documentation?? I need examples. Do i go to my local police station :)
2
0
457
Aug ’23
Download Report from Apple Store
We are using the apple developer API https://developer.apple.com/documentation/appstoreconnectapi/download_sales_and_trends_reports We are able to generate the token and we can get the data from https://api.appstoreconnect.apple.com/v1/apps how ever when we are trying to get data from https://api.appstoreconnect.apple.com/v1/salesReports , it is showing unauthorised access error. We have admin right for our private Key.
0
0
519
Aug ’23
Misleading App Compatibility Information on App Store
Hello everyone, I recently encountered an issue with the App Store that I believe needs attention. I'm using an iPhone running iOS 15, and I came across an app that was listed with Compatibility as "Works on this phone." However, upon trying to install and run the app, I found out that it actually requires iOS 16 to function. Issue Details: Device: iPhone 7 iOS Version: iOS 15.7.8 App Name: ChatGPT App Version: 1.2023.235 Steps to Reproduce: Open App Store on an iPhone running iOS 15. Search for ChatGPT (https://apps.apple.com/us/app/chatgpt/id6448311069) The app compatibility listing shows "Works on this phone." Download and attempt to run the app. The app fails to run, indicating it requires iOS 16. Thank you for your time and consideration.
0
0
234
Aug ’23
How to Politely Discontinue an iOS/iPadOS Mobile App?
Requesting advice on how to politely discontinue a mobile app and in some way let the dwindling user base know that it is “last call” for the app. Apple recommends against a hail and farewell release that announces the end of the app in a new release. Do you just let it dwindle until Apple ejects it for lack up updates and use (apparently after 3 years these days). We have many other apps and don‘t want to alienate our customer base nor disappoint them with just not updating the app until it dies. There must be a better way… Suggestions welcome!
1
1
590
Aug ’23
Different payment methods in different countries
If we want to adopt different payment models for each country, do we need to release it as a separate app? Currently, our video streaming app is distributed worldwide with a billing model that starts an in-app subscription automatically after a one-week trial. For example, if we were to introduce an advertising model only in Thailand, allowing viewing without a subscription. I believe it's not possible to set the subscription price to 0 yen for a specific country in App Store Connect. So, would our only option be to set Thailand as the distribution country for a separately created app? Additionally, is it possible to have a pay-per-view system just for specific countries within the same app? In this case, instead of applying a subscription, we envision users making an in-app purchase for each content they want to watch
0
0
241
Aug ’23
Appstore Server Notification expirationIntent and offerType on renewalInfo is null
On my production application, renewalInfo.expirationIntent and renewalInfo.offerType is missing on notification data. On this examples, the signedRenewalInfo is decoded and set as renewalInfo and the signedTransactionInfo is decoded and set as transactionInfo. Example 1 It is expiration notification. However, renewalInfo.expirationIntent does not exists { "notificationType": "EXPIRED", "subtype": "VOLUNTARY", "notificationUUID": "REDACTED", "data": { "appAppleId": 123456789, "bundleId": "REDACTED", "bundleVersion": "16", "environment": "Production", "status": 2, "transactionInfo": { "transactionId": "REDACTED", "originalTransactionId": "REDACTED", "webOrderLineItemId": "REDACTED", "bundleId": "REDACTED", "productId": "REDACTED", "subscriptionGroupIdentifier": "REDACTED", "purchaseDate": 1693220511000, "originalPurchaseDate": 1693220512000, "expiresDate": 1693479711000, "quantity": 1, "type": "Auto-Renewable Subscription", "appAccountToken": "REDACTED", "inAppOwnershipType": "PURCHASED", "signedDate": 1693479743547, "offerType": 1, "environment": "Production", "transactionReason": "PURCHASE", "storefront": "PHL", "storefrontId": "143474" }, "renewalInfo": { "originalTransactionId": "REDACTED", "autoRenewProductId": "REDACTED", "productId": "REDACTED", "autoRenewStatus": 0, "isInBillingRetryPeriod": false, "signedDate": 1693479743547, "environment": "Production", "recentSubscriptionStartDate": 1693220511000, "renewalDate": 1693479711000 } }, "version": "2.0", "signedDate": 1693479743603 } Example 2 It is an initial buy subscription notification. transactionInfo.offerType is 1, however there is no renewalInfo.offerType. { "notificationType": "SUBSCRIBED", "subtype": "INITIAL_BUY", "notificationUUID": "REDACTED", "data": { "appAppleId": 123456789, "bundleId": "REDACTED", "bundleVersion": "16", "environment": "Production", "status": 1, "transactionInfo": { "transactionId": "REDACTED", "originalTransactionId": "REDACTED", "webOrderLineItemId": "REDACTED", "bundleId": "REDACTED", "productId": "REDACTED", "subscriptionGroupIdentifier": "REDACTED", "purchaseDate": 1693475274000, "originalPurchaseDate": 1693475276000, "expiresDate": 1725097674000, "quantity": 1, "type": "Auto-Renewable Subscription", "appAccountToken": "REDACTED", "inAppOwnershipType": "PURCHASED", "signedDate": 1693475283052, "offerType": 1, "environment": "Production", "transactionReason": "PURCHASE", "storefront": "ESP", "storefrontId": "143454" }, "renewalInfo": { "originalTransactionId": "REDACTED", "autoRenewProductId": "REDACTED", "productId": "REDACTED", "autoRenewStatus": 1, "signedDate": 1693475283052, "environment": "Production", "recentSubscriptionStartDate": 1693475274000, "renewalDate": 1725097674000 } }, "version": "2.0", "signedDate": 1693475283075 }
0
0
505
Aug ’23
Unable to Add for Review The items below are required to start the review process: New apps and app updates must be built with the public (GM) versions of Xcode 11 or later, iOS, macOS, watchOS, and tvOS SDKs. Apps built with beta versions aren’t all
Unable to Add for Review The items below are required to start the review process: New apps and app updates must be built with the public (GM) versions of Xcode 11 or later, iOS, macOS, watchOS, and tvOS SDKs. Apps built with beta versions aren’t allowed. This build is using a beta version of Xcode and can’t be submitted. Make sure you’re using the latest version of Xcode or the latest seed release found on the releases tab in News and Updates
14
6
1.2k
Aug ’23
iOS 16.0.2 - The certificate for this server is invalid - Code=-1202
I'm testing IAPs with Appstore sandbox and just started to get this error log: 2023-09-01 17:31:25.928247+1000 App Name[551:22768] [Default] Error finishing transaction 2000000402881245: Error Domain=NSURLErrorDomain Code=-1202 "The certificate for this server is invalid. You might be connecting to a server that is pretending to be “mzstorekit-sb.itunes.apple.com” which could put your confidential information at risk." UserInfo={NSLocalizedRecoverySuggestion=Would you like to connect to the server anyway?, _kCFStreamErrorDomainKey=3, _kCFStreamErrorCodeKey=-9807, NSErrorPeerCertificateChainKey=( "<cert(0x10382e600) s: mzstorekit.itunes.apple.com i: Apple Public EV Server RSA CA 2 - G1>", "<cert(0x10382f200) s: Apple Public EV Server RSA CA 2 - G1 i: DigiCert High Assurance EV Root CA>", "<cert(0x10382fa00) s: DigiCert High Assurance EV Root CA i: DigiCert High Assurance EV Root CA>" ), NSErrorFailingURLKey=https://mzstorekit-sb.itunes.apple.com/inApps/queueCheck/markTransactionDone?transactionId=2000000402881245, NSErrorFailingURLStringKey=https://mzstorekit-sb.itunes.apple.com/inApps/queueCheck/markTransactionDone?transactionId=2000000402881245, NSErrorClientCertificateStateKey=0, _NSURLErrorRelatedURLSessionTaskErrorKey=( "LocalDataTask <D68A1174-22ED-49B9-B2F7-811D96E1018E>.<1>" ), NSUnderlyingError=0x281234510 {Error Domain=kCFErrorDomainCFNetwork Code=-1202 "(null)" UserInfo={_kCFStreamPropertySSLClientCertificateState=0, kCFStreamPropertySSLPeerTrust_desc=<SecTrustRef: 0x102d2f460>, _kCFNetworkCFStreamSSLErrorOriginalValue=-9807, _kCFStreamErrorDomainKey=3, _kCFStreamErrorCodeKey=-9807, kCFStreamPropertySSLPeerCertificates=( "<cert(0x10382e600) s: mzstorekit.itunes.apple.com i: Apple Public EV Server RSA CA 2 - G1>", "<cert(0x10382f200) s: Apple Public EV Server RSA CA 2 - G1 i: DigiCert High Assurance EV Root CA>", "<cert(0x10382fa00) s: DigiCert High Assurance EV Root CA i: DigiCert High Assurance EV Root CA>" )}}, _NSURLErrorFailingURLSessionTaskErrorKey=LocalDataTask <D68A1174-22ED-49B9-B2F7-811D96E1018E>.<1>, NSURLErrorFailingURLPeerTrustErrorKey_desc=<SecTrustRef: 0x102d2f460>, client-environment-type=Sandbox, storefront-country-code=AUS, AMSStatusCode=0, NSLocalizedDescription=The certificate for this server is invalid. You might be connecting to a server that is pretending to be “mzstorekit-sb.itunes.apple.com” which could put your confidential information at risk.} Rebooting the phone, macbook, or restarting XCode doesn't help. This has been working reliably until just now. When connecting to https://mzstorekit-sb.itunes.apple.com using Firefox I'm told that An error occurred during a connection to mzstorekit-sb.itunes.apple.com. Peer’s Certificate has been revoked. Error code: SEC_ERROR_REVOKED_CERTIFICATE Does anyone know what's going on? Is this an Apple issue and they are just about to fix it? Thanks
3
1
1.1k
Sep ’23
When testing iOS Subscription, I encountered some weird issues
Issue 1: When testing iOS subscriptions with StoreKit 2 in a sandbox environment on iOS 16.2 / Xcode 14.2 with a Sandbox Tester Account on a real device, I encountered a strange problem. The first 5 subscription renewals worked correctly, but after that, it didn't renew, and I received the following notification: 'notificationType': 'EXPIRED', 'subtype': 'VOLUNTARY'. According to the App Store Server documentation, this subtype indicates that the subscription expired after the user disabled subscription auto-renewal. However, I did not manually disable Auto-Renewal. Issue 2: After a subscription expires and is not renewed, attempting to re-subscribe doesn't show the confirmation dialog and returns success without any error message. The transactionId is the ID of the expired subscription. However, if I switch to a different productId plan, such as switching from a monthly payment plan (which doesn't show the dialog) to an annual payment plan (which does show the dialog), it works as expected. I found a similar case on the Apple Developer forums: https://developer.apple.com/forums/thread/723126, but the provided solutions didn't work for my situation. Hope you guys can help me out.
1
0
942
Sep ’23
JWT for App Store Server API requests
Hello, I'm trying to generate a JWT in C# for calling this endpoint -> https://developer.apple.com/documentation/appstoreserverapi/look_up_order_id I have followed the instructions in the documentation, but I'm always getting "Unauthenticated" as a response. The private key used is of type "In-App Purchase" as the documentation says. Here you have a response with a Request ID: Unauthenticated Request ID: YGV3ELXFCFHA5IPRZEW76S66NQ.0.0 This is the code used to generate the JWT: public string CreateNewApiToken() { const string audience = "appstoreconnect-v1"; var kid = "***"; var privateKey = "***"; var bundleId = "***"; var issuerId = "***"; var now = DateTime.UtcNow; using var ecdsa = ECDsa.Create(); ecdsa?.ImportPkcs8PrivateKey(Convert.FromBase64String(privateKey), out _); var signingCredentials = new SigningCredentials(new ECDsaSecurityKey(ecdsa), SecurityAlgorithms.EcdsaSha256); signingCredentials.Key.KeyId = kid; var payload = new JObject { { "iss", issuerId }, { "iat", now.ToUnixTime() }, { "exp", now.AddMinutes(30).ToUnixTime() }, { "aud", audience }, { "bid", bundleId} }; var handler = new JsonWebTokenHandler(); var token = handler.CreateToken(payload.ToJson(), signingCredentials); return token; } Thanks in advance.
2
0
858
Sep ’23
Problems using a Mac as a headless build server
My team has a Mac desktop we use as a build server to do tests, packaging, codesigning, and notarization. The service was kicked off inside a cron job, but we started encountering issues with codesigning (codesign errSecInternalComponent). Eventually we tried turning the service into a LaunchAgent and codesigning now works, presumably because it now has access to the user's keychains. However, this means the service doesn't start until someone logs the user into the console, which is pretty inconvenient at times. We are also finding that the machine is now inaccessible remotely, over SSH and VNC, until there's a console login at the physical host. Our institutional security policies require the use of FileVault and disallow auto-login, and our IT folks haven't suggested any workarounds. What is the recommended way to configure a Mac desktop as a headless server that can reboot without user interaction? We don't, and can't, use XCode. We develop a multi-platform application written in Java.
2
0
1.2k
Sep ’23
ITMS-90338: Non-public API usage
We have developed the iOS App using .NET MAUI, when we try to upload it to store, the binary is getting rejected with the following error, kindly suggest a solution for this. TMS-90338: Non-public API usage - The app references non-public symbols in : _ubrk_openRules, _ucal_add, _ucal_close, _ucal_get, _ucal_getAttribute, _ucal_getKeywordValuesForLocale, _ucal_getNow, _ucal_getTimeZoneDisplayName, _ucal_getTimeZoneIDForWindowsID, _ucal_getWindowsTimeZoneID, _ucal_open, _ucal_openTimeZoneIDEnumeration, _ucal_set, _ucal_setMillis, _ucol_close, _ucol_closeElements, _ucol_getOffset, _ucol_getRules, _ucol_getSortKey, _ucol_getStrength, _ucol_getVersion, _ucol_next, _ucol_open, _ucol_openElements, _ucol_openRules, _ucol_previous, _ucol_safeClone, _ucol_setAttribute, _ucol_setVariableTop, _ucol_strcoll, _ucurr_forLocale, _ucurr_getName, _udat_close, _udat_countSymbols, _udat_format, _udat_getSymbols, _udat_open, _udat_setCalendar, _udat_toPattern, _udata_setCommonData, _udatpg_close, _udatpg_getBestPattern, _udatpg_open, _uenum_close, _uenum_count, _uenum_next, _uldn_close, _uldn_keyValueDisplayName, _uldn_open, _uloc_canonicalize, _uloc_countAvailable, _uloc_getAvailable, _uloc_getBaseName, _uloc_getCharacterOrientation, _uloc_getCountry, _uloc_getDefault, _uloc_getDisplayCountry, _uloc_getDisplayLanguage, _uloc_getDisplayName, _uloc_getISO3Country, _uloc_getISO3Language, _uloc_getKeywordValue, _uloc_getLCID, _uloc_getLanguage, _uloc_getName, _uloc_getParent, _uloc_setKeywordValue, _ulocdata_getCLDRVersion, _ulocdata_getMeasurementSystem, _unorm2_getNFDInstance, _unorm2_getNFKCInstance, _unorm2_getNFKDInstance, _unorm2_isNormalized, _unum_close, _unum_getAttribute, _unum_getSymbol, _unum_open, _unum_toPattern, _ures_close, _ures_getByKey, _ures_getSize, _ures_getStringByIndex, _ures_open, _usearch_close, _usearch_first, _usearch_getBreakIterator, _usearch_getMatchedLength, _usearch_last, _usearch_openFromCollator, _usearch_setPattern, _usearch_setText.
0
2
221
Sep ’23