7
7

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 3 years have passed since last update.

[SwiftUI]Googleフォームをお問い合わせ機能として使う!

Posted at

アプリ開発の中でお問い合わせ機能を実装したい場面があります。内容は不具合の報告などアプリの内容によって様々ですが、少なくとも以下の2点は注意しておきたい点です。

・できるだけ詳細な情報を送信してもらう
・ユーザーが入力、送信しやすいようにしておく

特にアプリやiOSのバージョンなどといった情報は開発側からすれば重要ですが、ユーザー側にとっても必ずしもそうだとは限りません。必要な情報はユーザー側に入力を促せるような仕組みを導入したいところですが、それをUIで作るのは大変です。そこでGoogleフォームの出番です。
#ブラウザを利用する

以下のようにアプリ側のコードとしてはSFSafariViewControllerをSwiftUIで使えるようにします。後は作ったGoogleフォームのURLを指定するだけでOKです。

SafariView.swift
import SwiftUI
import SafariServices

struct SafariView: UIViewControllerRepresentable {
    var urlString: URL
    
    func makeUIViewController(context: UIViewControllerRepresentableContext<SafariContent>) -> SFSafariViewController {
        let safariViewController = SFSafariViewController(url: urlString)
        safariViewController.dismissButtonStyle = .done //閉じるボタンの形式を変更できる
        return safariViewController
    }
    
    func updateUIViewController(_ uiViewController: SFSafariViewController, context: UIViewControllerRepresentableContext<SafariContent>) {
    }
}

以下のViewをNavigationLinkの遷移先や.sheetで表示されるように設定しておけばフォームを呼び出すことができます。

FormView.swift
struct FormView: View {
    var body: some View {
        if let urlString = URL(string: "https://forms.gle/sample") {
            SafariContent(urlString: urlString)
                .ignoresSafeArea()
        }
    }
}

これ以外にもWeb上のページを表示する方法はありますが、SFSafariViewControllerには拡大表示や、閉じるボタンのローカライズを自動で行ってくれるというメリットがあります。

Googleフォームを利用すれば、チェックボックスなど様々な入力型式が使えます。あらかじめ質問を用意しておいて手間を減らしておけばユーザーの負担も少なくて済みますし、作るのも簡単なので個人的にはこの方法がおすすめです。

#余談
今回この記事を作るにあたって有名なアプリのお問い合わせ機能を調査してみたのですが、やはり大手のものはアプリ内で完結させているものが多い印象です(Instagram、Google製アプリなど)。

それらは不具合の報告なのか、機能の追加要望なのかといった目的ごとに入力画面の出し分けが行われていました。もし上記のようにアプリ内UIとしてお問い合わせ機能を実装する場合はそちらを参考にするとよいと思います。

7
7
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
7
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?