草庐IT

ios - 以编程方式区分应用程序的 Ad-hoc 和 AppStore 版本

我有一个将日志发送到KeenIO的应用程序用于记录和分析目的。将日志发送到KeenIO的代码由预处理器宏保护,因此当我在模拟器或我自己的手机上运行它时,它从不发送任何日志。我通常遵循的是——在应用程序(几乎)完成后,我发布一个临时版本并将其提供给一些使用它几天的测试人员并对其进行测试。但是,由于它也是“发布”版本,因此应用程序会发送分析数据。这些数据通常会污染本应来自真实用户的其他数据!我想以编程方式在应用程序内部知道它是临时发布版本还是AppStore发布版本,这样我就可以处理这两种情况。有办法做到这一点吗?我能想到的唯一方法是有另一个预处理器宏AD_HOC告诉它它是一个测试版本。但

ios - 用尺寸分类区分 iPad 方向

在iOS8中,Apple引入了sizeclasses来处理应用程序的布局。与其根据设备、屏幕尺寸和方向来设计用户界面,不如鼓励开发人员根据事件尺寸类别调整其应用程序的布局。我认为这是一个很好的举措。但是,对于iPad,似乎无法区分不同的设备方向(在我看来,它们提供了截然不同的屏幕空间和处理方式)。来自HumanInterfaceGuidelines:如果我只想在横向显示侧边菜单,因为它提供了更多空间,比如UISplitViewController,我现在应该怎么办?UISplitViewController是不是Apple不吃自己的狗粮而是使用其他一些指标(例如设备方向或实际屏幕宽度)

ios - 区分 StoreKit/In-App Purchase 中的初始购买和免费 "re-buy"

来自StoreKit指南:如果用户尝试购买他们已经购买的非消费品或可续订订阅,您的应用程序会收到该商品的常规交易,而不是恢复交易。但是,不会再次向用户收取该产品的费用。您的应用程序应将这些交易视为与原始交易相同的交易。这在我正在开发的应用程序中提出了一个大问题。我们已从出版商处获得大量内容的许可,以便通过应用内购买进行销售。他们要求每次我们出售一部分内容(即用户向我们付款)时,我们的服务器都会调用他们服务器上的API来报告交易。这是出于会计目的,最终用于确定我们根据与他们达成的协议(protocol)在月底向他们支付的金额。我在SO和其他地方阅读了一些关于相当频繁地调用restoreC

ios - NSRegularExpression,指定区分大小写匹配?

有没有办法使用NSRegularExpression来指定您要进行区分大小写的搜索?我正在尝试匹配下面文本中的大写TAG“ACL”。我使用的模式很简单://Pattern[A-Z]+//SearchTextACL*//Code:NSString*textBuffer=@"ACL*";NSString*pattern=@"([A-Z]+)";NSRegularExpression*regExp=[NSRegularExpressionregularExpressionWithPattern:patternoptions:NSRegularExpressionCaseInsensitive

iOS - 区分PDF中的背景文本(水印)和真实文本

我有一个pdf在它的背景上有水印。当开始扫描以在背景中突出显示带有水印或注释的任何单词时,它会被选中,因为它首先在触摸区域中找到。我正在使用CGPDFScanner扫描文本。我的问题是如何检测扫描的文本是背景文本还是PDF中的真实文本?如何区分标准文本和注释文本?谢谢。 最佳答案 一般来说,您没有机会可靠地区分“背景”和“真实”文本。文本以某种顺序绘制在页面上的某处,前景、背景、普通文本……是人类感知的问题,可能根本不会反射(reflect)在PDF内容流的结构中。您可以尝试一些有根据的猜测,例如假设“真实”文本颜色较深,而背景文本

ios - KVO 区分 willChangeValueForKey 和 didChangeValueForKey - 两者都是必要的吗?

根据Apple自己的建议,当手动设置KVC/KVO兼容访问器时,应该包括BOTHKVO方法willChange和didChange。这就是我在所有手动访问器方法中所做的。但是,observeValueForKeyPath:ofObject:change:context会针对具有完全相同字典内容的KVC方法的每一半(will和did)进行调用。当使用选项注册一个观察者时:NSKeyValueObservingOptionPrior观察者仍然被调用两次——每一半一次——并且再次使用相同的字典内容,保存唯一的区别是键“notificationIsPrior”包含在字典中。现在,当KVO用于改

ios - 是否可以将通过 3G 发出的 HTTP 请求与其他请求区分开来

具体来说,当http服务器收到来自iPhone的请求时,是否有任何方法可以确定手机具有哪种Internet连接?如果没有办法确定这一点,是否有任何好的启发式方法? 最佳答案 抱歉挖出了那具尸体,但实际上我只是在想同样的问题。关键是:没有办法直接检测到。尽管如此,我想出了一个方法,遗憾的是它需要一些准备:您需要获取发出请求的IP的主机名。例如,当我通过3G网络用我的手机向我的网络服务器发出请求并将请求IP解析为请求主机名时,我得到这个:ip-xxx-xxx-xxx-xxx.web.vodafone.de因此您需要收集(或在互联网上查找

ios - 如何区分用户是用手指还是苹果铅笔点击屏幕?

该应用程序支持iPadPro,并且必须与ApplePencil配合使用。我想做的是区分用户使用的是ApplePencil还是他的手指。类似于:if(theuserispressingthescreenwithhisfinger){dosomething}elseif(theuserispressingthescreenwithanApplePencil){dosomethingelse}我找到了UITouchTypeStylus属性,但不知道它是如何工作的。我的主要问题是示例真的很少,而且它们是用swift编写的,但我在Objective-C中工作。我无法真正理解这些示例。看这个,这是

ios - NSPredicate - 多个条件的不区分大小写的过滤

我正在使用以下NSPredicate进行过滤,NSPredicate*predicate=[NSPredicatepredicateWithFormat:@"(firstNameCONTAINS%@)OR(lastNameCONTAINS%@)OR(UserNameCONTAINS%@)",myText,myText,myText];NSArray*filtered=[responseArrayfilteredArrayUsingPredicate:predicate];它工作正常,但区分大小写。我需要过滤不区分大小写。我试过了,NSPredicate*predicate=[NSPre

iOS区分点击了哪个标注配件

在我的map注释中,我有一个UIButton作为标注中的每个辅助View。在-(void)mapView:(MKMapView*)mapViewannotationView:(MKAnnotationView*)viewcalloutAccessoryControlTapped:(UIControl*)control方法中,我如何找出哪个附件View被触摸以处理每个事件?这是我的代码:-(MKAnnotationView*)mapView:(MKMapView*)mapViewviewForAnnotation:(id)annotation{if([annotationisKindOf