Home
Softono

MissCat

Open source Apache-2.0 Swift
66
Stars
4
Forks
18
Issues
3
Watchers
3 years
Last Commit

 About MissCat

An Optimized Misskey Client App for iOS.

Platforms

Web Self-hosted macOS iOS

Languages

Swift

Need Help Installing MissCat?

We provide expert installation service for this software. Our team will install, configure, and secure MissCat on your server. plans start at just $30.

MissCat



公式ページ

MissCatはMisskeyに特化したiOS向けのネイティブアプリです。



Missions & Goals

MissCatのミッションは以下の5つです。

  • Misskeyをより身近なSNSにすること
  • スマホに適した直感的な操作性を提供すること
  • インスタンスのバージョン差分を意識しないMisskey環境を提供すること
  • iOSらしく分かりやすいデザインを提供すること
  • Misskeyを広めること



これらに応じて、順に以下のようなゴールを設定しています。

  • iOSネイティブアプリの提供・通知機能や拡張機能の実装
  • スワイプやタップ、半モーダルによる直感的な操作と快適な画面遷移
  • めいすきー等のサポート
  • 奇抜なデザインを用いない、iOSらしいデザイン設計
  • 新規登録画面までの動線



Technical Aspects

カスタム絵文字

Misskeyにはカスタム絵文字というモノが存在します。

一般に、複数行の文字列表示にはUITextViewを使いますが、純正のUITextViewが対応しているのは静止画(UIImage)の挿入のみで、GIFアニメやAPNGといったアニメーション画像を挿入することはできません。また、非同期で取得した画像を挿入することもできません。

そこで、UITextViewをベースに、任意のUIViewを挿入することができるYanagiTextというライブラリを作りました。

MissCatではこのYanagiTextがカスタム絵文字を支える大きな基盤となっています。

また、APNGの表示はAPNGKit, アニメGIFの表示はGifuを利用しています。



MFM(Misskey Flavored Markdown)

Misskeyでは、独自の構文MFMを用いることで文章の修飾をすることができます。(参照)

MissCatでは、FoundationのNSAttributedStringを利用することで一部のMFMに対応しています。



通知

MissCatはWeb版のMisskeyと同じように、WebPushと呼ばれる技術を利用して通知システムを構築しています。


Web版Misskeyは'sw/register'というエンドポイントを叩き、イベントが発生した際に通知がブラウザにPushされるよう登録します。

MissCatでは、この仕組みを利用して、Misskey側で発火した通知イベントを、そのままサーバーへ送るよう'sw/register'へ登録します。サーバー側は暗号化された通知メッセージを受け取ると、メッセージを復号して、適切なフォーマットに変換し、Firebaseへ投げることで各端末に通知を届けます。

※WebPushはprime256v1と言う楕円曲線暗号を元にメッセージが暗号化されているため、サーバーで通知メッセージを受け取った後、適切なカタチで復号してあげる必要があります。そこで、通知の実装にあたり、サーバー側で通知メッセージを復号するモジュールを作りました。webPushDecipher.js



タブ

上タブは私の作ったPolioPagerというライブラリを使っています。



Others

  • コード汚いです
  • 実装していない機能が山程あります
  • バグも山程あります



MissCatは皆様のご意見をお待ちしております。

TwitterMisskeyにて、ご気軽にリプライ/DMを頂けると幸いです。