iOSからAsk Monaに投稿できるようにする
iOS向けのAsk Monaアプリの開発をしています。自分が使うように開発しているので進捗はものすごく遅いです。もしよければお気に入り登録お願いします。
ある程度完成したのでTestFlightでベータテスターを募集しています。ベータテストへの参加方法としては >>63 をごらんください。
http://askmona.org/10247#res_63
1 :さくさん二級:2018/03/21 00:18:58 (6年前) 0.01504316MONA/10人
iOSアプリからAsk Monaにログインして投稿できるかテストします
2 :さくさん二級:2018/03/21 00:20:25 (6年前) 0MONA/0人
アプリからのテスト投稿 1521559224.99242
3 :さくさん二級:2018/03/21 00:22:23 (6年前) 0MONA/0人
アプリからのテスト投稿 1521559343.05332
4 :さくさん二級:2018/03/21 00:24:07 (6年前) 0MONA/0人
できた。 http://askmona.org/developers#auth_key にPHPのサンプルコードがありますが、Swiftで認証キーを作るのが少しやっかいでした。
5 :さくさん二級:2018/03/21 00:27:05 (6年前) 0MONA/0人
http://askmona.org/developers/mypage にアクセスして、アプリIDと開発者シークレットキーを取得する必要します。
これらを使ってログインさせると以下のようなJSONが返ってきます。
```
{
"status" : 1,
"secretkey" : "Uhogehoge=",
"u_id" : 12236
}
```
6 :さくさん二級:2018/03/21 00:30:04 (6年前) 0MONA/0人
指示通りに開発者シークレットキー、nonce、time、secretkeyの順番に並べて、SHA-256してBase64エンコードします。これで認証キーの出来上がりです。
```
let nonce = UUID().uuidString
let time = Int(Date().timeIntervalSince1970)
let secretkey = "Uhogehoge=" //さっき取得したやつ
let str = "\(applicationSecretKey)\(nonce)\(time)\(secretkey)"
let auth_key = str.sha256().base64EncodedString()
```
7 :さくさん二級:2018/03/21 00:37:55 (6年前) 0MONA/0人
僕がつまづいたのはこのふたつでした。
・SwiftでSHA-256でハッシュを計算する方法
・timeのnonceが生成された時刻(UNIX時刻)の解釈
前者は https://stackoverflow.com/questions/46780451/creating-sha256-hash-with-swift4 を読んで解決しました。
後者は Date().timeIntervalSince1970 で取得するとミリ秒単位(小数点以下)を含む値を取得します。ミリ秒を含めて送信していたため「正しいはずなのに認証キーが不正扱いされる」という現象に陥っていました。
8 :さくさん二級:2018/03/21 00:39:56 (6年前) 0MONA/0人
今日はひとまずAsk Monaにレスを投稿するという目標が達成できました。
9 :さくさん二級:2018/03/21 14:43:02 (6年前) 0MONA/0人
それっぽい感じの起動画面ができました。
この画像を貼るためにimgurを利用しました。そういえばAsk Monaでは画像をアップロードするためには適当なサーバーではダメで、imgurのURLが含まれているかどうかで展開されるかどうかが決まるとどこかで見ました。
Swiftでimgurに投稿するアップロードするライブラリがあればよいけれど、なければ自前でライブラリ書くことになりそうです。
10 :さくさん二級:2018/03/21 23:04:16 (6年前) 0MONA/0人
アプリからのテスト投稿 1521641056.514
11 :さくさん二級:2018/03/21 23:05:18 (6年前) 0MONA/0人
アプリからのテスト投稿 1521641118.35906
12 :さくさん二級:2018/03/22 01:05:24 (6年前) 0MONA/0人
カテゴリーとトピック一覧を実装。GETで取得できるし特に認証キー等は必要ないので、この辺りは表示させるだけです。
13 :さくさん二級:2018/03/22 18:33:58 (6年前) 0MONA/0人
アプリからのテスト投稿(age) 1521711238.19756
14 :さくさん二級:2018/03/22 18:34:05 (6年前) 0MONA/0人
アプリからのテスト投稿 1521711238.19555
15 :さくさん二級:2018/03/22 18:35:05 (6年前) 0MONA/0人
アプリからのテスト投稿 1521711305.32509
16 :さくさん二級:2018/03/22 18:35:05 (6年前) 0MONA/0人
アプリからのテスト投稿(age) 1521711305.32661
17 :さくさん二級:2018/03/23 23:20:02 (6年前) 0MONA/0人
全体の投稿からキーワード検索するのはAPIで提供されていないんですね。Google Search APIかBing APIを使って実装することになるのかな。
18 :さくさん二級:2018/03/23 23:35:20 (6年前) 0MONA/0人
この手のアプリを作っているとBB2Cが洗練されているのがわかりますね。
一番下までスクロールするのが大変です。既読管理もないと厳しそう。
19 :さくさん二級:2018/03/24 17:09:19 (6年前) 0MONA/0人
>17
てすと
>>16
てすと
>>15
てすと
>14
てすと
20 :さくさん二級:2018/03/24 17:09:36 (6年前) 0MONA/0人
>> 15
てすと
21 :さくさん二級:2018/03/24 17:56:17 (6年前) 0MONA/0人
投稿画面から投稿 1521881777.48426
22 :さくさん二級:2018/03/24 18:08:29 (6年前) 0MONA/0人
投稿画面から投稿 sage:true 1521882509.843
23 :さくさん二級:2018/03/24 18:08:37 (6年前) 0MONA/0人
投稿画面から投稿 sage:false 1521882517.27194
24 :---:2018/03/24 18:09:48 (6年前) 0MONA/0人
おー
25 :さくさん二級:2018/03/24 18:15:09 (6年前) 0.00114MONA/1人
UIについては全体的に宿題ですが、投稿画面への導線と、投稿画面を実装しました。
便利機能についてはあとで洗い出すとして、
* トピック画面でユーザーの名前をタップすると「この投稿にレスを返すか?」というアクションシートの表示させる
* トピック画面でユーザーのIDをタップするとそのユーザーの詳細画面へ遷移させる
* ユーザーの詳細画面で「このユーザーをブロックするか?」を表示させる。ブロック機能はアプリオリジナル機能で該当ユーザーの投稿を非表示にする
26 :monakun一級:2018/03/24 19:56:01 (6年前) 0MONA/0人
いいね
27 :さくさん二級:2018/03/24 21:10:34 (6年前) 0MONA/0人
28 :S A I 四段錬士:2018/03/24 23:11:01 (6年前) 0MONA/0人
おお!これは凄く便利そうなアプリができそうですねー
29 :さくさん二級:2018/03/25 23:44:19 (6年前) 0MONA/0人
投稿画面から投稿 sage:true 1521989050.47978
30 :さくさん二級:2018/03/25 23:48:48 (6年前) 0MONA/0人
>>28
> おお!これは凄く便利そうなアプリができそうですねー
>
ありがとうございます!無事リリースできると良いのですが・・・
#iPhoneから投稿
31 :さくさん二級:2018/03/25 23:52:38 (6年前) 0MONA/0人
>>29-30
今日の実装した部分です。
32 :さくさん二級:2018/03/25 23:55:18 (6年前) 0MONA/0人
トピックから該当のレスを選んで「コメントする(番号だけ指定する)」「引用してコメントする(本文を引用する)」をできるようにしました。
引用してコメントする場合には、投稿画面は下記のようになります。
投稿画面からimgurに直接アップロードできれば使い勝手が良さそうですね。imgurにログインしないで使う場合(匿名アップロード)、ログインしてから使う場合(あとから削除が可能)の使い分けが可能にしたいですね。
33 :さくさん二級:2018/03/26 06:45:38 (6年前) 0.00004649MONA/1人
てすと
#iPhoneから投稿
34 :さくさん二級:2018/03/26 06:51:23 (6年前) 0.00004649MONA/1人
投稿処理が完了したら投稿画面を閉じるようにしましたが、トピック画面に戻った時に最新内容にリロードさせたほうが良さそうですね
#iPhoneから投稿
35 :さくさん二級:2018/03/26 18:34:21 (6年前) 0.00004649MONA/1人
それっぽく使えるようになった段階で、ベータテスターを募った方がいいかもしれないですね…… 意見・要望を投げられるようにしておきます
#iPhoneから投稿
36 :さくさん二級:2018/03/26 23:24:18 (6年前) 0.00004649MONA/1人
てすと
#iPhoneから投稿
37 :さくさん二級:2018/03/26 23:35:56 (6年前) 0.00004649MONA/1人
Test
#iPhoneから投稿
38 :さくさん二級:2018/03/26 23:39:27 (6年前) 0.00004649MONA/1人
てすと
#iPhoneから投稿
39 :さくさん二級:2018/03/27 01:34:10 (6年前) 0.00004649MONA/1人
それっぽい感じで体裁を整えました。テキストを投稿するだけであれば使えるとようになったと思います。
画像を展開できるようにしたいですね。
40 :さくさん二級:2018/03/27 11:46:48 (6年前) 0.00004649MONA/1人
この画像の左上で自分のアイコン(自分のユーザーIDからアイコン画像を生成するGitHubとかで使われているIdenticonです)を表示しており、そこをタップするとマイページを表示させようとしています。
アイコンの周りの輪っかは、 https://monappy.jp/memo_logs/view/syuribox/447 を参考にして、(無級)→三級→二級→一級→初段→二段→(省略)→十段→名人 でそれぞれ異なる色を与えて、その人のAsk Monaでのやり込みを表現できるようにしたいなと考えています。
級段位ごとの色は、空手or柔道の帯の色を参考にしたいですが、初段以上になると黒帯になってしまうので、もう少し色に幅を持たせたいところです。
41 :さくさん二級:2018/03/27 11:54:32 (6年前) 0.00004649MONA/1人
マイページは、以前作っていたMonappyビューアから流用して移植したいと思います。
AskMonaでは連携ソーシャルアカウントについての情報は取得できないので、アイコン+名前+自己紹介文の表示となる予定です。
42 :さくさん二級:2018/03/29 23:47:54 (6年前) 0.00004649MONA/1人
食あたりで1日以上動けなくなっていましたが復活したのでAskMonaクライアントの実装を進めました。マイページ(ユーザーページ)はこのような形にしました。
画面の下側に何を表示するか悩むところですが、アプリ内DBに保存しているそのユーザーが投稿したトピックの一覧でも表示させようと考えています。
43 :さくさん二級:2018/03/30 00:40:26 (6年前) 0.00004649MONA/1人
未読管理を実装したいですね。方法としてはいくつか考えることができます。
* 過去分の投稿を全部アプリ内にキャッシュとして残しておいて新規取得分を未読として扱う
* 過去分のレス数だけを保存しておいて前回レス番号以降を未読として扱う
ユーザーページで、その人がどんな書き込みをしているのかを見るのであれば前者が良さそうです
44 :さくさん二級:2018/03/30 15:27:49 (6年前) 0.00004649MONA/1人
新着確認テスト
45 :さくさん二級:2018/03/30 19:16:42 (6年前) 0.00004649MONA/1人
雑な実装だけど未読管理できるようになった。トピックリスト上でも未読数を扱いたいので、もう少しうまく組み込まないと後で詰みそう。
46 :さくさん二級:2018/03/31 22:14:58 (6年前) 0.00004649MONA/1人
級段位に関しては、クリーム色(無級)、黄、オレンジ、赤、青、緑、紫、茶、黒(八段以上)を想定しています。具体的な色に関してはマテリアルデザインの色から収まりの良いものを選びたいと考えています。
自分の段位を tintColor として設定して、アプリの随所でアクセントカラーとして使用できれば良さそうですね。
47 :さくさん二級:2018/04/01 01:53:15 (6年前) 0.00004649MONA/1人
ユーザー詳細画面のヘッダー部分のデザインを調整しました。このトピに投稿してくださった方の表示だと下図のようになります。
48 :さくさん二級:2018/04/02 16:18:42 (6年前) 0.00007174MONA/2人
いままで受け取ったMONAは「経験値」として表示させることにしました。単位は「wata」です。
過去にMonappyビューアを作っていたのですが、MONACOINの文字が入っていたためにAppleでの審査にリジェクトされることがありました。モナコインの文言をアプリから消した状態で再審査に出したのですが、1ヶ月以上審査してもらえない状態が続いています。お察し下さい……
49 :さくさん二級:2018/04/07 17:06:37 (6年前) 0.00004649MONA/1人
test
50 :さくさん二級:2018/04/07 17:07:48 (6年前) 0.00004649MONA/1人
てすと
51 :さくさん二級:2018/04/07 17:20:08 (6年前) 0.00004649MONA/1人
てすと2
52 :さくさん二級:2018/04/07 17:28:29 (6年前) 0.00004649MONA/1人
既読管理が思ったよりも複雑になってきてソースコードがこんがらがってきて、1週間実装が止まっていました。コードを読み解くのが面倒になってモチベーションが落ちてしまって、これはいかんということで実装方針を変更してみました。
53 :さくさん二級:2018/04/07 18:04:28 (6年前) 0MONA/0人
てすと
54 :さくさん二級:2018/04/07 18:11:17 (6年前) 0MONA/0人
トピック一覧画面での未読表示も実装しました。自分が見たことのあるトピックが明示的に見やすくなったと思います。
匿名で0.00004649MONA投げてくださった方モナゲありがとうございます!大量だったので驚いてしまいました。
55 :さくさん二級:2018/04/07 21:10:20 (6年前) 0MONA/0人
test
56 :さくさん二級:2018/04/07 21:18:55 (6年前) 0MONA/0人
test
57 :さくさん二級:2018/04/07 21:22:16 (6年前) 0MONA/0人
test
58 :さくさん二級:2018/04/07 23:58:06 (6年前) 0MONA/0人
ユーザーページを開くと、こんな感じでその人の投稿(アプリ内キャッシュデータ)を表示させようと考えていますが、この部分のUIをどうしようか悩んでいます。
単に投稿一覧をズラーっと並べるのもありっちゃありなのですが、一覧性に欠くので、一トピにつきその人の最新の投稿を一アイテムで表示させた方が良い気がしてきました。実装してみます。
59 :さくさん二級:2018/04/08 01:20:35 (6年前) 0MONA/0人
できました。大分一覧性が上がったと思います。そのトピでの最終投稿日時も表示できればなおヨシでしょうか。
概ねアプリの機能が盛り込めたので、ログイン画面で 1password 連携を実装し終わったらベータテストを開始できれば良いなぁと考えています。
60 :さくさん二級:2018/04/08 16:13:49 (6年前) 0MONA/0人
てすと
61 :さくさん二級:2018/04/08 19:15:18 (6年前) 0MONA/0人
Ask Monaのログインってモナコインアドレスを直接入力する形になっているので、アプリのログイン画面での入力が地獄のように大変ですね。みんなどうやって対応しているんだろう……
1password連携に対応しました!今日の晩にでもGoogleフォームを使って、ベータテスターの募集をかけますね。
62 :さくさん二級:2018/04/09 00:39:54 (6年前) 0MONA/0人
ベータテスターのエントリーフォームを作成しました!
https://goo.gl/forms/Y4k6vIv6jDU8BnsN2
前に作っていたMonappyビューアがリジェクトされ続けて、最後の審査は1ヶ月wait状態になってからリジェクトされるという悲劇にぶち当たってしまったので、Ask Monaクライアントにはまだ機能追加をしたいと考えているため、一般公開は少し先になりそうです。
「試してあげようかな?」という気軽な感じで参加していただけると幸いです。
63 :さくさん二級:2018/04/09 00:40:08 (6年前) 0MONA/0人
ベータテストへの参加方法としては以下の通りです
* エントリーフォーム( https://goo.gl/forms/Y4k6vIv6jDU8BnsN2 )でApple ID(メールアドレス)を登録する
* TestFlight( https://itunes.apple.com/jp/app/testflight/id899247664?mt=8 )をインストールする
* Appleからベータテスターへのお誘いメールがきます
* TestFlightからAsk Mona for iOSをインストールします
まだまだ足りない機能が多いと思いますが、お気付きの点がありましたらアプリ内の設定画面の「お問い合わせ」と「不具合の報告」からご連絡いただけると嬉しいです!
64 :さくさん二級:2018/04/10 00:42:57 (6年前) 0MONA/0人
今週忙しそうなので進捗出せそうにないです。時間を見つけて機能追加していこうと考えています。
65 :駆け出し落書き名無し四段教士:2018/04/11 14:05:17 (6年前) 0MONA/0人
iPhoneないので試せないですが、自分で作っちゃうなんてすごいですね~。頑張ってください!
66 :さくさん二級:2018/04/11 22:08:01 (6年前) 0MONA/0人
>>65
ありがとうございます!一般公開までまだ時間かかると思いますがボチボチやっていきたいと思います
67 :さくさん二級:2018/04/11 23:11:42 (6年前) 0MONA/0人
レス内リンクをタップできるようにしました。
リンク関係のデザインを修正しないといけないですね
68 :さくさん二級:2018/04/12 19:38:01 (6年前) 0MONA/0人
リンクはブラウザでよくある感じで表現することにしました。イタリックで青色です。
69 :さくさん二級:2018/04/13 00:09:11 (6年前) 0MONA/0人
ツールバーのボタンをアイコンに変更しました。文字がなくても何をするアイコンかわかりますでしょうか。
70 :さくさん二級:2018/04/14 12:48:29 (6年前) 0MONA/0人
閲覧履歴画面・画像投稿機能がまだ実装できていませんが、この状態で一旦アプリをリリースしてみたいと思います。Ask Monaが2chに類するもの扱いでアプリが通らないか心配になってきました……
71 :さくさん二級:2018/04/15 01:49:06 (6年前) 0MONA/0人
今日はアプリ申請のために体裁を整える作業をしていました。
Appleにアプリを提出する際にはスクリーンショットをiPhone X、iPhone 8Plus、iPadの解像度で撮影する必要があります。かなり面倒くさい作業なので、スクショを自動で撮影するfastlane snapshotを導入しました。
fastlaneはiOSアプリ開発の便利ツール集的なもので、その一機能fastlane snapshotはスクリーンショットを自動で撮影してくれるツールです。
明日の午前中にはアプリの申請をしたいですね。Appleからの感触が悪ければ、このアプリの開発は終了としたいと思います。
72 :さくさん二級:2018/04/15 17:24:03 (6年前) 0.00117117MONA/1人
アプリを申請に出しました。早くて明日、遅くて水曜日くらいには審査結果が返ってくると思います。
73 :さくさん二級:2018/04/15 18:48:31 (6年前) 0MONA/0人
招待が遅くなってしまい申し訳ございません。4/11、4/14にベータテストに申し込んでくださった方に、さきほどベータテストへの招待メールを送らせていただきました。
Appleに提出しているバイナリと同一のバージョン(v1.0.0.21)が、一番新しいバージョンです。よろしくお願いいたします。
74 :さと三段錬士:2018/04/15 23:19:44 (6年前) 0MONA/0人
アプリ楽しみです(╹◡╹)
75 :さくさん二級:2018/04/17 13:48:56 (6年前) 0MONA/0人
リジェクトされてしまいました。理由としては以下の通りです。
1. 2 Safety: User Generated Content
2. 1 Performance: App Completeness
2. 3 Performance: Accurate Metadata
4. 3 Design: Spam
本文が結構長いので要約していくと、以下の通りになりました。
1. ユーザーが生成したコンテンツを表示させる場合には予防措置を設けておく必要があります
1.1. ユーザーが利用規約に同意することを要求する
1.2. 好ましくないコンテンツをフィルタリングする
1.3. 不快なコンテンツにフラグを立てる仕組み
1.4. 不正なユーザーをブロックする仕組み
76 :さくさん二級:2018/04/17 13:49:02 (6年前) 0MONA/0人
2. 新規登録ボタンが反応しません
* 既存のユーザーのみに利用してもらいたいのでログインボタンしか有効にしていなかったため怒られました
3. アプリのスクショが少ない(1枚だけではリジェクトの対象となるようでした)
* マイページ画面のスクリーンショットだけだと不足なようです
4. アプリアコンが他のアプリと同じである
* 自分の他のアプリのを流用したんだけど怒られてしまいました
77 :さくさん二級:2018/04/17 14:12:45 (6年前) 0MONA/0人
今後の対策としては、以下のようなことを考えています。
・ログイン時に利用規約を表示させるようにします
・不快な投稿にフラグを立てる仕組みを追加します
・レス単位で削除(あぼ〜ん)できるようにします
・不快なユーザーをブロックする仕組みを導入します
・アプリ側で共有のNGリストを設ける
・アプリユーザーが自分の意思で別のユーザーをNGリストに追加する
・新規登録画面を追加します
・Ask Monaの新規登録にはアドレスが必要なのでAppleの人に用意できるかどうかが心配だが……
・アプリのスクショを増やします
・3枚くらい登録してたら良いのだろうか……1枚だとダメなら最低n枚以上と制限して欲しかった……
・アプリアイコンを変更します
やることが多いのでまたしばらくはアプリの申請ができないと思います。ベータテスターは随時募集していますので >>63 を参考にご応募ください!
78 :さくさん二級:2018/05/09 18:07:54 (6年前) 0MONA/0人
開発止まっていてすみません。ベータテスターの申し込みがあったので1件追加しておきました。更新は今しばらくお待ちください
お気に入り
新規登録してMONAをもらえた
本サイトはAsk Mona 3.0に移行しましたが、登録すると昔のAsk Monaで遊ぶことができます。