UNICODE
определения Сборник UNICODE Windows построен с TCHAR
и т. д., который определяется как wchar_t
и т. д. Когда не строится с UNICODE
, определенным как сборка с TCHAR
, определенным как char
и т. д. Эти UNICODE
и _UNICODE
определяют влияние всех типов строк "T
" ; LPTSTR
, LPCTSTR
и их лося.
Создание одной библиотеки с UNICODE
, определенной и попытки связать ее в проекте, где UNICODE
не определен, приведет к ошибкам компоновщика, поскольку будет несоответствие в определении TCHAR
; char
vs. wchar_t
.
Обычно ошибка включает в себя функцию a с производным типом char
или wchar_t
, это может также включать std::basic_string<>
и т. д. При просмотре затронутой функции в коде часто будет ссылка на TCHAR
или std::basic_string
и т. Д. Это контрольный знак того, что код изначально был предназначен как для UNICODE, так и для многобайтового символа ( или "узкий").
Чтобы исправить это, создайте все необходимые библиотеки и проекты с последовательным определением UNICODE
(и _UNICODE
).
#define UNICODE
#define _UNICODE
/DUNICODE /D_UNICODE
Альтернатива также применима, если UNICODE не предназначен для использования, убедитесь, что определения не установлены, и / или многосимвольная настройка используется в проектов и последовательно применяемых.
Не забывайте быть последовательными между сборками «Release» и «Debug».
Я столкнулся с одной и той же проблемой, решил ее, отправив только имя продукта IAP, а не идентификатор моего пакета до имени продукта. Вот пример:
работает SKProductsRequest *productRequest = [[SKProductsRequest alloc]initWithProductIdentifiers:[NSSet setWithObject:@"my_product"]];
, а не
не работает SKProductsRequest *productRequest = [[SKProductsRequest alloc]initWithProductIdentifiers:[NSSet setWithObject:@"com.my_site.my_app.my_product"]];
Первоначальный ответ
У вас есть настройки вашего контракта, банков и т. д.
Исправленный ответ
Кажется, я ошибаюсь в этом. Взгляните на In-App Purchase, SKProductsRequest возвращает 0 - Продукты, все еще находящиеся в обзоре
Пожалуйста, укажите, установлена ли цена продукта в iTunesConnect или нет. Я пропустил это, и продукты были равны нулю. Весь мой день потратил на это.
Убедитесь, что в разделе «Возможности» включена функция «In-App Purchase». Если вы этого не сделаете, SKProductsRequest вернет 0 продуктов.
Кроме того, имейте в виду, что согласия на оплату приложений cotract недостаточно. Вы также должны заполнить контактную, банковскую и налоговую информацию для этого агрегированного продукта специально, чтобы это считалось выполненным.
После многократного поиска, следующие шаги решили мою проблему получения 0 продуктов для SKProductsRequest.
Откройте «Настройки»> «Войти» на свой iPhone на устройстве iOS. Если вы уже вошли в систему со своим оригинальным идентификатором Apple, нажмите на него и выберите «Выйти». Затем просто войдите с учетными данными для тестера песочницы, созданного в iTunes Connect.
В том случае, если вы проигнорировали это, сопоставление идентификатора продукта чувствительно к регистру.
Итак, если вы создали продукт на Apple с идентификатором say
< blockquote>com.yourcompany.product1
blockquote>, и вы вызываете запрос продукта с идентификатором продукта
com.yourcompany.Product1
blockquote>Ваш список будет возвращен нулевыми продуктами.
Это помогло мне заняться какое-то время: -)
ps: В отдельном проекте я нашел SKProductsRequest только начал возвращать продукты после перезагрузки. Итак, если все остальное не удается, попробуйте перезагрузить свой Mac.
Перейдем к настройкам iOS> iTunes & amp; App Store and Log out
Надеюсь, это поможет вам, я не знаю, почему: D
Проверьте все 3 вещи в списке ниже 1) проверьте свои идентификаторы продукта - они должны быть точно такими же, как в вашем коде, и в iTunes Connect -> Мои приложения -> YourAppName -> Особенности -> Покупки в приложениях 2) iTunes Connect -> Соглашения, Налоги и Банкинг -> Основные соглашения -> Платные приложения-> Контактная информация / Информация о банке / Налоговая информация (должна быть заполнена) 3 ) для его проверки
class ViewController: UIViewController {
var requestProd = SKProductsRequest()
var products = [SKProduct]()
override func viewDidLoad() {
super.viewDidLoad()
validateProductIdentifiers()
}
}
extension ViewController: SKProductsRequestDelegate {
func validateProductIdentifiers() {
let productsRequest = SKProductsRequest(productIdentifiers: Set(["candy100", "someOtherProductId"]))
// Keep a strong reference to the request.
self.requestProd = productsRequest;
productsRequest.delegate = self
productsRequest.start()
}
// SKProductsRequestDelegate protocol method
public func productsRequest(_ request: SKProductsRequest, didReceive response: SKProductsResponse) {
self.products = response.products
for invalidIdentifier in response.invalidProductIdentifiers {
print(invalidIdentifier)
}
}
}
У меня была та же проблема ...
Я просто меняю свой идентификатор пакета, который не совпадает с идентификатором пакета iTunes.
И мое приложение работает хорошо:)