我在我的应用程序中有很多一次购买IAP.用户可以很好地购买它们.
我的问题是,我与乱舞整合追踪真正的购买与只是一个购买的恢复,但我SKPaymentTransaction的transactionState总是回来的SKPaymentTransactionStatePurchased,而不是SKPaymentTransactionStateRestored.
显然SKPaymentTransactionStateRestored只会在- (void)restoreCompletedTransactions何时调用,但何时调用此方法?
我的思维过程是购买应该是这样的:1)用户选择产品,2)询问用户是否想购买X数量的产品.3)服务器检查用户之前是否购买过,以及是否已通过设置恢复SKPaymentTransactionStateRestored.否则,处理事务并设置SKPaymentTransactionStatePurchased.显然这是错的,我想- (void)restoreCompletedTransactions在两者之间的某个地方打电话???
谢谢,
将
我有NSTableView很多行,用户可以选择.当用户选择一行时,我得到了
- (BOOL)tableView:(NSTableView *)tableView shouldSelectRow:(NSInteger)row
Run Code Online (Sandbox Code Playgroud)
NSTableViewDelegate方法调用,这太棒了.当用户单击该行时,我会突出显示该行.
然而,问题是,当用户再次"选择"该行时,我没有再次获得委托调用(不取消选择行或选择另一行).
例如,用户单击某一行并加载某些文件.如果用户要再次选择该行,我想刷新加载的文件.但是,我没有第二次用户点击该行.
一个选项是取消选择行,但我需要保持选择,以便用户知道他们选择了哪个选项.
是否有一个我错过的委托方法告诉我何时选择了一行(或点击了它)?
提前致谢!
我正在构建一个使用Google Drive iOS SDK将文件上传到用户的Google云端硬盘帐户的应用.由于正在上传的文件的大小,我想知道用户使用了多少空间并且可用.例如,我计划在我的应用程序中有一个标签,显示用户当前正在使用10gb/100gb.
我猜可能有办法从初始登录中获取此信息,但我希望能够即时获取此信息.
提前致谢!
我用相机制作了相机AVFoundation.
一旦我AVCaptureStillImageOutput完成了它的captureStillImageAsynchronouslyFromConnection:completionHandler:方法,我就像这样创建一个NSData对象:
NSData *imageData = [AVCaptureStillImageOutput jpegStillImageNSDataRepresentation:imageDataSampleBuffer];
Run Code Online (Sandbox Code Playgroud)
一旦我有了这个NSData对象,我想将图像 - 不用 - 转换为a UIImage.我发现我可以转换成a CGImage来这样做.
在我拥有imageData之后,我开始转换为CGImage的过程,但我发现CGImageRef最终比NSData对象大三十倍.
下面是我用来转换为代码CGImage来自NSData:
CGDataProviderRef imgDataProvider = CGDataProviderCreateWithCFData((__bridge CFDataRef)(imageData));
CGImageRef imageRef = CGImageCreateWithJPEGDataProvider(imgDataProvider, NULL, true, kCGRenderingIntentDefault);
Run Code Online (Sandbox Code Playgroud)
如果我尝试NSLog超出图像的大小,当它NSData是一个1.5-2兆字节的图像时,它会达到30兆字节!
size_t imageSize = CGImageGetBytesPerRow(imageRef) * CGImageGetHeight(imageRef);
NSLog(@"cgimage size = %zu",imageSize);
Run Code Online (Sandbox Code Playgroud)
我想也许当你从NSData转到CGImage时,图像会解压缩,然后如果我转换回NSData,它可能会回到正确的文件大小.
imageData = (NSData *) CFBridgingRelease(CGDataProviderCopyData(CGImageGetDataProvider(imageRef)));
Run Code Online (Sandbox Code Playgroud)
以上与对象NSData相同.lengthCGImageRef
如果我尝试保存图像,则图像是无法打开的30mb图像.
我对使用CGImage完全不熟悉,所以我不确定我是从NSData转换为CGImage还是错误地返回,或者我是否需要调用某种方法再次解压缩.
提前致谢,
将
对于我的应用程序,用户将能够录制视频或从他们的相册中选择视频,并通过php脚本将视频文件上传到服务器.要将文件上传到服务器,我正在使用AFNetworking.我最初试图从相册上传视频,但由于我无法上传,我在主套装中添加了一个视频(我知道通过我为php脚本制作的html前端上传得很好).
代码是:
NSString *vidURL = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"mov"];
NSData *videoData = [NSData dataWithContentsOfURL:[NSURL fileURLWithPath:vidURL]];
NSLog(@"The test vid's url is %@.",vidURL);
AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:[NSURL fileURLWithPath: @"http://www.mywebsite.com"]];
NSMutableURLRequest *afRequest = [httpClient multipartFormRequestWithMethod:@"POST" path:@"/upload.php" parameters:nil constructingBodyWithBlock:^(id <AFMultipartFormData>formData)
{
[formData appendPartWithFileData:videoData name:@"file" fileName:@"test.mov" mimeType:@"video/quicktime"];
}];
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:afRequest];
[operation setUploadProgressBlock:^(NSInteger bytesWritten,long long totalBytesWritten,long long totalBytesExpectedToWrite)
{
NSLog(@"Sent %lld of %lld bytes", totalBytesWritten, totalBytesExpectedToWrite);
}];
[operation start];
Run Code Online (Sandbox Code Playgroud)
我的PHP脚本运行正常,因为我可以通过HTML表单上传相同的视频.但是,上面的代码无法访问setUploadProgressBlock.
有什么东西对任何人来说都是破碎的,还是有其他我想念的东西?
提前致谢
所以我收到的日期字符串如下所示:"2013-03-20T21:13:26-7:00",我从网络后端收到.我无法控制后端,只是一个fyi.
我的偏好是将日期格式化为:3月20日晚上9:13.
当我做以下
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
NSDate *date = [dateFormatter dateFromString:@"2013-03-20T21:13:26-7:00"];
Run Code Online (Sandbox Code Playgroud)
date 一片空白.
我的第一个想法是日期字符串看起来很奇怪,也许我应该删除T和"-7:00",因为"-7:00"会附加到我收到的每个日期,我不知道是什么那是为了.
即使在字符串看起来像@"2013-03-20 21:13:26"之后,date仍然是空的.
我承认我不是格式化日期的专家,所以如果我能在这个问题上得到一些帮助,那就太好了.
提前致谢!
所以我有一个应用程序,允许用户录制视频或从他们的照片库中选择视频,然后将视频上传到服务器.录制视频后,我获得了资产的URL.
我尝试使用以下代码将NSData设置为assetURL:
NSString *vidString =[NSString stringWithFormat:@"%@",savedVideoURL];
NSURL *vidURL = [NSURL URLWithString:vidString];
NSData *videoData = [NSData dataWithContentsOfURL:vidURL];
Run Code Online (Sandbox Code Playgroud)
savedVideoURL是录制期间获得的资产URL.资产URL看起来像这样:assets-library://asset/asset.MOV?id=6EB7A04D-3DF8-44E5-A6D8-FD98461AE75E&ext=MOV
当我尝试将NSData设置为该URL时,NSData仍然等于nil.
我无法使用以下解决方案:从ALAsset url iOS获取视频NSData
有没有其他人知道将NSData设置为该资产的URL的方法?
提前致谢!
objective-c ×5
ios ×4
ios5 ×2
afnetworking ×1
assets ×1
cgimage ×1
cgimageref ×1
cocoa ×1
date ×1
iphone ×1
nsdata ×1
nsdate ×1
nstableview ×1
storekit ×1
upload ×1
video ×1