Post

Replies

Boosts

Views

Activity

Reply to How to block iOS App to run on a Rooted device?
Is there an official way to verify that my app is not running on a rooted device? DeviceCheck and App Attest - but beware. Why do you want to do this? It’s possible for someone to buy you app, try to run it on their jailbroken device, find that it doesn’t work, and then submit a 0-star app store review. You need to ask yourself, what does a bad review cost my business, and what does a user running my app (paid for) on their rooted device cost my business? There are also false positives. In the app where I’ve deployed App Attest, my guess is that about 0.2% of users fail app attest validation for no good reason. Apple says that you should consider App Attest as just part of your anti-fraud policy. It’s not clear to me what other factors they expect us to consider, not least as privacy policies limit what other input is available. Fundamentally, the best solution to avoiding fraud is to develop apps that appeal to demographics who are less likely to attempt to defraud you - what Dilbert called “rich stupid people”.
Topic: App & System Services SubTopic: Core OS Tags:
Apr ’24
Reply to Identifying "required reason" API call locations from app binary
If you’re calling a C or Objective-C API from Swift Are the specific things listed (NSFileCreation, NSFileModification, …) C / objC functions called from Swift? Should that grep work? it’s common for C++ stuff to get inlined Right; I looked this up previously in the libc++ source and it seems that these functions are not inlined. In my objdump I can see (mangled) std::filesystem::exists, but not stat.
Apr ’24
Reply to Guideline 5.2.1 - Legal - Intellectual Property
Your app includes content or features from GarFi, or is marketed to control external hardware from GarFi, without the necessary authorization. I recall a similar post in the past but I can’t find it now when I search. My recollection is that there is a particularly litigious manufacturer of garage door opener hardware who doesn’t want 3rd-party apps that can operate their doors, because their own app plays adverts to their victims while they wait for the door to open, and they miss out on that income if they use a 3rd-party app. I suspect that the app review bot is configured to automatically reject all apps that claim to be garage door openers. Does your app literally only work with your hardware, or is it compatible with hardware from others? If it only works with your hardware, and you can prove that, you may be able to get this resolved if you can contact an app review human. (But then they might say that it is not sufficiently useful to be on the app store.) If it does work with garage door hardware from other manufacturers, I suspect you have little chance of it getting approved.
Apr ’24
Reply to Identifying "required reason" API call locations from app binary
Mabye a dumb question but are you using any swift code in your app? might be worth to check the swift symbols as well, i've no idea exactly how they'd show up in the nm output. Right, I also don’t really know how swift symbols appear; I think there is some sort of mangling. Does anyone know? I would hope that the mangled names would still be found by grep. (There is not much swift in this app, and certainly none that interacts with the filesystem.)
Mar ’24
Reply to I plan to study iOS Development. I need to buy a MacBook.
You don’t need a high-specification mac for software development. I have an M1 mac mini and an M2 air. The mini has 16 GB RAM and the air has 8 GB. I don’t notice the difference. Regarding storage, it continues to amaze me how much disk space Xcode consumes. It is like a black hole that constantly grows and grows. First consider a mac mini. If that’s not practical, if I were you I’d get an apple-refurbished 13” M2 macbook air with 8 GB RAM. Then consider getting a large monitor (maybe you already have one?) for desk use. If you have cash to spare, get more storage. This is different from my previous advice where I have suggested that RAM is more important than disk. Note this question has been asked before, you will find more opinions if you search.
Topic: Programming Languages SubTopic: Swift Tags:
Mar ’24
Reply to Connect DSA trader question
I really don't give a flying fuck what ChatGPT thinks it means. Three things to consider: Why would section 3 exclude platforms that are small, but section 4 exclude traders that are small? What do you think the purpose of this regulation actually is? Consumers would have no trouble tracking down large traders if they want to complain. It's specifically so that consumers can complain about scam / non-functional apps from traders who would otherwise be difficult to track down. If you parse it as you want, then as the App Store is the platform that includes small traders, Apple doesn't need to collect info from anyone. Which makes no sense.
Mar ’24
Reply to Please help me read this. Am I hacked or am I ok.
Is this one of those scams where someone calls you from "Apple Support" and says, "We think you've been hacked, please go to blah blah blah in your settings app, do you see a thing that starts 'duration_ms'? You do? Yeah, that means you've been hacked, don't worry we can fix it for you, please go to ivebeenhack3d.com and install the special un-hack tool, yeah we have to call it bankingtrojan.app for security reasons, oh by the way there is a small charge for this assistance, we accept bitcoin". ?
Mar ’24
Reply to Identifying "required reason" API call locations from app binary
I just uploaded a new build for TestFlight from which I had removed libcrypto, and I still got an email saying that I am missing an API declaration for NSPrivacyAccessedAPICategoryFileTimeStamp. So I attempted to identify the symbol: % cd ~/Library/Developer/Xcode/DerivedData/blah/Build/Products/Debug-iphoneos/blah.app % nm blah | grep 'NSFileCreation' % nm blah | grep 'NSFileModification' % nm blah | grep 'fileModification' % nm blah | grep 'NSURLContentModification' % nm blah | grep 'NSURLCreation' % nm blah | grep 'getattr' % nm blah | grep ' _stat' % nm blah | grep 'fstat' % nm blah | grep 'lstat' So... no sign of any of the symbols in the published list. What's going on here? Is my method for looking for symbols flawed? Is the published list of symbols incomplete? In particular, I am using C++ std::filesystem functions that access file timestamps, but they still aren't on the list; maybe they have been added to the checker but not to the published list?
Mar ’24
Reply to Connect DSA trader question
This Section shall not apply to providers of online platforms allowing consumers to conclude distance contracts with traders that qualify as micro or small enterprises Hmm, where are the brackets in that? Is it: This Section shall not apply to (providers of online platforms allowing consumers to conclude distance contracts with traders) that qualify as micro or small enterprises Or: This Section shall not apply to providers of online platforms allowing consumers to conclude distance contracts with (traders that qualify as micro or small enterprises) ? I believe it is the former. Apple is in no sense a micro or small enterprise, obviously. And if there were any doubt, read clause 2 of article 29: this Section shall apply to providers of online platforms allowing consumers to conclude distance contracts with traders that have been designated as very large online platforms Apple has been so-designated. this Exclusion for micro and small enterprises formula is also present on the Section 3 In section 3, it's absolutely clear that it is referring to the size of the platform, not of the traders using the platform. Do you think my conclusion is accurate? No. (By the way, someone asked how long they have to supply the required data: I now see that the regulation provides 12 months; Apple may or may not actually allow that long!)
Mar ’24