jus*_*man 14 objective-c uialertview in-app-purchase ios mkstorekit
我有一个使用MKStoreKit的项目的实现问题.我正在尝试实施UIAlertView各种购买选项.
这是我做各种事情并调用的代码UIAlertView:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
if(FALSE == payWallFlag)
{
// Display Alert Dialog
UIAlertView *message = [[UIAlertView alloc] initWithTitle:@"Subscription Options"
message:@"You do not have an active subscription. Please purchase one of the options below."
delegate:self
cancelButtonTitle:@"Cancel"
otherButtonTitles:nil];
[message addButtonWithTitle:@"7 Day Subscription $0.99"];
[message show];
return FALSE;
} else if(TRUE == payWallFlag)
{
// Load content
}
}
Run Code Online (Sandbox Code Playgroud)
这是alertView我试图调用的代码的物理:
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
NSString *title = [alertView buttonTitleAtIndex:buttonIndex];
if([title isEqualToString:@"Cancel"])
{
NSLog(@"Cancel Button was selected.");
}
else if([title isEqualToString:@"7 Day Subscription $0.99"])
{
NSLog(@"7 Day Subscription button pressed.");
//Buy a 7 day subscription
if([SKPaymentQueue canMakePayments]) {
[[MKStoreManager sharedManager] buyFeature:kFeatureAId onComplete:^(NSString* purchasedFeature)
{
NSLog(@"Purchased: %@", purchasedFeature);
// Send an alert to the user
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Purchase Successful"
message:@"Thank you. You have successfully purchased a 7 Day Subscription."
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert autorelease];
[alert show];
// Show the user the content now
payWallFlag = TRUE;
return TRUE;
}
onCancelled:^
{
// Send an alert to the user
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Purchase Failed"
message:@"Unfortunately you have cancelled your purchase of a 7 Day Subscription. Please try again."
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert autorelease];
[alert show];
// Block the content again
payWallFlag = FALSE;
}];
}
else
{
NSLog(@"Parental control enabled");
// Send an alert to the user
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Purchase Failed"
message:@"Unfortunately Parental Controls are preventing you from purchasing a subscription. Please try again."
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert autorelease];
[alert show];
// Block the content again
payWallFlag = FALSE;
}
}
}
Run Code Online (Sandbox Code Playgroud)
问题是我在以下内容中收到以下Xcode错误消息UIAlertView:
不兼容的块指针类型将'int(^)(NSString*)'发送到'void(^)(NSString*)'类型的参数
它出现的问题是:onComplete:^(NSString* purchasedFeature)和onCancelled:^,但我不知道如何解决这个问题.
小智 22
你不应该return TRUE;从那个块,因为那时编译器假定块返回一个int,而它应该返回void(因此不兼容的块类型).
...onComplete:^(NSString* purchasedFeature) {
NSLog(@"Purchased: %@", purchasedFeature);
// Send an alert to the user
UIAlertView *alert = [[UIAlertView alloc] ...];
[alert autorelease];
[alert show];
// Show the user the content now
payWallFlag = TRUE;
return TRUE; // <--- Remove this line.
}...
Run Code Online (Sandbox Code Playgroud)
对于第二个块(onCancelled一个),您可能错过了NSString*参数或其预期的任何内容.
| 归档时间: |
|
| 查看次数: |
9561 次 |
| 最近记录: |