[iOS] chatworkのプロフィール(名前)を変更するアプリを書いてみた

2016.04.26

1 chatwork

chatworkは、グループチャットやタスク管理などの機能を有し、ビジネスの場でも幅広く使われているコミュニケーションツールです。

http://www.chatwork.com/ja/ 001

このようなコミュニケーションツールの使い方の一つとして、プロフィール名のところに現在の勤務場所や、状態を追加して、参加者にアナウンスするという使い方をしている方も多いのではないでしょうか?

002 003 004

chatworkでプロフィールの名前変更は、メニューから行いますが、少し階層があるため、小まめに変更するにはちょっと辛いかも知れません。

005

また、スマフォのアプリでは、このメニュー自体が表示されないため、不便に感じている方もおられるのでは無いでしょうか。

今回は、このプロフィール名を手軽に変更できるiPhoneアプリを作成してみました。 なお、このプロフィール変更のAPIは、現在提供されていないため、処理はJavaScriptで記述しました。

2 CWChanger

最初に利用している様子をご覧ください。

008

変更するメッセージは、幾つかの定型を用意しておくことで、切り替えて利用できます。

3 有料プラン

chatworkは、無料でも利用可能ですが、有料のビジネスプランもあります。 利用形態によってアクセス先(URL)が変わりますので、本アプリでは、ログイン画面で設定するようになっています。

有料プランでご利用の方は、ログイン画面で、「契約名を指定してください」のところをタップしてください。 表示されたポップアップに契約名を入力します。

後の操作は同じです。

006 007 008

4 拡張UIWebView

本アプリでは、JavaScriptを実行できるようにUIWebViewを拡張しました。

UIWebViewでは、stringByEvaluatingJavaScriptFromStringでJavaScriptの実行が可能ですが、それを使用して、itemを取得したり、値を設定したり、また、クリックしたりしています。

そして、この拡張UIWebViewをシングルトンで作成し、Viewに追加しないで利用しています。

下記は、拡張したUIWebViewの抜粋です。詳しくは、GitHubのコードをご残照ください。

class ExWebView: UIWebView {

    var script = ""

    func callJs(js: String) -> String {
        return self.stringByEvaluatingJavaScriptFromString(js)!
    }

    internal class var sharedInstance: ExWebView {
        struct Static {
            static var onceTaken: dispatch_once_t = 0
            static var instance: ExWebView? = nil
        }
        dispatch_once(&Static.onceTaken) {
            Static.instance = ExWebView()
        }
        return Static.instance!
    }

    func setValueById(id: String, value: String) {
        append("var element = document.getElementById('\(id)');element.value = '\(value)';")
    }

    func clickById(id: String) -> String {
        append ("document.getElementById('\(id)').click();")
        return exec()
    }

    private func append(str: String) {
        script = script + str
    }
    func exec() -> String {
        let result = callJs(script)
        script = ""
        return result
    }
}

5 最後に

アプリでアクセスできるようになると、今度は、立ち寄る場所にBeacon置いて、自動的にプロフィール変更したりとか夢が広がります・・・

しかし、本アプリは、まだブラウザに表示されるhtml上のタグなどをたよりに動作しているため、非常に不安定です。 早くAPIが提供されて、ちゃんとしたアプリに修正できることを望みます。

github [GitHub] https://github.com/furuya02/CWChanger(Xcode7.3)

X 参考資料


[Xamarin.Forms] プログラムからJavaScriptを使用してgoogle検索を自動化する