Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 5/5 - 2 oy
  • 1
  • 2
  • 3
  • 4
  • 5
App Store IPv6 sorunu (Reject)
#1
Merhaba Arkadaşlar;

Firemonkey ile geliştirdiğim bir uygulamada uniconnection ile mssql bağlantısı sağlıyorum.
Apple hata iletisi olarak ipv6 uyumlu olmadığından bahsedip kabul etmiyor. Uygulamayı kendi apple telefonumda sorunsuz kullanabiliyorum. (ipv4 ağ ile)



Connection Nesnesinin ipversion özelliği var ve burada; ivIPv4, iIvPv6 ve ivIPBoth özellikleri var bunu iIvPv6 veya  ivIPBoth  yaptığımda dahi kabul etmiyor.
*Apple bu konudaki çözüm önerisi Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol sanaldan geliştirme yatığım için ipv6 konusnu ayarlayamıyorum.

Konu hakkında yardımlarınızı rica ederim.
Teşekkürler.
Cevapla
#2
Merhabalar,

Apple'da uygulamayı inceleyen ekiplerin bulunduğu network ortamı gerçekten ipV6 kullanıyor. Ve sizin uygulamanızı çalıştırdıklarında muhtemelen connection hatası alıyorlar.
Bu nedenle testlerinizi gerçekten ipv6'da yapmanız gerekiyor. Ama apple ın bazı ekipleri hala ipv6 kullanmıyor. Bu nedenle bir uygulamamız aynı nedenle kabul görmezken başka bir uygulamamız kabul gördü.

Kabul görmeyen uygulamayı ipv6 ya uygun hale getirmek için şu adımları izledik. Tabi biz verdiğin adresteki adımları gerçek mac makinaya uygulayıp test ortamı oluşturduk.
Bizim uygulamada Tidtcpclient ve tidhttp nesneleri vardı.

- Uygulama ilk açılışta global bir değişkene programın çalıştığı ortamın ipv6 olup olmadığını yüklüyoruz. Daha hiç bir yere connection vs. yapmadan önce. Sürekli bu kontrolü yapmak yerine
1 defa yapmak amacı ile.


  ipV6Mi := false;
  {$IFDEF IOS}
  ipV6Mi := getIPV6( '77.92.144.188' ) <> ''; //burada kendi kullandığınız bir ip veya bilinen bir ip yazılabilir
  {$ENDIF IOS}


Yukarıdaki fonksiyon da şu şekilde:


Uses IdStack, idGlobal;

function getIPV6( host: String ): String;
begin
  result := '';
  try
    result := GStack.ResolveHost( host, Id_IPv6);
  except
  end;
end;


- Tcpclient nesnesinde connection öncesi basit bir değişiklik yapıldı:


if ipV6Mi then 
begin
  tcpclient.IPVersion := Id_IPv6
  tcpclient.host := getIPV6( 'yedekprog.aliveli.com' ); //veya direk ip yazıldı: tcpclient.host := getIPV6( '77.92.144.188' ); 
end
else
tcpclient.host := 'yedekprog.aliveli.com'; //veya direk ip yazıdı: tcpclient.host := '77.92.144.188';


- http nesnesinde ise sadece adres kısmı yazımlarında değişiklik yapıldı:


      if ipV6Mi then
        http.get( 'http://[www.aliveli.com]/mobil/bilgi.htm', stream )
      else
       http.get( 'http://www.aliveli.com/mobil/bilgi.htm', stream ); 

      if ipV6Mi then
        http.get( 'http://[www.aliveli.com]/', stream )  //adresin sonundaki / olmayınca çalışmıyor
      else
       http.get( 'http://www.aliveli.com', stream );



Bu basit değişiklikleri yaptıktan sonra testlerde de sorunsuz çalıştı. Ve uygulama onaydan da geçti.

Umarım yukarıdaki adımlar birilerine faydalı olur. Biraz uğraşmıştık çünkü bunları yapana kadar.
Cevapla
#3
Merhaba,
Gelecekte birçok kişinin de muzdarip olabileceği bir konuya çözüm olabilecek, detaylı açıklamalarınızdan dolayı teşekkür ederim.
While true do; Hayat döngüsü, kısır değildir! Yapılan bir yanlış, o döngünün dışına çıkmanızı sağlayacaktır.
WWW
Cevapla
#4
(04-05-2017, Saat: 10:41)selimkor Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlMerhabalar,

Apple'da uygulamayı inceleyen ekiplerin bulunduğu network ortamı gerçekten ipV6 kullanıyor. Ve sizin uygulamanızı çalıştırdıklarında muhtemelen connection hatası alıyorlar.
Bu nedenle testlerinizi gerçekten ipv6'da yapmanız gerekiyor. Ama apple ın bazı ekipleri hala ipv6 kullanmıyor. Bu nedenle bir uygulamamız aynı nedenle kabul görmezken başka bir uygulamamız kabul gördü.

Kabul görmeyen uygulamayı ipv6 ya uygun hale getirmek için şu adımları izledik. Tabi biz verdiğin adresteki adımları gerçek mac makinaya uygulayıp test ortamı oluşturduk.
Bizim uygulamada Tidtcpclient ve tidhttp nesneleri vardı.

- Uygulama ilk açılışta global bir değişkene programın çalıştığı ortamın ipv6 olup olmadığını yüklüyoruz. Daha hiç bir yere connection vs. yapmadan önce. Sürekli bu kontrolü yapmak yerine
1 defa yapmak amacı ile.

  ipV6Mi := false;
  {$IFDEF IOS}
  ipV6Mi := getIPV6( '77.92.144.188' ) <> ''; //burada kendi kullandığınız bir ip veya bilinen bir ip yazılabilir
  {$ENDIF IOS}

Yukarıdaki fonksiyon da şu şekilde:

Uses IdStack, idGlobal;

function getIPV6( host: String ): String;
begin
  result := '';
  try
    result := GStack.ResolveHost( host, Id_IPv6);
  except
  end;
end;

- Tcpclient nesnesinde connection öncesi basit bir değişiklik yapıldı:

if ipV6Mi then 
begin
  tcpclient.IPVersion := Id_IPv6
  tcpclient.host := getIPV6( 'yedekprog.aliveli.com' ); //veya direk ip yazıldı: tcpclient.host := getIPV6( '77.92.144.188' ); 
end
else
tcpclient.host := 'yedekprog.aliveli.com'; //veya direk ip yazıdı: tcpclient.host := '77.92.144.188';

- http nesnesinde ise sadece adres kısmı yazımlarında değişiklik yapıldı:
      if ipV6Mi then
        http.get( 'http://[www.aliveli.com]/mobil/bilgi.htm', stream )
      else
       http.get( 'http://www.aliveli.com/mobil/bilgi.htm', stream ); 

      if ipV6Mi then
        http.get( 'http://[www.aliveli.com]/', stream )  //adresin sonundaki / olmayınca çalışmıyor
      else
       http.get( 'http://www.aliveli.com', stream );


Bu basit değişiklikleri yaptıktan sonra testlerde de sorunsuz çalıştı. Ve uygulama onaydan da geçti.

Umarım yukarıdaki adımlar birilerine faydalı olur. Biraz uğraşmıştık çünkü bunları yapana kadar.
 Merhaba,

Çözüm için teşekkürler ama
Tcpclient ile TIdHTTP ile bağlantısını anlamadım. Boş bir TCPclient nesnesi mi yaratacağız?
Cevapla
#5
Aynı gereçeyle benim uygulamayı da kabul etmemişlerdi. Bir kaç kes sunucununu ipv4 olduğunu anlatmaya çalıştım sonra kabul ettiler. Ancak bu sorunu çözmek gerek galiba.
Cevapla
#6
tcpclient.host := getIPV6( '77.92.144.188' şeklinde girildiğinde yerli oluyor mu kafama takılan nokta oraya IPV6 ipsi girilmesi gerekmiyor mu birde sunucu IPV6 Desteklemesi gerekmiyor mu

getIPV6 foksiyonu ip adresin IPV6 uyumlu mu değil diye diye sonuç gönderiyor getIPV6('0:0:0:0:0:0:0:1') ver gönderdiğimde IPV6 diye sonuc alıyor ama erişim için host ip normal ip olur sıkıntı çıkarabilir gibi Tcpclient1 için özellikle
Cevapla
#7
En azından karşınızda muhatap var derdinizi anlatabildiğiniz, Google Play'de muhatapın bile yok Angry
derdini duvara anlatıyorsun
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Kuvvete dayanamayan adalet aciz, 
Adalete dayanamayan kuvvet zalimdir.
WWW
Cevapla
#8
bu sistem aşağıdaki gibi olması gerekmiyor mu

Procedure TSocketClientForm.ConnectSocket(Var ErrorMsg: String);
Begin
  ErrorMsg := '';
  Try
    Try
      IdTCPClient.IPVersion := Id_IPv4 IdTCPClient.Port := 50000;
      IdTCPClient.Host := IP;
      IdTCPClient.Connect;
    Except
      IdTCPClient.IPVersion := Id_IPv6;
      IdTCPClient.Port := 50000;
      IdTCPClient.Host := IPV6;
      IdTCPClient.Connect;
    End;
  Except
    On E: Exception Do
    Begin
      ErrorMsg := 'Connection error! (' + E.Message + ')';

    End;
  End;

kodu buradan aldım
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Cevapla
#9
Merhaba Arkadaşlar;

Yazdığınız çözümleri henüz uygulayamadım, bununla birlikte aklıma takılan bir konuyu daha paylaşmak isterim.
Server olarak Amazon sunucuları üzerinden yayın yapıyorum, amazon tarafında şimdilik ipv6 ile ilgili çözüm Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol fakat uygulamada sorun yaşıyorum. Server tarafında baktığımda ipv6 ip almıyor olarak gözüküyor server tarafıyla ilgili bir durum da söz konusu olabilir mi?
Cevapla
#10
bu konuyu okuyunca sunucuya ipv6 alıp tanımladım şuan ip ve ipv6 ile erişebiliyorum sunucu local ipv6 olması önemli değil server aldığın yerden sana o sunucuya ulaşmak için ipv6 isteyip onu tanımlanması gerekiyor amazon da nasıl bir sunucu veriyor bilmiyorum
Cevapla

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
Question [ ÇÖZÜLDÜ ] SQLİTE bağlantı sorunu BY-HAYALET 9 260 10-07-2018, Saat: 12:41
Son Yorum: BY-HAYALET
  Android APİ sorunu - Google Play BY-HAYALET 18 586 09-07-2018, Saat: 09:47
Son Yorum: quiet1day
  S9 Plus Donma Sorunu narkotik 13 308 16-06-2018, Saat: 19:00
Son Yorum: engerex
  AVD Manager Açılışta Ömür Yeme Sorunu? hyperxman 7 203 05-06-2018, Saat: 19:27
Son Yorum: codder71
  AndroidManifest Dosyasi Karakter Sorunu codder71 5 170 30-05-2018, Saat: 10:04
Son Yorum: Fesih ARSLAN



Konuyu Okuyanlar: 2 Ziyaretçi