当我启动Unity iOS应用时,它会不断提示我:
输入的密码。 [环境沙箱]
请注意,没有用户名,我不能输入用户名。所以我也不能输入密码。
我删除了对IAP的所有引用(渠道和购买文件夹,并禁用了IAP服务),删除了iOS构建文件夹并对其进行了重新构建,然后对其进行了编译。
我退出了iPhone上的iTunes。
我仍然提示我。 我已经附上了截图。
答案 0 :(得分:1)
在“设置”应用中的Erase All Content and Settings
上重置设备之前,一切无济于事。
答案 1 :(得分:0)
我最近遇到了同样的问题,经常有人向我询问沙箱帐户“”的凭据。 -每当我打开有问题的应用程序或网络连接更改时,都会发生这种情况。我不知道它是如何进入这种状态的,但是我发现了Milos had the answer。
本质上,如果您还没有undefined
,则需要设置SKPaymentTransactionObserver
。然后在paymentQueue:updatedTransactions:
(docs)内部,循环访问队列中的所有事务,并调用每个事务:
迅速:
SKPaymentQueue.default().finishTransaction(transaction)
Obj-C:
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
我不得不删除我在事务队列循环中拥有的现有代码,因为它似乎触发了凭据对话框,并且意味着其他事务无法完成。
通过这些临时更改运行应用程序已经解决了我afaik的问题,因此交易队列似乎很烦人。
答案 2 :(得分:0)
我通过在App Connect商店上创建新的APP和APP ID来解决此问题。
答案 3 :(得分:0)
我在使用RevenueCat(react-native-purchases)在React Native应用程序中实现IAP时遇到了同样的问题。
我的解决方案:
#import <React/RCTBridgeDelegate.h>
#import <UIKit/UIKit.h>
#import <StoreKit/StoreKit.h>
@interface AppDelegate : UIResponder <UIApplicationDelegate, RCTBridgeDelegate, SKPaymentTransactionObserver>
@property (nonatomic, strong) UIWindow *window;
@end
#import <StoreKit/StoreKit.h>
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[[SKPaymentQueue defaultQueue] addTransactionObserver:self];
...
}
(void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions{
for(SKPaymentTransaction *transaction in transactions){
switch(transaction.transactionState){
case SKPaymentTransactionStatePurchasing:
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
NSLog(@"Transaction state -> Purchasing");
break;
case SKPaymentTransactionStatePurchased:
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
NSLog(@"Transaction state -> Purchased");
break;
case SKPaymentTransactionStateRestored:
NSLog(@"Transaction state -> Restored");
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
break;
case SKPaymentTransactionStateFailed:
if(transaction.error.code == SKErrorPaymentCancelled){
NSLog(@"Transaction state -> Cancelled");
}
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
break;
}
}
在出现问题的物理设备上运行该应用程序,出现消息时,点按“取消”。
在XCode中查看在任何开关案例中都调用了finishTransaction。幸运的是,与未完成的交易一样,它被调用的次数也很多。
此后,该烦人的消息不应再弹出。就我而言,大约有15笔未完成的交易,这就是为什么消息每5分钟显示一次...¬
问题消失后,我评论了上面的代码,因为正如我所说,我正在使用一个框架来管理IAP。
这只是一种解决方法,但希望它对您有用。