Dear Experts,
PHAsset.creationDate is an NSDate, which does not have a timezone associated with it, right?
Consider a photo viewer app. If I take a photo of the sunrise at 0600 local time while I am away, when I get home and view the photo in the app, I believe I want the timestamp shown with the photo to be 0600. Do you agree?
But NSDate is just a time-point, and I don't think Foundation (or anything else in iOS) has a type that combines a time-point with a time zone. Nor does PHAsset have any other useful attributes - unless I were to determine the time zone from the location!
Am I missing anything?
Post
Replies
Boosts
Views
Activity
I have a new app which requires iOS 16. App Store Connect wants me to upload screenshots of various sizes, mostly optional - but 5.5" with square corners and physical home button is required.
As I understand it, the only device that can run iOS 16 and that has a 5.5" screen is the iPhone 8 plus.
I have an iPhone 6 plus, which has the right dimensions, but it doesn't run iOS 16. The newer phones with physical home buttons (i.e. the SE 2 and 3) have 4.7" screens.
Apple won't sell me anything older than an iPhone 12, even refurbished. Do I need to buy an iPhone 8 plus from eBay? Is there something that I can do to prevent the app from running on this device, and thereby make this screenshot size not required?
When I run my iOS app on my Mac using "designed for iPad", it seems to get presentedItemDidChange for files it is displaying once every second.
There don't seem to be any changes to the files in the filesystem. Is there any way to debug what is causing the app to receive the presentedItemDidChange callback?
Dear Experts,
I'm attempting to make a custom icon appear in the iOS Files app, etc., for my file type. I've found a couple of bits of documentation for Info.plist keys:
https://developer.apple.com/documentation/bundleresources/information_property_list/utexportedtypedeclarations/uttypeiconfiles describes UTTypeIconFiles, to be included in UTImportedTypeDeclarations. This documentation is very sparse!
Older document https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html#//apple_ref/doc/uid/TP40009249-SW9 describes CFBundleTypeIconFiles, to be included in CFBundleDocumentTypes.
Which of these should I be using? (Both? Neither?)
Nothing I've tried so far has worked. I wonder if I need to, for example, power-cycle to make the Files app pick up the new icons.
Also, in Xcode, I've found the Imported Type Identifiers section of the Info settings which has a box labelled "Add imported type identifiers here" - but clicking + and choosing a file does nothing; the box remains empty. Anyone else have that problem?
What size should the icons be? The older document suggests some rather small sizes, e.g. 22x29; the newer doc says nothing.
Suggestions anyone?
Dear Experts,
Now that Macs have ARM processors - and in some cases, the exact same ARM processors as some iOS devices - why can't XCode's simulators run the same executables as the devices?
Specifically, I can build my iPad app and run it on my iPad, and I can then run the exact-same app on my Mac, using the "My Mac - designed for iPad" target. So in that case, the Mac OS does whatever mapping is needed to run the iOS executable. But if I want to run on the Mac simulating a particular iPad device, I need to build a different executable. (This obviously made sense when the Mac was x86 and the iPad was ARM.)
It's time consuming for me to create simulator builds mainly because of the third-party (i.e. mostly open-source) libraries that I link with, which need to be re-built for the simulator; often, cross-compiling these things is difficult enough to do once, let alone twice.
My only use for the simulator is to test on devices with different screen sizes than the physical devices that I have. Running in "designed for iPad" mode and resizing the window is almost sufficient, but it doesn't let me see the effect of notch / round-corner safe area insets, and the display scale may be different.
Thoughts anyone?
Does anyone know if it’s possible for a WKWebView showing a web page in the app bundle - a help screen in my case - to show SF Symbols, by name? I’d like the help page to include some of the symbols that I use for buttons elsewhere in the app. Can I do this without having to make PNGs of the symbols?
Thanks.
Has anyone ever tried to use XML & XSLT in WKWebView, with the files included in the app bundle?
I.e. example.xml:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="transform.xslt"?>
<page>
</page>
transform.xslt:
<xsl:transform
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
>
<xsl:template match="page">
<html>
<body>
<p>Hello World</p>
</body>
</html>
</xsl:template>
</xsl:transform>
When I attempt to load that as file:///path/to/bundle/example.xml, I get a blank page (and nothing in the console).
Various questions:
I know that generally web console output inside apps doesn't appear in the logs, and there are various suggestions about injecting user scripts to fetch them by replacing e.g. console.log. But does that only fetch errors generated by Javascript, or does it also fetch other error messages? Should I be able to attach to my WKWebView's console from Safari on my Mac, over USB?
If I try to view the same file using a file: URL in Safari on my Mac, I discover that security policy prevents a file: XML document from using a file: XSLT even if they are in the same directory; it considers all file: URLs to have different origins. I don't see that error with the WKWebView, hence question (1).
Is there anything that I can do with WKWebView to permit access from a file: XML document to a file: XSLT document in the same directory, within the app bundle? I have tried using loadURL: allowingReadAccessToURL:, and that doesn't seem to work. I'm also aware of the WKSecurityOrigin type, and I wonder if I can use that to persuade WKWebView that the XML and XSLT are "same origin". Does this require that I implement a "content blocker"? Can a content blocker ever relax restrictions, rather than tightening them?
Thanks for any suggestions!
Dear Experts,
I am confused by what seems to be a difference in behaviour of the Files app on an iPhone compared to an iPad.
On the iPad, I seem to be able to view my app's Documents/ folder; on the iPhone, I can't. On the other hand I can access the app's iCloud documents on both devices.
Is this the expected behaviour? If so, what is the rationale?
Thanks, Phil.
Dear Experts,
What is the current best practice for build numbering?
I ask because I am aware that when exporting an archived app for upload I am now asked if I want Xcode to manage the build number for me. In the past I have set a build number in the Info.plist, often based on the date, e.g. 2.4.20230218. Now, I am asked if I want that to be replaced by something like 2.4.7 (if I recall correctly). So far I've answered No.
Previously I have searched for automatic build numbering and I've found web pages that suggest adding a script to the build process that automatically increments the build number in the info.plist, or similar. I've not tried to implement that myself.
In some of my apps, I have code that needs to know the full version at compile time (e.g. app receipt validation). How would that interact with the new feature?
Thanks, Phil.
Does anyone know the relationship, if any, between Xcode's static analyzer and clang-tidy?
I.e. is Xcode's Analyze feature actually invoking a built-in clang-tidy?
If not, does anyone have any experience using upstream clang-tidy (homebrew?) with a mostly-Xcode development flow?
I recently received an auto-email from Apple:
We noticed that there's no billing information associated with your Apple ID, so your Apple Developer Program membership cannot be automatically renewed. To renew your membership, update your Apple ID with a valid credit/debit card any time before your membership is scheduled to renew.
Update now > https://appleid.apple.com/
(This was not entirely unexpected; I changed bank account a few months ago.)
But when I visited appleid.apple.com, I found that I did have a card registered there. So I contacted support and they told me that I should actually add my card details at www dot apple dot com/shop/account/home (or my national variant of that) (*) - and indeed that website has its own section for registering payment cards, which was empty.
So I have filed a bug saying that the auto email has the wrong link in it (FB11823024). I also asked support why there were two different places where card details are recorded, and got this reply:
Apple Store payment information is used to pay what you are buying on
the App Store.
Apple ID payment is associate with your Apple Connect payment method
information.
Which is not very clear to me. What is "Apple Connect"?
Anyway.... everyone beware. If you get that email, and you think that you have definitely registered a payment card, and you follow the link and it confirms that you have registered a payment card .... don't stop worrying, your renewal may still fail!
(*) Yeah, this forum won't let me mention Apple's own websites without obfuscation.
The forum's "Last Updated" screen is all wrong - it shows lots of threads where the most recent post was months or years ago as "last updated 1 hour ago".
Is this perhaps because the thread was updated recently to remove spam? Or is there something else going wrong?
Dear Experts,
It is necessary to remove NSFilePresenters when an app goes to the background and re-add them when it returns to the foreground - if you don't do so, the app will be terminated.
But what about an app that has the location background mode enabled?
Specifically, I have an app that records your location, in the foreground or background, and writes this data to a file. It does writes to the file inside a coordinated write block, and monitors for writes from other processes. This works fine in the foreground. I'd really like to also get notifications of concurrent changes to the file while the app is in the background, but this doesn't seem to be possible.
(It's actually more likely that a file will be modified by another app while I'm in the background - consider switching to the Files app, and then back again.)
Any suggestions?
I'm considering sending some suggestions for additional symbols, but I can't find a suitable category in Feedback Assistant. Am I missing something? What category would you use? Should I first file a bug against Feedback Assistant asking for a new category??
Has anyone had any luck using Inkscape to edit custom SF Symbols?
It seems to work OK except that it doesn't understand the required layer structure. The layers are SVG group elements, which Inkscape doesn't seem to treat as layers. I think it must need some additional attributes to distinguish layers from other groups, or something.
Edited to add: specifically it seems to need the attribute inkscape:groupmode="layer" on the element. I'm going to try adding this manually to the template and see what happens!