Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/yuigawada/misscat
An Optimized Misskey Client App for iOS.
https://github.com/yuigawada/misscat
fediverse ios-app misskey swift
Last synced: 3 months ago
JSON representation
An Optimized Misskey Client App for iOS.
- Host: GitHub
- URL: https://github.com/yuigawada/misscat
- Owner: YuigaWada
- License: apache-2.0
- Created: 2019-12-11T08:17:36.000Z (about 5 years ago)
- Default Branch: develop
- Last Pushed: 2023-02-23T09:07:34.000Z (almost 2 years ago)
- Last Synced: 2024-04-13T21:01:16.880Z (10 months ago)
- Topics: fediverse, ios-app, misskey, swift
- Language: Swift
- Homepage: https://yuiga.dev/misscat
- Size: 138 MB
- Stars: 61
- Watchers: 4
- Forks: 6
- Open Issues: 18
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# MissCat
[公式ページ](https://yuiga.dev/misscat)
MissCatはMisskeyに特化したiOS向けのネイティブアプリです。
## Missions & GoalsMissCatのミッションは以下の5つです。
- Misskeyをより身近なSNSにすること
- スマホに適した直感的な操作性を提供すること
- インスタンスのバージョン差分を意識しないMisskey環境を提供すること
- iOSらしく分かりやすいデザインを提供すること
- Misskeyを広めること
これらに応じて、順に以下のようなゴールを設定しています。- iOSネイティブアプリの提供・通知機能や拡張機能の実装
- スワイプやタップ、半モーダルによる直感的な操作と快適な画面遷移
- めいすきー等のサポート
- 奇抜なデザインを用いない、iOSらしいデザイン設計
- 新規登録画面までの動線
## Technical Aspects### カスタム絵文字
Misskeyにはカスタム絵文字というモノが存在します。
一般に、複数行の文字列表示にはUITextViewを使いますが、純正のUITextViewが対応しているのは静止画(UIImage)の挿入のみで、GIFアニメやAPNGといったアニメーション画像を挿入することはできません。また、非同期で取得した画像を挿入することもできません。
そこで、UITextViewをベースに、任意のUIViewを挿入することができる[YanagiText](https://github.com/YuigaWada/YanagiText)というライブラリを作りました。
MissCatではこの[YanagiText](https://github.com/YuigaWada/YanagiText)がカスタム絵文字を支える大きな基盤となっています。
また、APNGの表示は[APNGKit](https://github.com/onevcat/APNGKit), アニメGIFの表示は[Gifu](https://github.com/kaishin/Gifu)を利用しています。
### MFM(Misskey Flavored Markdown)Misskeyでは、独自の構文MFMを用いることで文章の修飾をすることができます。([参照](https://join.misskey.page/ja/wiki/usage/mfm))
MissCatでは、Foundationの[NSAttributedString](https://developer.apple.com/documentation/foundation/nsattributedstring)を利用することで一部のMFMに対応しています。
### 通知
MissCatはWeb版のMisskeyと同じように、WebPushと呼ばれる技術を利用して通知システムを構築しています。
Web版Misskeyは[`'sw/register'`](https://misskey.io/api-doc#operation/sw/register)というエンドポイントを叩き、イベントが発生した際に通知がブラウザにPushされるよう登録します。
MissCatでは、この仕組みを利用して、Misskey側で発火した通知イベントを、そのままサーバーへ送るよう[`'sw/register'`](https://misskey.io/api-doc#operation/sw/register)へ登録します。サーバー側は暗号化された通知メッセージを受け取ると、メッセージを復号して、適切なフォーマットに変換し、Firebaseへ投げることで各端末に通知を届けます。
※WebPushはprime256v1と言う楕円曲線暗号を元にメッセージが暗号化されているため、サーバーで通知メッセージを受け取った後、適切なカタチで復号してあげる必要があります。そこで、通知の実装にあたり、サーバー側で通知メッセージを復号するモジュールを作りました。[webPushDecipher.js](https://github.com/YuigaWada/MissCat/blob/develop/ApiServer/webPushDecipher.js)
### タブ
上タブは私の作った[PolioPager](https://github.com/YuigaWada/PolioPager)というライブラリを使っています。
## Others- コード汚いです
- 実装していない機能が山程あります
- バグも山程あります
MissCatは皆様のご意見をお待ちしております。
[Twitter](https://twitter.com/yuigawada)か[Misskey](https://misskey.io/@wada)にて、ご気軽にリプライ/DMを頂けると幸いです。