需要登录输入的密码。 [环境:沙盒]

时间:2018-12-27 17:42:51

标签: ios xcode unity3d in-app-purchase

当我启动Unity iOS应用时,它会不断提示我:

  

输入的密码。 [环境沙箱]

请注意,没有用户名,我不能输入用户名。所以我也不能输入密码。

我删除了对IAP的所有引用(渠道和购买文件夹,并禁用了IAP服务),删除了iOS构建文件夹并对其进行了重新构建,然后对其进行了编译。

我退出了iPhone上的iTunes。

我仍然提示我。 我已经附上了截图。

enter image description here

4 个答案:

答案 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时遇到了同样的问题。

我的解决方案:

  1. 在AppDelegate.h中,导入StoreKit并将SKPaymentTransactionObserver添加到AppDelegate接口。
#import <React/RCTBridgeDelegate.h>
#import <UIKit/UIKit.h>
#import <StoreKit/StoreKit.h>

@interface AppDelegate : UIResponder <UIApplicationDelegate, RCTBridgeDelegate, SKPaymentTransactionObserver>

@property (nonatomic, strong) UIWindow *window;

@end
  1. 在AppDelegate.m中,导入StoreKit,然后在didFinishLaunchingWithOptions中添加观察者。
#import <StoreKit/StoreKit.h>

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{ 
  [[SKPaymentQueue defaultQueue] addTransactionObserver:self];
...
}
  1. 再次在AppDelegate.m中,添加所需的方法updatedTransactions,以满足SKPaymentTransactionObserver的协议。
(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;
    }
  }
  1. 在出现问题的物理设备上运行该应用程序,出现消息时,点按“取消”。

  2. 在XCode中查看在任何开关案例中都调用了finishTransaction。幸运的是,与未完成的交易一样,它被调用的次数也很多。

此后,该烦人的消息不应再弹出。就我而言,大约有15笔未完成的交易,这就是为什么消息每5分钟显示一次...¬

问题消失后,我评论了上面的代码,因为正如我所说,我正在使用一个框架来管理IAP。

这只是一种解决方法,但希望它对您有用。