如何将iOS appStoreReceiptURL放入Base 64编码string?

我想使用appStoreReceiptURL来查看某人购买了哪个版本的应用程序。 我怎样才能得到这个string? 我通过从商店下载应用程序,然后从Xcode运行新版本的应用程序来testing。 这是我试过的: NSURL *receiptUrl = [[NSBundle mainBundle] appStoreReceiptURL]; NSLog(@"receiptUrl %@",[receiptUrl path]); if ([[NSFileManager defaultManager] fileExistsAtPath:[receiptUrl path]]) { NSLog(@"exists"); NSError *error; NSString *receiptString = [[NSString alloc] initWithContentsOfFile:[receiptUrl path] encoding:NSUTF8StringEncoding error:&error]; if (receiptString == nil) { NSLog(@"Error: %@", [error localizedDescription]); } else { NSLog(@"Receipt: %@",receiptString); } } else { NSLog(@"does not exist"); } 这是我得到的: receiptUrl […]

animation期间无法获取CALayer的当前位置

我试图实现一个animation,当你按下一个button时,它将animation块放下,当你释放时,它将animation恢复到原来的位置,但无论如何我都无法获得animation块的当前位置。 这是我的代码: -(IBAction)moveDown:(id)sender{ CGRect position = [[container.layer presentationLayer] frame]; [movePath moveToPoint:CGPointMake(container.frame.origin.x, position.y)]; [movePath addLineToPoint:CGPointMake(container.frame.origin.x, 310)]; CAKeyframeAnimation *moveAnim = [CAKeyframeAnimation animationWithKeyPath:@"position"]; moveAnim.path = movePath.CGPath; moveAnim.removedOnCompletion = NO; moveAnim.fillMode = kCAFillModeForwards; CAAnimationGroup *animGroup = [CAAnimationGroup animation]; animGroup.animations = [NSArray arrayWithObjects:moveAnim, nil]; animGroup.duration = 2.0; animGroup.removedOnCompletion = NO; animGroup.fillMode = kCAFillModeForwards; [container.layer addAnimation:animGroup forKey:nil]; } -(IBAction)moveUp:(id)sender{ CGRect position […]

Multipeer连接框架 – 丢失的对端停留在Session中

我想知道这个Multipeer连接框架是否准备好在现实世界中使用,考虑到社区遇到的所有错误。 我想我正在设置它,但我尝试过的所有其他示例项目都遇到类似的问题。 我遇到的问题可能与Bonjour固有的一些问题有关,我无法弄清楚,但基本上问题如下: 我有一个活跃的MCSession与一些同龄人。 现在,如果一个设备正在一个会话中,然后强制退出 ,那么“对等”将保持无限期的连接状态。 即使browser:lostPeer:方法被该对等方调用,甚至不再在浏览器中显示为“Nearby”,我也无法强制该用户出去。 session:peer:didChangeState:方法不被该对等方调用。 当强制退出的对等方回到应用程序时, browser:foundPeer:withDiscoveryInfo:再次“find” browser:foundPeer:withDiscoveryInfo:但仍存在于session.connectedPeers NSArray中。 很明显,他们还没有收到有关会议的任何数据或更新,实际上并没有连接。 唯一似乎将原始对等体注册为MCSessionStateNotConnected到会话的工作是将该对等MCSessionStateNotConnected连接到原始会话。 然后session:peer:didChangeState:重复呼叫session:peer:didChangeState:其中peerID的新实例是MCSessionStateConnected并在peerID的旧实例调用MCSessionStateNotConnected 。 示例聊天应用程序很好地演示了这个问题: https : //developer.apple.com/library/ios/samplecode/MultipeerGroupChat/Introduction/Intro.html 由于似乎没有任何方法可以手动强制从会话中删除对等方,我该怎么办? 我应该尝试重build会议吗? 这个框架似乎有点混乱,但我试图保留判断!

有关于cocoa触摸自动UItesting的很好的教程吗?

通常我发现,几乎所有我最重要的iPhone开发testing用例都围绕着UItesting,而不是业务逻辑或数据testing。 我不太熟悉XCode环境中的自动化UItesting。 有人能指点我一个很好的教程或书吗? UPDATE 这个问题是几年前写的,从那以后UItesting已经走过了很长的一段路。 使用UI自动化仍然是一个select,但是KIF框架现在是一个更好的functiontesting解决scheme,IMO。 从KIF的github页面: KIF代表Keep It Functional,是一个iOS集成testing框架。 通过利用操作系统为视觉障碍者提供的可访问性属性,可以轻松实现iOS应用程序的自动化。 KIF使用标准的XCTesttesting目标来构build和执行testing。 testing在主线程中同步进行(运行运行循环以强制时间stream逝),从而允许更复杂的逻辑和组合。 这也使得KIF能够利用Xcode 5 Test Navigator,命令行构build工具和Bottesting报告。

有没有一种简单的方法在iOS中将货币格式化为string?

我需要一种方法来格式化价格从NSNumber到这样的string:“0.99美元”,而不是“$ 0.99”。 我的游戏使用自定义字体,而且他们不能拥有所有可用App Store货币(如GBP)的符号。 所以我认为最好是回滚到货币的string表示。 对于App Store支持的任何货币,使用的方法应该是绝对可以的。

Alcatraz在XCode 7.1

请注意,从XCode 8 Alcatraz不再适用于 编辑器扩展教程 我无法安装Alcatraz for Xcode 7.1 根据他们的twitter feed,Alcatraz应该和XCode 7.1一起工作。 我曾尝试卸载并重新安装。 我使用了推荐的安装 curl -fsSL https://raw.githubusercontent.com/supermarin/Alcatraz/deploy/Scripts/install.sh | sh 这可能与我也有XCode 6.4安装的事实有关?

iOS 8 NavigationBar BackgroundImage

在iOS 8中,只有iPhone和iPad尺寸以及纵向和横向的概念发生了变化,因此设置导航栏背景图像的function不尽相同。 目前我使用下面的代码: UIImage *NavigationPortraitBackground = [[UIImage imageNamed:@"nav-image-portrait"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)]; UIImage *NavigationLandscapeBackground = [[UIImage imageNamed:@"nav-image-landscape"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)]; [[UINavigationBar appearance] setBackgroundImage:NavigationPortraitBackground forBarMetrics:UIBarMetricsDefault]; [[UINavigationBar appearance] setBackgroundImage:NavigationLandscapeBackground forBarMetrics:UIBarMetricsCompact]; 小节度量部分从iOS 8开始已被弃用。当启动我的应用程序时,只需在iPhone 6或6 Plus上水平重复横条即可。 我已经看过图像切片,但我不认为这是解决scheme。

iOS上的边栏菜单实现,如Facebook?

我想在iOS 6中创build像Facebook iPhone应用程序中的边栏菜单。 我如何创build它? 我是这个iPhone开发的新手。 请给我一些指点或告诉我一些基本的教程,我可以一步一步来实现它。

来自Jenkins / SSH的Xcode,Codesign Error – “用户交互不被允许”

我想在Jenkins上运行一个自动化的xcodebuild,但是我遇到了错误 用户交互是不允许的。 命令/ usr / bin / codesign失败,退出代码为1 我已经引用了“用户交互不被允许”尝试使用codesign和其他类似的线程来签署OSX应用程序 ,但是没有一个解决scheme似乎正确地解决了错误。 这是我已经尝试过的: 我已经允许所有项目访问钥匙串,并且我已经特别添加了对“始终允许”列表的编码(正如https://stackoverflow.com/a/22637896所做的那样) 我已经设置钥匙串不会自动locking超时,无论是通过钥匙串访问的设置,并通过命令 security set-keychain-settings -t 3600 -l <KEYCHAIN> 我曾试过打电话 codesign –sign <CODE SIGN IDENTITY> –force … 在项目编译之前(更具体地说,这个解决schemehttps://stackoverflow.com/a/20208104 ),虽然这成功地build立了项目,我不认为编译之前的编码是正确的或可靠的。 (编辑:这从jenkins运行时也失败了) 这里是我正在执行的命令: security unlock-keychain -p <PASSWORD> <KEYCHAIN> xcodebuild -scheme <SCHEME> -workspace <WORKSPACE> -derivedDataPath <BUILD DIRECTORY> -configuration <CONFIGURATION> "CONFIGURATION_BUILD_DIR=<BUILD DIRECTORY>" "CODE_SIGN_IDENTITY=<CODE SIGN ID>" "PROVISIONING_PROFILE=<PROVISIONING PROFILE>" clean build […]

如何检查在应用程序购买自动更新订阅有效

我正在寻找实施新的自动更新订阅使用在应用程序购买,但我不确定如何或何时检查用户当前订阅。 我的理解是,当用户最初订阅应用程序时,可以使用购买date和订阅date来计算订阅的持续时间。 这个date过后会发生什么? 我们如何检查用户是否自动续订或取消? 如果我使用restoreCompletedTransactions获取每次续订的交易和收据,系统将提示用户input他们的iTunes密码。 这是否意味着,如果他们已经购买了7天的订阅,他们将不得不在7天内input密码,当应用程序检查订阅是否仍然有效?