1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

AndroidからSORACOMのサービスにHTTPアクセス

Last updated at Posted at 2023-09-04

したいこと

AndroidからHTTPアクセスをしたい

たまにはHTTPアクセスも重要というわけではなく、
SORACOMのSIMを使った メタデータサービス や SORACOM Harvest など、
HTTPでないとアクセスできないサービスがあり、それをAndroidアプリから使うための方法です。

自宅のローカルサーバやなどWebサイトを構築して、ブラウザからHTTPアクセスする場合は
特に注意せずとも、URLを打ち込んで問題なくアクセスできます。

もちろん、ブラウザを使えばSORACOMのサービスへHTTPアクセスをすることも可能です。
(ブラウザからSORACOMのメタデータサービス用のURLにアクセスしたところ、問題なく情報が取得できます。)

しかし、アプリ内からアクセスしようとするとエラーになります。

ハマったところ

Android + React Nativeでアプリを構築中、
デバッグも一通り終わり、最後にリリースビルドし、APKを作成しました。

そのAPKをAndroid13のスマートフォンにインストールして起動したところ、
エラーが発生したという流れです。

原因

Android 9以降の仕様で、HTTPアクセスが無効化されるようになりました。

SORACOMのサービスにアプリ内から接続するには

前提

今回は、SORACOM メタデータサービスへの接続をできるようにするまでを記載します。
他のHarvestやFuncなどへも同じような方法で指定できます。

アプリのビューおよび動作自体はReact Nativeで構築していますが、
今回の設定はAndroid側でのものとなるので、ネイティブAndroidで構築されている方にも
参考にしていただけると思います。

参考にさせていただいたサイト

設定方法

  1. (React Native向け)プロジェクト内のandroidディレクトリをAndroid Studioで開く

  2. (project root) > app > res > xmlに、network_security_config.xmlを作成する

  3. 作成したXMLファイルに以下のように編集する

    network_security_config.xml
    <?xml version="1.0" encoding="utf-8"?>
    <network-security-config>
        <domain-config cleartextTrafficPermitted="true">
            <domain includeSubdomains="true">metadata.soracom.io</domain>
        </domain-config>
    </network-security-config>
    

    こうすることでmetadata.soracom.io、つまりメタデータサービスへのHTTPアクセスが許可される。
    他にもアクセスしたいドメインを追加することで、その通信は許可されるようになる。

  4. 設定を反映するために、AndroidManifest.xmlを開き、以下のように編集

    AndroidMainifest.xml
    <application
      android:name=".MainApplication"
    
      android:networkSecurityConfig="@xml/network_security_config" 
    
      android:theme="@style/AppTheme">
    
      <activity
        android:name=".MainActivity"
        android:label="@string/app_name"
      />
      </activity>
    </application>
    
  5. リリースビルド

  6. APKをスマホへインストール

まとめ

このような設定でSORACOMへのHTTPアクセスができるようになりました。

最近の(だいぶ前からの)流れで、非セキュアな通信はそもそも許可しない、
必要なものだけしか許可しないというようなものになってきているみたいです。

10/17追記

この設定だと、WiFiデバッグをしたいときにうまくデバッグアプリの起動ができません!
SORACOM等へのHTTPアクセスを許可しつつ、WiFiデバッグもしたい場合は以下の記事を参考にしてください。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?