(.DS_Store reference makes more sense in Best Practices than MS Pitfalls.) |
(→Applications and Tweaks: Make note of what HBRespringController calls through to) |
||
(10 intermediate revisions by 5 users not shown) | |||
Line 2: | Line 2: | ||
== Applications and Tweaks == | == Applications and Tweaks == | ||
* | * <code>NSHomeDirectory()</code> doesn't guarantee that it will return <code>/var/mobile</code>, 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. | ** 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. | ||
* See [[ | ** App Store apps will return their sandbox data path from <code>NSHomeDirectory()</code>. | ||
* 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 <code>[[FBSSystemService#Relaunch SpringBoard with relaunch URL|SBSRelaunchAction]]</code> or <code>-[HBRespringController respring]</code> from [https://github.com/hbang/libcephei/blob/master/HBRespringController.x libcephei] for a more appropriate way to respring. Simply killing the processes can destroy battery usage data (the feature since iOS 8). | |||
* | |||
Latest revision as of 03:42, 29 May 2021
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).