My app is currently being reviewed. It is being rejected because of the error 301 (it is an "underlying error") encountered when purchasing an item through the review team. With Testflight, all purchases and restores work just fine with no such error ever occurring. I have already using 15 different sandbox account users and performed about 1000 test purchases and restores without errors. I still don't know when or why the 301 error occurs. The error only occurs when the app is in review.
In any case, after the rejection message, I looked at the product list in the App Store. I noticed that all products have a red warning label:
Then I changed the price for one of the products, which initially led to an error message. But after a second try the price change worked for one of the products, and all warning messages were gone:
Does anyone know the reason for these warning labels?
Does anyone have experience with error number 301?
I am using iOS 14.5 with the target platforms iPhone / iPodTouch and as IAP: non-consumable content hosted by Apple.
Post not yet marked as solved
I am trying to download app content from a password protected directory of a website served by Apache24.
The directory is protected using the following configuration segment:
<Directory "<directory path">
AuthType Basic
AuthName "Restricted Content"
AuthUserFile <password file path>.htpasswd
Require valid-user
</Directory>
Here is my swift code (running on latest betas of iOS15 or macOS12)
class Downloader: NSObject {
lazy var downloadSession: URLSession = {
// Setup configuration
let configuration = URLSessionConfiguration.default
configuration.allowsCellularAccess = true
configuration.timeoutIntervalForResource = 60
configuration.waitsForConnectivity = true
// Add authorisation header to handle credentials
let user = "*****"
let password = "******"
let userPasswordData = "\(user):\(password)".data(using: .utf8)
let base64EncodedCredential = userPasswordData!.base64EncodedString(options: Data.Base64EncodingOptions.init(rawValue: 0))
let authString = "Basic \(base64EncodedCredential)"
// Add authorisation header to configuration
//configuration.httpAdditionalHeaders = ["Authorization" : authString]
return URLSession(configuration: configuration, delegate: self, delegateQueue: nil)
}()
// Download file using async/await
func downloadAsync(subpath: String) async throws {
let request = URLRequest(url: URL(string: "https://<server>/")!)
let (data, response) = try await downloadSession.data(for: request)
guard (response as? HTTPURLResponse)?.statusCode == 200 else { throw HTTPError.withIdentifier((response as! HTTPURLResponse).statusCode) }
print(String(data: data, encoding: .utf8))
}
}
let downloader = Downloader()
Task.init {
do {
try await downloader.downloadAsync(subpath: "<filename>")
} catch {
print("Unable to download file")
}
}
As expected, if I run the code as is (with the authorisation header commented out) it does not download the file
As expected, if I then uncomment the authorisation line, and run it again, it DOES download the file
Here is the unexpected part (to me!):
If I re-comment out the authorisation line, and run it again it STILL downloads the file
This can be repeated for several minutes, before it finally refuses to download the file
The issue occurs on both iOS and macOS
There is a clear gap in my understanding here about what is going on, so my questions are:
What is causing this behaviour? A session cookie on the client, or something on the server?
Does it represented a security risk? (Could another client without credentials download the file shortly after a legitimate download)
If the answer to 2 is YES, how do I stop it?
Many thanks,
Bill Aylward
Post not yet marked as solved
I'm getting a question mark near my reference folder. Any idea why this would be happening??
The app builds and then spits out this error "Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value" by bundle.main.url
import UIKit
import WebKit
class ViewController: UIViewController {
@IBOutlet weak var loadhtml: WKWebView!
override func viewDidLoad() {
super.viewDidLoad()
let webView = WKWebView()
let htmlURL = Bundle.main.url(forResource: "index", withExtension: "html", subdirectory: "FILES")!
webView.loadFileURL(htmlURL, allowingReadAccessTo: htmlURL.deletingLastPathComponent())
view = webView
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// dispose of any resources that can be recreated
}
}
Post not yet marked as solved
Hi,Apple
I am using On Demand Resources Technology introduced in WWDC 2015 (https://developer.apple.com/videos/play/wwdc2015/214/)
I have some questions above:
1.I tagged some Resources as "Prefetch tag order". Are these "Prefetch tag order" resources downloaded automatically by iOS system immediately once App is installed?Even though App was not launched by users finger?
2.To download "Prefetch tag order" resources, Does Developer need write specific codes to invoke ?
3.To upload our App(one ipa package)To App Store,we use Transporter,not Xcode Archive.How do we upload our On Demand Resources propertyly?At the beginning,We set EMBED_ASSET_PACKS_IN_PRODUCT_BUNDLE to YES,and all the On-Demand resources was packed into ipa file.but two errors were reported by you system,like this:ERROR ITMS-90047: "Disallowed paths ( "OnDemandResources" ) found at: Payload/wework.app." and ERROR ITMS-90047: "Disallowed paths [wework.app/AssetPackManifest.plist] found at: Payload/wework.app.".Then,We set EMBED_ASSET_PACKS_IN_PRODUCT_BUNDLE to NO,this time,no error was reported,but On-Demand resources were missing and there is no way to download them.How do I upload both App and On-Demand resources propertyly?
Thank you so much
Post not yet marked as solved
I'm downloading resources from Itunes, using NSBundleResourceRequest.
The following code is using to pause the progress.
var request = NSBundleResourceRequest(tags: [tags])
self.request.beginAccessingResources { error in
if let error = error {
onFailure(error)
} else {
onSuccess()
}
}
@IBAction func buttonPauseAction() {
self.request.progress.pause()
}
But download is not getting paused.
Please help me on this, why I'm not able to pause. any reason for this
Thanks in advance.
Post not yet marked as solved
After pushing out our last app update some of our users are having trouble downloading certain on demand resources. They are receiving the following error:
Caught exception downloading ODR asset pack to device: Error Domain=AssetErrorDomain Code=6 "Asset URL has expired" UserInfo={NSDebugDescription=Asset URL has expired}
From looking at our analytics it seems some resources are affected more than others. We have seen one case where deleting the app and reinstalling fixed the issue however we have also seen a case where this did not work.
From what I've gathered in my searches it appears that changing resource tags can fix this issue. This is not guaranteed however and it doesn't explain how we ended up in this situation in the first place. We'd like to avoid having to change resource tags every release as that will effect our UX.
This issue has been hard to resolve as we are unable to reproduce the bug on our end. If anyone has run into this before please provide details to the solution and any possible ideas on the cause.
Thanks!