Best Practices

From iPhone Development Wiki
Revision as of 03:42, 29 May 2021 by Kirb (talk | contribs) (→‎Applications and Tweaks: Make note of what HBRespringController calls through to)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Use the following guidelines to avoid your package or app being fragile and to increase the chances of it being accepted by a community host.

Applications and Tweaks

  • NSHomeDirectory() doesn't guarantee that it will return /var/mobile, especially from within sandboxed processes.
    • If your code is running as root, use extra caution when writing files that mobile can access - you might break the file's access permissions.
    • App Store apps will return their sandbox data path from NSHomeDirectory().
  • See Cydia Substrate Pitfalls for additional guidelines regarding tweaks.
  • You should consider the UDID deprecated like Apple has for some time, but if you need the device's UDID, use libMobileGestalt.dylib.
  • If you need to use singletons, see singleton pattern for advice.
  • If you need to respring from a tweak and you are targeting iOS 6 - 7, kill backboardd instead of SpringBoard. Killing SpringBoard has been known to cause some issues regarding the backlight. For iOS 8 and newer, if possible, use SBSRelaunchAction or -[HBRespringController respring] from libcephei for a more appropriate way to respring. Simply killing the processes can destroy battery usage data (the feature since iOS 8).