Я использую Stripe и сценарий ruby с поддержкой sinatra и json для зарядки кредитных карт на iOS.Зарядка работает на имитаторе iPhone 6, но не на устройстве iPad mini с 9.3.5.
Я попытался изменить строку baseURL на свой IP-адрес, чтобы приложение могло подключиться к серверу htpp://192.168.1.11
, но все равно получалоОшибка.Я даже попробовал что-то вроде http://192.168.1.11:4567
.Как я могу заставить физическое приложение подключаться к серверу?
//original baseURL for the app
enum Constants {
...
static let baseURLString = "http://localhost:4567"
...
}
Симулятор iPhone 6
![enter image description here](https://i.stack.imgur.com/K0zEh.png)
iPad mini version 9.3.5
![enter image description here](https://i.stack.imgur.com/H6FG0.png)
В первоначальном учебном пособии использовались Swift 4, iOS 11, Xcode 9, но я изменил цель развертывания и подфайл на iOS9.
platform :ios, '9.0'
target 'RWPuppies' do
use_frameworks!
pod 'Alamofire', '~> 4.5'
pod 'AlamofireImage', '~> 3.3'
pod 'Stripe'
pod 'Cards'
end
Ruby-скрипт
#1
require 'sinatra'
require 'stripe'
require 'json'
#2
Stripe.api_key = 'YOUR_TEST_SECRET_KEY'
#3
get '/' do
status 200
return "RWPuppies back end has been set up correctly"
end
#4
post '/charge' do
#5
payload = params
if request.content_type.include? 'application/json' and params.empty?
payload = indifferent_params(JSON.parse(request.body.read))
end
begin
#6
charge = Stripe::Charge.create(
:amount => payload[:amount],
:currency => payload[:currency],
:source => payload[:token],
:description => payload[:description]
)
#7
rescue Stripe::StripeError => e
status 402
return "Error creating charge: #{e.message}"
end
#8
status 200
return "Charge successfully created"
end
Решено:
Открыл файл info.plist моих проектов и добавилКлюч называется NSAppTransportSecurity в качестве словаря.Добавил подраздел с именем NSAllowsArbitraryLoads в качестве логического значения и установил его значение YES Как загрузить URL-адрес HTTP с включенной App Transport Security в iOS 9?
установить baseURLString вhttp://192.168.1.11:4567
Запустил скрипт из терминала как ruby web.rb -o 0.0.0.0
Невозможно получить доступ к локальному серверу Sinatra с другого компьютера в той же сети