2015-04-17 5 views
16

У меня проблема с покупками In-App на iOS. У меня есть 5 покупок в приложении в игре, все из которых работают точно так, как ожидалось, когда тестировались на iPhone 6 (iOS 8.3). Когда я иду тестировать iPad Air 2 (iOS 8.2), все IAP немедленно сбой. Кто-нибудь еще испытал эту проблему? Есть ли какой-то код, специфичный для iPad, который я должен добавить?In-App Purchase работает на iPhone, но не iPad

EDIT: Странно, обновление iPad до iOS 8.3 устраняет проблему. Любые идеи относительно того, почему этот вопрос возникает? Должен ли я изменить свое приложение, чтобы поддерживать только iOS 8.3 и выше?

Чтобы проверить приложение, я использую TestFlight, то же сетевое подключение и тот же Apple ID.

код я использую для In-App покупки ниже:

func inApp() { 
    if (SKPaymentQueue.canMakePayments()) 
    { 
     var productID:NSSet = NSSet(object: product_id); 
     var productsRequest:SKProductsRequest = SKProductsRequest(productIdentifiers: productID as Set<NSObject>); 
     productsRequest.delegate = self; 
     productsRequest.start(); 
    }else{ 
     displayAlert() 
    } 
} 

func buyProduct(product: SKProduct){ 
    var payment = SKPayment(product: product) 
    SKPaymentQueue.defaultQueue().addPayment(payment); 

} 

func productsRequest (request: SKProductsRequest, didReceiveResponse response: SKProductsResponse) { 
    var count : Int = response.products.count 
    if (count>0) { 
     var validProducts = response.products 
     var validProduct: SKProduct = response.products[0] as! SKProduct 
     if (validProduct.productIdentifier == product_id) { 
      println(validProduct.localizedTitle) 
      println(validProduct.localizedDescription) 
      println(validProduct.price) 
      buyProduct(validProduct); 
     } else { 
      println(validProduct.productIdentifier) 
     } 
    } else { 
     displayAlert() 
    } 
} 


func request(request: SKRequest!, didFailWithError error: NSError!) { 
    self.displayAlert() 
} 

func paymentQueue(queue: SKPaymentQueue!, updatedTransactions transactions: [AnyObject]!) { 
    for transaction:AnyObject in transactions { 
     if let trans:SKPaymentTransaction = transaction as? SKPaymentTransaction{ 
      switch trans.transactionState { 
      case .Purchased: 
       SKPaymentQueue.defaultQueue().finishTransaction(transaction as! SKPaymentTransaction) 
       if product_id == "com.shv.FrenzyTenLives" { 
        defaults.setInteger(10, forKey: "totalLives") 
       } else if product_id == "com.shv.FrenzyFiveLives" { 
        defaults.setInteger(5, forKey: "totalLives") 
       } else if product_id == "com.shv.FrenzyInfiniteLives" { 
        defaults.setBool(true, forKey: "infiniteLives") 
       } else if product_id == "com.shv.FrenzyShield" { 
        defaults.setInteger(5, forKey: "shieldValue") 
       } else if product_id == "com.shv.FrenzyRemoveAds" { 
        defaults.setBool(true, forKey: "adsRemoved") 
        adBanner.hidden = true 
       } 
       break; 
      case .Failed: 
       SKPaymentQueue.defaultQueue().finishTransaction(transaction as! SKPaymentTransaction) 
       self.displayAlert() 
       break; 
      case .Restored: 
       SKPaymentQueue.defaultQueue().restoreCompletedTransactions() 
       if product_id == "com.shv.FrenzyTenLives" { 
        defaults.setInteger(10, forKey: "totalLives") 
       } else if product_id == "com.shv.FrenzyFiveLives" { 
        defaults.setInteger(5, forKey: "totalLives") 
       } else if product_id == "com.shv.FrenzyInfiniteLives" { 
        defaults.setBool(true, forKey: "infiniteLives") 
       } else if product_id == "com.shv.FrenzyRemoveAds" { 
        defaults.setBool(true, forKey: "adsRemoved") 
        adBanner.hidden = true 
       } 
       break; 
      default: 
       break; 
      } 
     } 
    } 
} 
+0

использовать песочницы тестеры ли? Используете ли вы ту же учетную запись на своих устройствах? – Krivoblotsky

+1

Определите «сбой немедленно». Показывать коды или сообщения об ошибках (или и то, и другое). Подтвердите, что у устройства есть доступ к сети, правильные входные данные для песочницы (как указано @ Кривоблоцким) и т. Д. –

+0

Я обновил вопрос, включив код и ответ на вопрос @ Кривоблоцкого. –

ответ

0

без определения «не в состоянии сразу же» моя догадка, что вы не вошли в систему к действительному тестирования песочнице счета на iPad и в середине обновления версии iOS это примирилось, поэтому она работает на 8.3.

Самый простой способ получить тестирование IAP для работы, чтобы выйти из Itunes:

Settings -> App and iTunes Store -> Tap apple ID and log out. 

После того, как вы вошли, попробуйте сделать IAP, и вам будет предложено войти в систему - как только вы введите действительные учетные данные тестовой учетной записи, IAP будет загружаться - если это не так, опубликуйте здесь свои файлы журналов. Обратите внимание: вы можете найти или создать тестовые учетные записи внутри iTunes Connect.

IAP - чрезвычайно сложный объект с многочисленными точками отказа - зная, что ваши IAP работают на одном устройстве, но не другие указывают на проблему с конфигурацией, характерную для устройства, на котором был сбой IAP.

-1

Обычно, когда одно устройство не будет работать при покупке приложения, это параметр под ограничениями.

Если вы отметили или отключили это ограничение или все ограничения, вы можете исправить это, полностью выйдя из App Store и отключив устройство. Когда он начнется чисто, вы можете снова войти в систему. Когда вы входите в систему, обязательно купите что-нибудь (бесплатную песню недели, бесплатное приложение или даже платное приложение), чтобы пройти проверку вопросов. Как только это будет сделано, перепроверьте IAP (покупка в приложении), чтобы убедиться, что все работает.

В крайнем случае вам может потребоваться обратиться в службу поддержки Apple Apple ID, но чаще всего вы можете исправить это, не требуя их помощи.

Вы должны проверить следующее.

Убедитесь, что вы можете ответить «да» на каждый из этих вопросов:

  • Разрешен вы In-App покупки для вашего ID App?
  • Вы проверили Очистить для продажи для вашего продукта?
  • Содержит ли идентификатор вашего проекта .plist ID вашего идентификатора приложения?
  • Вы создали и установили новый профиль обеспечения для нового идентификатора приложения?
  • Вы настроили свой проект на кодовый знак, используя этот новый профиль подготовки?
  • Используете ли вы полный идентификатор продукта при создании SKProductRequest?
  • Вы ждали несколько часов с момента добавления своего продукта в iTunes Connect?
  • Вы пытались удалить приложение с устройства и переустановить?
  • Является ли ваше устройство взломанным? Если это так, вам нужно вернуть джейлбрейк для работы IAP.

Если вы ответили «Нет» любому из этих вопросов, то это ваша проблема.

Вы должны посетить следующие ссылки: определенно вы получите решение.

https://www.innofied.com/in-app-purchase-working-ios-solution/