ứng dụng iOS của chúng tôi gần đây đã bị Apple từ chối vì không thể thiết lập kết nối hợp lệ với api máy chủ của chúng tôi. Chúng tôi đang sử dụng một tác nhân người dùng được định dạng đặc biệt để đăng ký mã thông báo thiết bị và vân vân. Nếu tác nhân người dùng không phù hợp với sheme của chúng tôi, thì api sẽ chặn yêu cầu.Đặt tác nhân người dùng trong AFNetworking
Tất cả hoạt động khá tốt khi thử nghiệm ứng dụng trên trình mô phỏng cũng như trên thiết bị thực. Tác nhân người dùng được đặt chính xác và cuộc gọi api đã hoạt động.
Khi Apple kiểm tra ứng dụng, họ đã từ chối ứng dụng vì ứng dụng không thể kết nối với api. Khi chúng tôi kiểm tra nhật ký máy chủ, chúng tôi nhận thấy rằng mọi yêu cầu được gửi bởi người kiểm tra của Apple đều có một tác nhân người dùng hoàn toàn khác, so với yêu cầu mà chúng tôi đã đặt trong mã.
The (đúng) user-agent, đã được thiết lập như chúng tôi đã thử nghiệm ứng dụng:
AppName-App/010002 iOS/8.1.2 on Apple iPhone/DeviceToken
The (không chính xác) user-agent, vì nó xuất hiện trong nhật ký của mình:
AppName/1.0.0.2 (iPad; iOS 8.1.3; Scale/2.00)
Ứng dụng sử dụng AFNetworking và đặt tác nhân người dùng của nó như sau:
ConnectionManager.requestSerializer.setValue(IOSREQUESTHEADER, forHTTPHeaderField: "user-agent")
Bạn có biết tại sao điều này không hoạt động khi Apple kiểm tra ứng dụng, trong khi nó hoàn toàn ổn khi chúng ta làm?
Trân trọng
Chức năng 'setValue' được gọi trực tiếp sau khi khởi tạo Khung. Điều này phải có trong bản phát hành vì nếu không thì sẽ không có bất kỳ yêu cầu nào. Vì vậy, không có khả năng nào của hàm 'setValue' không được biên dịch tôi nghĩ rằng –
Khó nói, sau đó, không có ngữ cảnh nhiều hơn. –
Những phần nào của mã sẽ giúp điều tra thêm vấn đề? –