2017-09-28 6 views
2

私は&年前に更新するアプリを1年間持っています。それはステートマシンで書かれていた。今はいくつか追加しましたが、iOS(iOSデバッグ向けに構築された)ではconnectionRequestが機能していないようです。私はアンドロイドでそれを構築し、それは非常にうまく動作します。iOSでConnectionRequestが動作しない

public void connectionForLogin(String username, String password) { 
    ConnectionRequest cr = new ConnectionRequest() { 

     @Override 
     protected void readResponse(InputStream input) throws IOException { 
      JSONParser jSONParser = new JSONParser(); 
      Map<String, Object> parsedData = jSONParser.parseJSON(new InputStreamReader(input)); 
      ArrayList<Map<String, Object>> response = (ArrayList<Map<String, Object>>) parsedData.get("root"); 
      if (response != null) { 
       for (Map<String, Object> element : response) { 
        success = (String) element.get("login"); 
        msg = (String) element.get("msg"); 

        ArrayList<Map<String, Object>> userInfoArray = (ArrayList) element.get("user_info"); 
        Storage.getInstance().writeObject("userInfo", userInfoArray); 
       } 
      } 
     } 

     @Override 
     protected void postResponse() { 
      super.postResponse(); 
     } 

     @Override 
     protected void handleErrorResponseCode(int code, String message) { 
     } 

     @Override 
     protected void handleException(Exception err) { 
     } 

     @Override 
     protected void handleIOException(IOException err) { 
     } 

     @Override 
     protected void handleRuntimeException(RuntimeException err) { 
     } 
    }; 
    cr.setPost(true); 
    cr.setDuplicateSupported(true); 
    cr.setTimeout(30000); 
    AllUrl au = new AllUrl(); 
    InfiniteProgress ip = new InfiniteProgress(); 
    Dialog d = ip.showInifiniteBlocking(); 
    cr.setDisposeOnCompletion(d); 
    cr.setUrl(http://zzz.com/api/logins/match? + "username=" + username + "&password=" + password); 
    NetworkManager.getInstance().addToQueueAndWait(cr); 
} 
+0

これはURLによるものですか? APIはhttp&iOSにhttpsが必要だと思っています。しかし、なぜ以前のバージョンが正常に動作しているのですか? – beck

答えて

1

これは、非セキュアなURL httpからデータをフェッチからアプリケーションを防ぐ新しいAppleの規制に起因する可能性があります。これを一時的に修正するには、以下のビルドヒントを追加してください。

ios.plistInject=<key>NSAppTransportSecurity</key><dict><key>NSAllowsArbitraryLoads</key><true/></dict><key>CFBundleURLTypes</key><array><dict><key>CFBundleURLName</key><string>com.mycompany.myapp</string></dict><dict><key>CFBundleURLSchemes</key><array><string>MyApp</string></array></dict></array> 

セキュリティで保護されていないURLに接続すると、アプリが拒否されることがあります。

+0

ビルドヒントで追加した後、デバイスにデバイスをインストールすることはできません。 「アプリケーションをダウンロードできません」ダイアログボックスが表示されます – beck

+0

これはネットワークに関連しています。古いアプリを削除してデバイスを再起動してください。 – Diamond

+0

まだ同じではありません。私はcom.mycompany.myappを自分のパッケージ名に置き換えようとしましたが、probが存在します – beck

関連する問題