如何使用SpringboardServices
和SBSPushStore
将其他应用的通知计入我的应用中?
我试图将whatsapp中的通知计数显示到我的应用程序中,所以我一直在搜索,有一件事是肯定的,但是我没有找到任何关于如何做到这一点的认可方式。
Here is the question它回答了它,但我没有得到它。怎么做?有人可以分享一步一步的程序。
基于这个问题,我能够找到可以使用SpringboardServices
实际锁定iPhone的代码,但我不知道如何将其用于SBSPushStore
?
void *SpringBoardServices = dlopen("/System/Library/PrivateFrameworks/SpringBoardServices.framework/SpringBoardServices", RTLD_LAZY);
NSParameterAssert(SpringBoardServices);
mach_port_t (*SBSSpringBoardServerPort)() = dlsym(SpringBoardServices, "SBSSpringBoardServerPort");
NSParameterAssert(SBSSpringBoardServerPort);
SpringBoardServicesReturn (*SBSLockDevice)(mach_port_t port) = dlsym(SpringBoardServices, "SBSLockDevice");
NSParameterAssert(SBSLockDevice);
mach_port_t sbsMachPort = SBSSpringBoardServerPort();
SBSLockDevice(sbsMachPort);
dlclose(SpringBoardServices);
答案 0 :(得分:0)
您评论的关联问题的答案暗示您不需要任何框架,只要您的设备已越狱。
您只需加载位于/var/mobile/Library/SpringBoard/applicationState.plist
的plist文件即可。该答案的格式有点破碎,但我认为>
是作为解释文件内部结构的指标(即键值)。
因此我假设它是一本字典,你可以通过
加载它NSDictionary *plistFile = [NSDictionary dictionaryWithContentsOfFile:@"/var/mobile/Library/SpringBoard/applicationState.plist"];
NSDictionary *entryForYourApp = plistFile[@"com.app.identifier"]; // obviously you have to use the identifier of whatever app you wanna check
NSInteger badgeCount = entryForYourApp[@"SBApplicationBadgeKey"];
你可能想先自己检查一下文件(所以设置一个调试点)并确保它的结构就像我假设的那样,类型是正确的等等(更不用说它存在了,Apple有时会改变这样的东西和另一个问题已经有好几年了。)
一般情况下,请注意,您只能在越狱设备上执行此操作。否则,您的应用程序根本没有对路径/var/mobile/Library/SpringBoard/applicationState.plist
的读取权限。或者对于沙箱以外的任何东西,就此而言。