有谁知道是否可以使用私有框架直接发送iMessage?
我尝试使用CTMessageCenter,CoreTelephony但它会发送短信,即使我的手机可以发送iMessages.
iTunes可以检测我的iPhone是黑色还是白色,那么我该如何在代码中执行此操作?
我认为这将是一个UIDevice的事情,但我不太确定.
我正在使用Jailbreak + Appsync + iOS5.0.1设备(没有开发人员许可证但有一些技巧我可以在设备上运行我的应用程序)
现在我想使用私有API launchApplicationWithIdentifier:suspended:.所以我需要补充一下
<key>com.apple.springboard.launchapplications</key>
<true/>
Run Code Online (Sandbox Code Playgroud)
到myApp.entitlements.plist文件.然后它应该工作但我仍然得到错误
'Receiver type 'UIApplication' for instance message does not declare a method
with selector 'launchApplicationWithIdentifier:suspended:''
Run Code Online (Sandbox Code Playgroud)
然后我发现有人说,如果我想使用Entitlements.plist,必须启用代码签名.这是真的吗?我必须拥有开发者许可证吗?
或者有没有其他方法来使用这种方法?我读了一些关于如何使用私有API的方法.这似乎很难.我是iOS开发的新手.
谢谢.
jailbreak iphone-privateapi entitlements code-signing-entitlements
我不打算将此应用程序发送到AppStore.这只是一个实验性的应用程序.所以,我并不担心AppStore的批准/拒绝.
我正在寻找一种方式,我如何确定
a)当前的前景应用程序是什么(我的应用程序将在当时的后台运行.我可能会使用音频播放器或voip)
b)检测新应用程序何时成为前台应用程序
我正在开发一个类似于联系人,日历的企业应用程序.即使我的应用程序在后台,我也想同步我的日历和联系人.我也很高兴使用私有API,因为我不会提交给应用程序商店.请注意,我想在没有越狱设备的情况下完成这项工作.
我正在尝试编写一个代码来处理iOS上的打开/关闭屏幕(你可以看一下这个问题,讨论类似的问题).我为此问题添加了OSX标记,因为OSX具有相同的系统范围通知功能.并且下面描述的问题继承到通知工具(vs iOS或OSX).
众所周知,注册系统范围通知com.apple.springboard.hasBlankedScreen以在屏幕关闭或打开时接收通知.
仅供参考(以下是用于注册系统范围通知的API):
但是,这种方法存在两个相互关联的问题:
因此,结果我们需要实现一些不同的屏幕打开和关闭的解决方案(因为将调用相同的通知回调,并且没有参数将具有状态).
一般来说,状态与通知回调分离的核心问题.我不知道如何优雅地处理这个问题.
我提出了两种直截了当的方法(每种方法都有缺陷).并寻找关于这种方法的另一种方法或改进的想法.
我们可以实施一个计数器来计算我们已经收到多少通知,并根据这些信息,我们将知道是否有关于打开或关闭屏幕的通知(基于我们的计数器的奇怪性).
但是,它有两个缺点:
1)在这种情况下,如果系统(因设计时间原因未知)将发送具有相同名称的其他通知,我们的逻辑将被搞砸,因为它会破坏奇怪的检查.
2)另外,我们需要正确设置初始状态.所以代码中的某个地方我们会有类似的东西:
Run Code Online (Sandbox Code Playgroud)counter = getInitialState(); registerForNotification();
在这种情况下,我们有一个竞争条件.如果系统将在我们执行getInitialState()之后发送通知并更改状态,但在registerForNotification()之前,我们将以错误的计数器值结束.
如果我们将执行以下代码:
Run Code Online (Sandbox Code Playgroud)registerForNotification(); counter = getInitialState();
在这种情况下,我们有另一种竞争条件.如果系统将在我们执行registerForNotification()之后发送通知并更改状态,但在getInitialState()之前,我们将获得一个计数器,将进入通知回调并将增加一个计数器(这将使其错误).
在这种情况下,我们不存储任何计数器,而是在通知回调中使用API notify_get_state来获取当前状态.
这有它自己的问题:
1)异步传递给应用程序的通知.因此,如果您以非常快的速度关闭屏幕,则可以在屏幕已经打开时收到两个通知.因此,notify_check将获得当前状态(与发送通知时的状态相比).
因此,当应用程序在通知回调中使用notify_get_state时,它将确定有两个通知"屏幕已打开",而不是一个通知"屏幕已关闭"而另一个"屏幕已打开".
PS一般而言,所有描述的问题并非特定于屏幕开/关情况.对于具有独特状态并使用相同通知名称发送的任何系统范围的通知,它们都是实际的.
更新1
我没有测试完全打开/关闭屏幕的情况,并且从notify_get_state()获得相同的结果.
但是,当我收到两个通知com.apple.springboard.lockstate(通过CFNotificationCenterAddObserver订阅)并且我使用另一个API来获取当前设备锁定状态并且两个通知都收到相同的值时,我有类似的情况.
所以我只是假设notify_get_state也会返回相同的值.但是,我认为这是有根据的猜测.notify_get_state的输入参数对于两个调用将是相同的(它不会更改).我不认为系统存储应由notify_get_state返回的状态的FIFO队列.
architecture macos iphone-privateapi nsnotificationcenter ios
我正在寻找一个API,它可以让我检查设备上是否安装了MDM配置文件.
它不会被提交给AppStore,因此私有API对我来说没问题.但是,它应该适用于被监禁的手机(因此越狱解决方案不适用).
更新1
我正在寻找一种方法来确定iOS设备上是否已注册此设备(与从MDM服务器检查注册的设备相比).
这是一个与iOS中的自定义振动API有关的问题吗?.我能够创建自定义振动模式,但无法控制强度.
这是凯文曹的答案复制的,它可以实现自定义振动模式:
NSMutableDictionary* dict = [NSMutableDictionary dictionary];
NSMutableArray* arr = [NSMutableArray array ];
[arr addObject:[NSNumber numberWithBool:YES]]; //vibrate for 2000ms
[arr addObject:[NSNumber numberWithInt:2000]];
[arr addObject:[NSNumber numberWithBool:NO]]; //stop for 1000ms
[arr addObject:[NSNumber numberWithInt:1000]];
[arr addObject:[NSNumber numberWithBool:YES]]; //vibrate for 1000ms
[arr addObject:[NSNumber numberWithInt:1000]];
[arr addObject:[NSNumber numberWithBool:NO]]; //stop for 500ms
[arr addObject:[NSNumber numberWithInt:500]];
[dict setObject:arr forKey:@"VibePattern"];
[dict setObject:[NSNumber numberWithInt:1] forKey:@"Intensity"];
AudioServicesPlaySystemSoundWithVibration(4095,nil,dict);
Run Code Online (Sandbox Code Playgroud)
@"Intensity"使用int值添加键的代码行不起作用,我不知道如何查看AudioServicesPlaySystemSoundWithVibration方法内部来解决问题.我有什么要传递给它以便实际改变强度?现在,如果我传递1,1000,0.4或0.0001并不重要,它总是相同的强度(在带有iOS7的iPhone 4上).任何人都可以重新创建吗?
我希望不仅能够创建振动模式,还能够创建平滑的振动包络.如何?
(由于这是一个用于仪器设计的研究项目,我(尚未)关注App Store的限制.)
我在iOS中是虚拟的,特别是在私有API中.
我有测试应用程序,现在我需要使用私有API(此应用程序不适用于App Store).
我从iOS-Runtime-Headers下载了生成的标题,下一步是什么?
在/System/Library/我有包含Frameworks,... 的库列表下PrivateFrameworks.
我是否需要将原始框架替换为我复制的框架iOS-Runtime-Headers?
因为我有其他Public API只使用的应用程序,我不想破坏它们.
从发布的链接,他们告诉验证库,例如:
NSBundle *b = [NSBundle
bundleWithPath:@"/System/Library/PrivateFrameworks/GAIA.framework"];
BOOL success = [b load];
Run Code Online (Sandbox Code Playgroud)
但这里的路径指向原始路径.
或者我想念一些东西,
谢谢
ios ×8
iphone ×4
jailbreak ×3
architecture ×1
entitlements ×1
macos ×1
mdm ×1
sms ×1
vibration ×1