小编Jus*_*tin的帖子

在应用程序购买收据中存储应用程序Keychain

我之前从未实现过In App Purchase,所以我使用了MKStoreKit包装器,并且有一个可行的实现.MKStoreKit将所有收据保存在UserDefaults .plist中作为BOOL,因此盗版者在"破解"状态下分发应用内购买非常简单.完成第一次购买后,可以分发捆绑包,并可以重新创建.plist以启用IAP解锁.

我想扩展MKStoreKit以在iOS钥匙串中创建In App Purchase验证数据.是否有任何缺点或可能的原因导致付费用户失败,不可靠或任何其他原因导致这样做总体上是个坏主意?我知道盗版是不可避免的,我绝对不想疏远付费用户,但我觉得UserDefaults .plist太容易绕过了.

在我的场景中,购买时会将一个简单的字符串放入钥匙串中.这样,如果二进制文件已分发,则尚未启用解锁.当然,有可能提出一种解决方法,但需要花费更多精力并知道如何找到TRUE/FALSE标志并使其始终返回正确的值.通过模糊处理,我甚至可以使跟踪它变得更加困难.

感谢您的所有见解,我感谢答案,避免强制性的不可避免的盗版,处理它的回复.我对这个解决方案的技术可行性更感兴趣.

iphone keychain piracy-prevention anti-piracy ios

42
推荐指数
1
解决办法
6067
查看次数

在iPad上确定UIInterfaceOrientation

在这种情况下我不需要指定方向,我只需要检测它,但我遇到了麻烦.我有条件代码,只能在肖像中工作,如果设备在横向,我需要做其他事情.由于deviceOrientation不一定与interfaceOrientation相同,我无法想出一种测试纵向模式的方法.

我在Google上找到的大多数教程都是强制横向或进行某种轮换的方法.我唯一想做的就是确定方向是什么.这是我的代码,它不起作用:

-(void)viewDidLoad {
    [super viewDidLoad];
    //currentOrientation is declared as UIInterfaceOrientation currentOrientation
    currentOrientation = [[UIApplication sharedApplication] statusBarOrientation];
NSLog(@"%@",currentOrientation);  // == NULL
}
Run Code Online (Sandbox Code Playgroud)

我需要有条件地确定interfaceOrientation和program的值.谢谢你的帮助!

iphone orientation ipad

35
推荐指数
3
解决办法
5万
查看次数

在Swift中的ViewController中符合协议

试图在Swift UIViewController子类中符合UITableViewDataSource和UITableViewDelegate.

class GameList: UIViewController {

    var aTableView:UITableView = UITableView()

    override func viewDidLoad() {
        super.viewDidLoad()
        aTableView.delegate = self
        aTableView.dataSource = self
        self.view.addSubview(aTableView)
        //errors on both lines for not conforming
    }

}
Run Code Online (Sandbox Code Playgroud)

文档说你应该遵循这class条线,:但这通常是超类的去处.另一个:不起作用.在超类之后使用逗号分隔列表也不起作用

编辑:

答案如下. class GameList: UIViewController, UITableViewDataSource, UITableViewDelegate {

还必须采用每个协议的所有必需方法,这是我最初没有做到的.

protocols ios swift

23
推荐指数
3
解决办法
3万
查看次数

iOS 4.1中的NSCFNumber类是什么?

在iOS 4.1上成功从iPhone相机获取图片后,您可以使用该密钥

@"UIImagePickerControllerMediaMetadata"
Run Code Online (Sandbox Code Playgroud)

返回有关图片的信息.该词典中的一个关键是

@"Orientation"
Run Code Online (Sandbox Code Playgroud)

从我的实验来看,肖像和颠倒分别是6和8,景观是1和3.看看这段代码:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
    NSDictionary *metaData = [info objectForKey:@"UIImagePickerControllerMediaMetadata"];
    id orientation = [metaData objectForKey:@"Orientation"];
    NSLog(@"Class: %@",[orientation class]);
Run Code Online (Sandbox Code Playgroud)

NSLog说"Class:NSCFNumber"

我需要比较这个对象的值来确定如何继续.横向是1或3,纵向是6或8.我不确定要键入方向或调用什么.NSNumber和NSInteger总是告诉我,我正在使用没有强制转换的指针制作整数.

谢谢你的时间!

iphone nsnumber ios

22
推荐指数
2
解决办法
2万
查看次数

UIKeyboardTypeNumberPad - 在iPad上显示numbes?

UIKeyboardTypeNumberPad在iPad上不显示数字键盘.而是显示UIKeyboardTypeNumbersAndPunctuation键盘.

有没有我遗失的东西,或者是否已将其从iPad OS中移除?

谢谢你的指导!

iphone cocoa-touch uikit ipad

18
推荐指数
2
解决办法
8555
查看次数

可以在Obj-c中为变量参数函数发送一个数组吗?

在python中,很容易构建一个字典或数组,并将其解压缩到具有可变参数的函数

我有这个:

- (BOOL) executeUpdate:(NSString*)sql, ... {
Run Code Online (Sandbox Code Playgroud)

手动方式是这样的:

[db executeUpdate:@"insert into test (a, b, c, d, e) values (?, ?, ?, ?, ?)" ,
  @"hi'", // look!  I put in a ', and I'm not escaping it!
  [NSString stringWithFormat:@"number %d", i],
  [NSNumber numberWithInt:i],
  [NSDate date],
  [NSNumber numberWithFloat:2.2f]];
Run Code Online (Sandbox Code Playgroud)

但我不能硬编码我正在调用的参数,我想:

NSMutableArray *values = [NSMutableArray array];

for (NSString *fieldName in props) {
  ..
  ..
  [values addObject : value]
}
[db executeUpdate:@"insert into test (a, b, c, d, e) values (?, ?, ?, ?, …
Run Code Online (Sandbox Code Playgroud)

objective-c

12
推荐指数
2
解决办法
1万
查看次数

在Objective-C中切换语句和实例变量分配

我似乎在switch语句中创建新的局部变量时遇到问题.我认为它是我的类标题中的东西,但是甚至在尝试分配新的NSObject时遇到错误.这是我的语法:

-(NSArray *)charactersFromChapter:(NSInteger)number {
    NSObject *noError = [[NSObject alloc] init];
    //line above does not cause error
    NSArray *characters;
    switch (number) {
        case 1:
            NSObject *obj = [[NSObject alloc] init];
            //error happens in line above (Expected expression)
            characters = [NSArray arrayWithObject:obj];
            break;
        case 2:

            break;
        case 3:

            break;
    }
    return characters;
}
Run Code Online (Sandbox Code Playgroud)

cocoa cocoa-touch objective-c switch-statement ios

9
推荐指数
2
解决办法
1万
查看次数

NSOperation不会在后台线程中发生

我创建了一个NSOperation子类来处理一些zip存档操作.无论如何,如果我覆盖-start或者-main这段代码总是发生:

if ([NSThread isMainThread]) {
    NSLog(@"I am in the main thread");
    return;
}
Run Code Online (Sandbox Code Playgroud)

知道发生了什么事吗?

我试过添加这个块:

- (void) start {  //also tried overriding main

    if ([NSThread isMainThread]) {
        NSLog(@"In main thread, trying again");
        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
            [self start];
        });
        return;
        //hard working code etc...
        //cpu intensive zip operations...
    }
Run Code Online (Sandbox Code Playgroud)

但这会导致崩溃,EXC_BAD_ACCESS违规指向该dispatch_async线.

objective-c nsoperation nsoperationqueue grand-central-dispatch ios

9
推荐指数
1
解决办法
6258
查看次数

从OSX中删除iOS SDK

这不是编程问题,而是关于SDK和IDE.在过去的几年里,我已经积累了大量不同的XCode安装,现在我的硬盘已经满了.每个SDK的时钟大约为5演出,而我的存储空间也很低,我有几个问题

3个问题:

  1. 我可以删除旧的吗?
  2. 它们存放在哪里?
  3. 最新的SDK是否会覆盖以前SDK中的基类?(NSString.h现在位于两个不同的SDK中,还是最新的SDK?
  4. 那么beta 1,beta 2,beta 3 SDK版本呢?安装GM /官方是否会从我的Mac中删除测试版?
  5. 最重要的是,如果安装4.2 SDK,我仍可以定位3.0吗?(我理解基础SDK和目标SDK之间的区别)

我想清理我的硬盘驱动器,我在160 GB驱动器上剩余大约18 GB.我想重新开始并重新安装OSX,下载一个新的SDK,但我仍然有针对3.1.2的应用程序,我不想被迫只支持4.0.

谢谢

iphone macos sdk xcode ios

8
推荐指数
2
解决办法
1万
查看次数

iAd合同到期了吗?不是这样,iTunesConnect说.iAd模块不这么认为

我最近更新了开发者会员资格.我的新合同于5月19日生效.上周我进入并浏览了我的iAd收入,并注意到我的所有iAd应用都是"红色"并且没有收到广告.在扩展细节以找出原因之后,iAd模块告诉我我的iAd合同已经过期.但是,合同,银行和税务模块报告一切正常,我的iAd合同将在2013年5月19日生效.

顺便说一下,我收入的最后一天是今年5月19日.

我打电话给Apple支持,有一个跟进电话,请求我提交截图,但我没有收到任何回复.还有其他人经历过这个吗?

iAdContract页面

iAd收入页面

itunesconnect ios iad

8
推荐指数
1
解决办法
2870
查看次数