如何使用SpringboardServices获取应用程序ios的通知计数
如何使用SpringboardServices
和SBSPushStore
将另一个应用程序的通知计入我的应用程序? 我试图显示从whatsapp通知计数到我的应用程序,所以我正在寻找,有一件事是肯定的,这是可能的,但我怎么做没有find任何认可的方式。
这是答案的问题 ,但我没有得到它。 怎么做? 有人可以请分享一步一步的程序。
基于这个问题,我能够find的代码,实际上可以locking你的iPhone使用SpringboardServices
但我不知道如何使用它的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);
您所评论的关联问题的答案意味着您不需要任何框架,只要您的设备已越狱。 您只需加载位于/var/mobile/Library/SpringBoard/applicationState.plist
的plist文件/var/mobile/Library/SpringBoard/applicationState.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"];
你可能首先要自己检查一下这个文件(所以设置一个debugging点),并确保它的结构就像我设想的那样,types是正确的等等(更不用说它存在了,苹果有时会改变这样的东西,另一个问题已经有几十年了)。
一般来说,只有在越狱设备上才能做到这一点。 否则,您的应用程序根本无法读取path/var/mobile/Library/SpringBoard/applicationState.plist
。 或者对于沙盒外面的任何事情。