React-native-iap: Não pode ser executado no iOS devido a 'nome de tipo desconhecido 'SKPaymentDiscount'

Criado em 25 abr. 2019  ·  38Comentários  ·  Fonte: dooboolab/react-native-iap

Versão do react-native-iap

2.4.9

Versão do react-native

0,59,5

Plataformas que você enfrentou o erro (IOS ou Android ou ambos?)

iOS

Comportamento esperado

Compilações de aplicativos

Comportamento real

O aplicativo não compila

Ambiente testado (Emulador? Dispositivo Real?)

Emulador

Passos para reproduzir o comportamento

Apenas react-native run-ios com as versões acima de react-native-iap e React native

Este é o erro exato que recebo:

/node_modules/react-native-iap/ios/RNIapIos.m:167:5: unknown type name 'SKPaymentDiscount'; did you mean 'SKProductDiscount'?

Tentei renomear SKPaymentDiscount para SKProductDiscount apenas para ver e estava recebendo erros diferentes.

Deixe-me saber se você tiver alguma dúvida.

⌛️ legacy 📱 iOS

Comentários muito úteis

estou tendo esse problema também na versão 2.4.11 . A única versão que funcionou antes de @hyochan fazer alterações é 2.4.8

Todos 38 comentários

Eu ainda não testei isso na versão ios recente. Eu sinto que houve mudanças na versão mais recente. Você poderia nos dar um PR se possível?

@hyochan eu ficaria feliz, mas não tenho 100% de certeza de como faria isso. Você pode me orientar na criação de um PR para vocês? não sei qual seria a correção

@ndejesus1227 Você acha que encontrou a solução para esse problema?

@hyochan não, eu não tenho. Fiz tentativas de corrigi-lo, mas só conheço JavaScript. Eu teria que encontrar alguém para ajudar que conhecesse o iOS nativo muito melhor do que eu

@ndejesus1227 Na verdade, esse recurso foi implementado por @renatoalencar em #455. Eu não posso ajudar isso mais no momento.

Obrigado, @hyochan.

@renatoalencar em qual versão do react native você está rodando? Não tenho certeza se devo fazer o downgrade do react-native-iap ou do RN por enquanto

Olá @ndejesus1227 , é por minha conta, desculpe. O que realmente está acontecendo é que sua versão do iOS está abaixo de 12.2. Como a documentação da Apple descreve, o SKPaymentDiscount está disponível apenas para iOS 12.2+.

Eu deveria verificar a versão real do iOS, mas acabei esquecendo.

@renatoalencar ah, tudo bem. Isso faz sentido. Você tem alguma ideia de quando você pode fazer uma correção para isso? Você pode levar o seu tempo, apenas curioso

Farei o downgrade para uma versão antes desta atualização até que isso seja resolvido @hyochan @renatoalencar

estou tendo esse problema também na versão 2.4.11 . A única versão que funcionou antes de @hyochan fazer alterações é 2.4.8

Obrigado pela explicação @ggdegreat , então vou para 2.4.8 !

Eu estava tendo o mesmo problema e posso confirmar que 2.4.8 corrige o problema. Obrigado pela ajuda!

Portanto, o pacote não será compatível com ios abaixo de 12 de 2.4.9 . Atualizei o readme para migração .

O pagamento com o Apple Pay (e sem pop-up) vai funcionar?

Precisamos manter a sincronização de ambas as versões se quisermos usar na biblioteca de produção.

Não podemos escolher entre a versão > 12 ou a versão < 12 para negócios!

Provavelmente há algo que eu não entendo! Obrigado pelo seu trabalho @hyochan !

Eu tive o mesmo problema - agora resolvido. Por mais de um ano eu não abri o Xcode. Agora peguei meu iphone 6s e atualizei para o firmware 12.3.1; meu mac ainda estava em 'Sierra', então minha instalação do Xcode não era compatível com o ios mais recente. Ao tentar executar o código no iphone conectado ao macbook, recebi essas mensagens. Então a solução:

  • Atualizei meu Mac-OS para 10.14.5
  • Eu atualizo o Xcode para 10.2.1
  • Eu uso react-native-iap 2.5.5
  • iPhone 6S com iOS 12.3.1
  • ejetado expo-project com SDK 32.0.0, o que significa expo-modified-react-native baseado em 0,57

---> agora tudo funciona

Portanto, o aplicativo que usa esta biblioteca não funcionará quando executado no iOS <12.2 ?

Será a partir de 3.0.0

Obrigado, vai ficar em 2.4.8 até 3.0.0 ser lançado

@DataGreed Acaba de lançar 3.0.0 agora.

@hyochan ainda podemos ver o problema com SKPaymentDiscount na v3.0.0.

Há algo que estamos perdendo? acabamos de atualizar a versão em package.json, instalamos e limpamos/compilamos o aplicativo em xcode. O erro ainda aparece.

@danidfm Qual é o seu alvo de construção em ios ? Além disso, tente remover totalmente node_modules antes npm install

build target é 11.0 e removemos completamente a pasta node_modules.

mesmo problema comigo - tentei 3.0.0, mas voltei para 2.4.8

(a propósito, antes disso eu tentei as versões 3.0.0 RC e ainda recebi o mesmo erro)

Vocês poderiam testar o projeto IamExample e ver a diferença com o seu projeto? Eu quero ser claro ao olhar para os mesmos códigos.

Olá @ndejesus1227 , é por minha conta, desculpe. O que realmente está acontecendo é que sua versão do iOS está abaixo de 12.2. Como a documentação da Apple descreve, o SKPaymentDiscount está disponível apenas para iOS 12.2+.

Eu deveria verificar a versão real do iOS, mas acabei esquecendo.

Eu só quero dizer que ele literalmente enviou que deveria verificar a versão e evitar esse problema, mas ele esqueceu. Seu pull request nunca deveria ter sido mesclado no master

Tentando executar o projeto no Xcode para meu iPhone com iOS v12.3.1
Mesmo erro, usando react-native-iap v3.2.2.
Indo para 2.4.8 (compilação bem-sucedida)

Acho que o motivo é a versão do iOS instalada no dispositivo

Isso é muito estranho, porque alguns deles já confirmaram que a compilação está ok (eu também). Se você estiver tendo problemas para atualizar, tente remover ios/build e tente novamente.

Acabei de tentar construir agora. Verifique IapExample .
image

@hyochan obrigado por seu grande apoio!

Acabei de tentar todas as dicas mencionadas neste problema (node_modules completamente removido antes da instalação do npm, aplicativo limpo, ios/build removido). Infelizmente, ainda estou recebendo esse problema em combinação com o build target 11.2 e react-native-iap v3.2.2. Eu também tentei fazer o downgrade para v2.4.8, o que leva a uma compilação bem-sucedida. Além disso, tentei configurar o IapExample, mas acabei neste problema react-native (https://github.com/facebook/react-native/issues/25252)

Estou tendo o mesmo problema em um iMac com macOS 10.13. Meu macbook rodando 10.15 está funcionando bem,

Talvez a versão mais antiga do mac não esteja funcionando? 🤔

@murilobast diferentes versões do xCode?

Verifique o bloco de código de erro da versão #if __IPHONE_12_2 e reconstrua

`#if __IPHONE_12_2

    SKPaymentDiscount *discount = [[SKPaymentDiscount alloc]
                                   initWithIdentifier:discountOffer[@"identifier"]
                                   keyIdentifier:discountOffer[@"keyIdentifier"]
                                   nonce:[[NSUUID alloc] initWithUUIDString:discountOffer[@"nonce"]]
                                   signature:discountOffer[@"signature"]
                                   timestamp:discountOffer[@"timestamp"]
                                   ];

    SKMutablePayment *payment = [SKMutablePayment paymentWithProduct:product];
    payment.applicationUsername = usernameHash;
    payment.paymentDiscount = discount;

    [[SKPaymentQueue defaultQueue] addPayment:payment];
    [self addPromiseForKey:RCTKeyForInstance(payment.productIdentifier) resolve:resolve reject:reject];
    #endif `

assim

Eu estava me deparando com esse problema. Atualizar meu xcode de 10.1 para 10.2.1 corrigiu meu problema. Eu sou capaz de construir meu projeto agora.

Mesmo problema com o Xcode 10.1, não consigo atualizar o XCode para 10.2 porque ele precisa do OSX 10.14.3, não suportado pelo meu antigo iMac travado em 10.13.6.

@lc3t35 , como você construiu o projeto iOS com o Xcode 10.1?

@liudmyla-schastlyvets Não consigo construir com 10.1, tive que usar outro computador com a versão mais recente do Xcode :(

reagir-nativo: 0,59,0
react-native- iap:2.4.8
Código X: 10.1
Projeto Construído com Sucesso. Obrigado

Sim eu também ! excelente trabalho dos mantenedores!

Esta página foi útil?
0 / 5 - 0 avaliações