Pembelian dalam aplikasi “Tidak dapat terhubung ke iTunes Store”

98

Saya mengalami masalah saat menguji pembelian dalam aplikasi saya. Saya mendapatkan kembali kode produk yang valid, tetapi setelah pembelian saya menerima pesan "Tidak dapat terhubung ke iTunes Store" yang ditakuti. Hal yang menarik adalah bahwa mengembalikan pembelian tampaknya berfungsi - masuk iTunes muncul.

Saya telah: - Memeriksa bahwa pembelian dalam aplikasi saya telah dibersihkan untuk dijual - Dicentang, memeriksa ulang kode sumber saya agar selaras dengan dokumentasi Apple - Menambahkan pengguna uji yang sesuai - ID aplikasi tidak mengandung wildcard - pembelian dalam aplikasi ditautkan ke aplikasi (aplikasi itu sendiri dalam keadaan ditolak pengembang, pembelian siap dikirim) - menunggu - aplikasi yang diinstal ulang, solusi dibersihkan, semua barang voodoo

arkir
sumber
26
1 untuk "semua hal voodoo" - bukankah itu benar!
Craig Watkinson
2
Apple, mengapa Anda melakukan ini begitu rumit !!!
Borzh

Jawaban:

113

Pastikan Anda telah keluar dari akun iTunes produksi di perangkat.

Saya mendapatkan kesalahan ini pada ponsel uji saya yang masuk dengan akun iTunes saya yang sebenarnya. Anda tidak dapat menguji aplikasi menggunakan akun iTunes produksi Anda, oleh karena itu kesalahannya. Saya hanya berharap Apple memberikan kesalahan yang lebih baik untuk menghindari dugaan ini ...

stevel
sumber
1
Kesalahan saya hanya tidak menyiapkan Pengguna Sandbox, saya lupa langkah itu. Dan jangan masuk ke dalamnya dari bagian Pengaturan >> iTunes pada perangkat b / c yang akan merusaknya. Tunggu dan lakukan selama pengujian yang sebenarnya.
Nathan Prather
Anda mungkin juga mendapatkan kesalahan ini saat menggunakan kembali akun kotak pasir lama yang Anda uji IAP sebelumnya di aplikasi lain dengan (Skenario saya). Apple benar-benar perlu memperbarui cara kami menguji IAP, saya kehabisan email: 0
David Baez
Saya mengujinya di simulator, jadi ini seharusnya tidak menjadi masalah di sini bukan?
Usama bin Attique
1
keluar dari semua akun iTunes. itu meminta saya untuk masuk diperlukan dan kemudian transeksi gagal. menggunakan banyak akun penguji kotak pasir tetapi tidak berfungsi.
bLacK hoLE
Bagi saya ini juga tidak berhasil ... Mencoba membuat banyak akun, beberapa dengan pengguna kotak pasir yang masuk di iTunes, yang lain tanpa pengguna yang masuk, bahkan tanpa mengkonfirmasi email, tidak ada yang berhasil!
Borzh
50

lihat FAQ Pembelian Dalam Aplikasi: Tidak dapat terhubung ke iTunes Store

Your app is running in the Simulator, which does not support In-App Purchase

Untuk pengujian dalam pembelian aplikasi selalu gunakan perangkat nyata.

DShah
sumber
Aplikasi Anda tidak memiliki versi bundel (CFBundleVersion). <- Inilah yang menyelamatkanku. Terima kasih untuk tautannya.
daltonclaybrook
25

Untuk pendatang baru, pastikan status produk pembelian dalam aplikasi Anda Ready to Submit, tanpa "metadata yang hilang". Dalam kasus saya, yang hilang adalah lokalisasi grup langganan.

masukkan deskripsi gambar di sini

Penjualan Dielson
sumber
1
Terima kasih! Dalam kasus saya, itu kehilangan lokalisasi untuk nama tampilan.
Justin
Di IAP saya, ini menunjukkan "Menunggu Unggahan". Saya masih mendapatkan kesalahan
Vaibhav Jhaveri
Ini juga yang berhasil untuk saya. Saya memiliki akun itunes aktif saya yang juga masuk sehingga akun aktif tidak masalah bagi saya
cherucole
10

Saya telah mengalami masalah ini dan saya yakin ini bug. Saya telah mengajukan laporan bug dengan Bug Id 10108270

Masalahnya tampaknya pengguna uji menjadi 'terkunci' dan mungkin ada hubungannya dengan mencoba membeli pembelian dalam aplikasi di aplikasi yang sudah dirilis dengan akun itu.

Solusi saya adalah membuat pengguna uji baru, tetapi sampai Apple kembali kepada saya, saya tidak dapat memberikan solusi yang lebih baik. Saya akan memperbarui jawaban ini ketika saya mendapat balasan.

James Webster
sumber
4
Saya telah membuat pengguna uji coba baru, tetapi itu tidak membantu.
arkir
Maaf, saya tidak dapat membantu lebih banyak, itu adalah solusi saya, sayang sekali hal itu tidak berhasil untuk Anda. Saya akan terus memperbarui jawaban ini ketika saya mendapatkan informasi lebih lanjut.
James Webster
Saya membuat akun percobaan baru dan pembelian dalam aplikasi mulai bekerja lagi. Terima kasih!
Miha Hribar
Membuat pengguna uji baru memecahkan masalah saya. (Beberapa hari yang lalu saya mendapat pemberitahuan ketika mencoba menggunakan pengguna uji coba lama saya bahwa itu telah dinonaktifkan, jadi saya harus mengaktifkannya kembali. Segera setelah itu, saya mulai mendapatkan Cannot connect to iTunes storekesalahan. Tapi begitu saya membuat tes baru pengguna, pembelian bekerja lagi.)
Andrew
pengguna baru bekerja untuk saya. coba saja sebelum melakukan hal lain.
Okhan Okbay
6

Masalah ini terus berlanjut di 2016. Luar biasa. Inilah solusi saya:

Tambahkan nomor build. Target> Umum> Identitas> Bangun.

ArthurVonBabylon
sumber
2
LUAR BIASA. Ini masih menjadi masalah di 2018. Saya tidak menggunakan nomor build dalam mode debug karena saya menambahkannya hanya untuk rilis produksi. Terima kasih telah memposting ini.
Steven Peterson
3

Ini adalah utas lama yang terkait dengan masalah yang saya hadapi hari ini.

Dalam kasus saya, saya dapat menguji pembelian dalam aplikasi di perangkat saya sampai kemarin tetapi berhenti bekerja hari ini. Ternyata Apple telah mendorong 'Amandemen untuk Aplikasi Berbayar' untuk saya tinjau dan setujui. Begitu saya menyetujui amandemen tersebut (tanpa membacanya, tentu saja), semuanya mulai berfungsi kembali. Tidak harus membuat pengguna uji baru atau solusi lain apa pun.

Mungkin ada banyak alasan pembelian dalam aplikasi tidak berfungsi, tetapi pastikan Anda sudah menyiapkannya dengan benar itunesconnectatau Anda tidak akan dapat menguji pembelian dalam aplikasi.

PicSonics
sumber
2

Saya mengalami masalah yang sama. Bagi saya itu terjadi setelah secuence ini:

  • Instal aplikasi di perangkat yang masuk ke akun Inggris di iTunes
  • Luncurkan aplikasi dan gunakan set pengguna uji di AS
  • Pesan ditampilkan mengatakan akun hanya berlaku di AS. Menutup aplikasi dan meluncurkan iTunes secara otomatis
  • Buka aplikasi Anda lagi dan coba beli lagi. Terima produk tetapi tidak ada panggilan balik atau kesalahan lainnya.

Saya tidak tahu apakah ini merupakan masalah pada platform IAP tetapi saya ingin mendapatkan kesalahan / panggilan balik untuk menanganinya dengan cara tertentu dalam kode saya.

Untuk terus menguji IAP Anda, coba salah satu dari ini:

  1. Hapus Profil Penyediaan di area Pengaturan, hapus Aplikasi dan keluar dari Bursa di Pengaturan. Lalu buka XCode dan ubah identitas penandatanganan menjadi "Jangan Masuk" untuk mengembalikannya (saya tahu bunyinya :) tapi coba) ATAU
  2. Hard reset semua Pengaturan pada perangkat Anda (Pengaturan -> Umum ...). Tentunya Anda akan kehilangan pengaturan apa pun pada perangkat itu ...
  3. Matikan aplikasi iTunes di perangkat (menu multitask) dan keluar dari Store di Pengaturan

Jika tidak ada yang berhasil, mungkin ada masalah pada platform IAP, lihat komentar saya di bawah.

Juan Fran Jimenez
sumber
Terima kasih, tetapi tidak ada metode 1 atau 2 yang berhasil untuk saya. Masih tidak dapat terhubung ke iTunes. :(
arkir
Sebenarnya, saya sudah mencoba sendiri dan saya juga tidak bisa! Saya merasa ini adalah masalah HARI INI / TERBARU dengan platform. Tetapi saya tidak dapat menemukan tautan apa pun untuk mengonfirmasi (status). Argh !. Saya meninggalkannya selama beberapa jam dan melihat apakah itu masalahnya dan itu adalah sesuatu di luar pengembang
Juan Fran Jimenez
Sudah mencoba mematikan aplikasi iTunes di perangkat (menu multitask) dan keluar dari Store di Pengaturan?
Juan Fran Jimenez
Izinkan saya menambahkan bahwa Game Center (setidaknya kotak pasir) tidak stabil selama 5 hari terakhir atau lebih. Hanya tadi malam mulai bekerja lebih baik. Saya menyebutkannya karena kode IAP saya tidak berubah sejak jawaban saya dan sekarang berfungsi. Saya cenderung berpikir ada kesalahan pada platform IAP Apple dan entah bagaimana terkait dengan Game Center juga.
Juan Fran Jimenez
1

Anda juga mungkin mendapatkan kesalahan ini saat menggunakan kembali akun kotak pasir lama yang Anda uji IAP sebelumnya di aplikasi lain dengan (Skenario saya). Apple benar-benar perlu memperbarui cara kami menguji IAP, saya kehabisan email: 0

David Baez
sumber
Saya mengalami masalah ini juga. Terkadang membuat pengguna baru membantu. Anda juga tidak perlu menggunakan email asli. Saya melalui - ## di akhir saya dan terus menambahkan yang baru.
Yeremia
1

Saya dapat membeli dalam aplikasi di iPhone tetapi tidak di iPad (11.0.2). Saya mencoba dengan semua solusi yang disebutkan tetapi tidak ada yang membantu. Setelah mencoba semua kemungkinan lain, akhirnya saya bisa membuatnya berhasil.

Saat Anda membuat akun percobaan di iTunes Connect, jangan verifikasi id email. Jika sudah diverifikasi, IAP mengembalikan kesalahan "Tidak dapat terhubung ke iTunes". Kelihatannya aneh tapi begitulah cara berhasil bagi saya. Di iPhone, terlepas dari verifikasi email, saya dapat membeli menggunakan akun pengujian.

Anish
sumber
Saya membaca ini dan kedengarannya gila pada awalnya, tetapi sebenarnya berhasil. Memiliki masalah yang persis sama dengan akun uji yang tidak dapat melakukan pembelian di iPad tetapi berfungsi dengan baik di iPhone. Sangat aneh!
axanpi
Iya. Ini aneh. Aplikasi kami ditolak karena masalah ini dan saya harus menjelaskan kepada tim peninjau apel dengan alasannya dan membuatnya disetujui.
Anish
1

Berikut daftar lengkap jika Anda mendapatkan kesalahan ini "tidak dapat terhubung ke iTunes Store":

  • Pastikan Anda memiliki pengguna kotak pasir yang dibuat di App Store Connect

  • Simulator TIDAK mendukung pembelian dalam aplikasi: uji di perangkat nyata

  • Kotak pasir mungkin tidak dapat dijangkau. Periksa Status Sistem Apple
  • Periksa apakah aplikasi Anda memiliki versi bundel (CFBundleVersion)
  • Periksa apakah produk tersebut tersedia untuk dijual. Apakah Anda membuatnya di App Store Connect?

  • Jika sebelumnya iOS 12, keluar dari semua akun iTunes produksi di perangkat. Jika tidak, Anda bisa masuk ke dalam aplikasi dev dengan akun kotak pasir Anda.

Medhi
sumber
0

Kesalahan ini juga terjadi ketika SKProductsRequest mengirimkan NSSet yang salah:

Salah:

let products = NSSet(objects: ["id1", "id2"])

Benar:

let products = NSSet(objects: "id1", "id2")
Igor
sumber
0

Dalam kasus saya, saya hanya lupa untuk menangani .faileddi transactionState. Secara khusus SKPaymentQueueue.default().finishTransaction(transaction),.

1nd3e
sumber
0

Masalah yang sama terjadi pada saya, dan saya telah memeriksa masalah tersebut termasuk formulir Apple , saya tidak dapat menemukan solusi.

Hari ini ketika saya memeriksa perangkat saya menemukan bahwa berikut ini

Di Pengaturan Perangkat -> iTunes & App Store menemukan ID Apple lain yang masuk . Jadi saya mencoba signOut itu dan memeriksa lagi pembelian InApp, itu bekerja dengan sempurna. Jadi silakan periksa apakah masalahnya terkait sama atau tidak.

Terima kasih & Salam, Unnikrishnan.P

Unnikrishnan
sumber
0

Saya harus membuka Pengaturan> iTunes & App Store, lalu gulir ke bawah ke bidang "Akun Kotak Pasir" dan Keluar dari sana. Sekarang bekerja !!!

masukkan deskripsi gambar di sini

astro4
sumber
0

Selain semua metode lain yang diuraikan di sini, jika Anda bekerja dengan langganan, tampaknya Anda perlu memastikan bahwa Anda telah membuat rahasia bersama:

"Untuk menguji atau menawarkan langganan yang dapat diperbarui secara otomatis, Anda harus memiliki rahasia bersama master atau menggunakan rahasia bersama khusus aplikasi untuk setiap aplikasi."

Rahasia bersama master dihasilkan dari tab 'Rahasia Bersama' di bagian 'Pengguna dan Akses' di App Store Connect.

Rahasia bersama khusus aplikasi dibuat di mana Anda mengelola pembelian dalam aplikasi dari aplikasi itu sendiri.

Newtz
sumber
0

Saya memperbaiki milik saya! Jika Anda mendapatkan Error Domain=SKErrorDomain Code=2 "Cannot connect to iTunes Store"kesalahan, pastikan Anda memasukkan SKPaymentQueue.default().finishTransaction(transaction). Itu berhasil untuk saya setelah saya menambahkan SKPaymentQueue.default().finishTransaction(trans)berikut ini:

func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {
    for trans in transactions{
        if trans.transactionState == .purchased {
            print("Successful.")
            SKPaymentQueue.default().finishTransaction(trans)
        } else if trans.transactionState == .failed {
            print("failed!")
            print(trans.error)
            SKPaymentQueue.default().finishTransaction(trans)
        }
    }

Ditemukan di situs pengembang Apple, di sini

Farhad Bagherzadeh
sumber