CryptoWalkingを開発した話

CryptoWalkingの開発話です。

CryptoWalkingって何?

  • CryptoWalking
    1/6

CryptoWalkingは頑張って歩いた人へNEMをプレゼントできるアプリです。

「健康になってほしいと思う人」と「健康になりたいけどきっかけがない人」をつなぎます。

CryptoWalkingを利用することでご家族、ご友人、大切な人の毎日の歩数を監視し、NEMをプレゼントすることで運動の習慣化を促します。

CryptoWalkingの紹介

開発

開発環境

  • MacBook Pro (15-inch, 2017)
  • Xcode 9.2
  • swift4

ライブラリ

  • SwiftyJSON
  • Alamofire
  • RealmSwift
  • Eureka
  • SVProgressHUD
  • GoogleAnalytics
  • Firebase/Core
  • Firebase/Auth
  • Firebase/Database
  • Firebase/Messaging
  • Firebase/AdMob
  • Firebase/DynamicLinks
  • TwitterKit
  • TwitterCore
  • FacebookCore
  • FacebookLogin
  • KeychainAccess
  • Fabric
  • Crashlytics

デザイン

漫画は姉、それ以外は自分。

開発スケジュール

  • 2018/01/14 動き出す
  • 2018/01/15 NEM APIのWrapper実装開始
  • 2018/01/26 データベース設計、画面構成一通り完了
  • 2018/01/27 実装開始
  • 2018/01/28 万歩計機能実装完了
  • 2018/02/02 ウォレット機能実装完了
  • 2018/02/14 プレゼント機能実装完了
  • 2018/02/18 TestFlight検証
  • 2018/02/24 TestFlightのフィードバック実装完了
  • 2018/02/25 リリース申請
  • 2018/02/27 AppleReviewとの戦い開始
  • 2018/03/13 AppleReviewより「暗号通貨NEMは認可していない」との連絡がありやけ酒

当初はお遍路ウォーキングの追加機能として検討していました。

一通りできたんでツイート。予想以上に反響がありびっくりしました。

有志に協力していただきTestFlightでの検証開始。フィードバックを元に不具合修正と機能追加。

初回リリース向けの実装が完了したので報告。そしてリリース申請。

いやな予感1

いやな予感2

いやな予感3

今年一の挫折。
結論、リリースは認められませんでした。

開発のきっかけ

  • cryptowalking
    1/6

正月の帰省時に母親があんまり歩いていないことに気づき「たまには散歩でもしたら?」と言うと足が痛くて〜っとちょっと言い訳っぽいこと言っていたのでどうすれば歩くようになるのか考えたのがきっかけでした。

元々万歩計アプリを開発してたのもあり、開発したアプリに何か機能を加えて親を無理やり歩かせたいな〜と考えました。

その時にちょうど仮想通貨を知った時期でして、正月の暇な時間を使いZaifcoincheckなどの取引所で売買していました。

仮想通貨は法定通貨のように中央集権は存在せず、法定通貨と比べ送金が容易であることを知り「万歩計」と「仮想通貨」でスマートフォンアプリを作れないかと検討した結果、CryptoWalkingを思いつきました。

そしてその時ちょうど注目していた仮想通貨NEMを利用することにしました。

仕様

CryptoWalkingでは以下の機能を実装しています。

  • ウォレット機能
  • 万歩計機能
  • プレゼント機能

ウォレット機能

NEMのウォレットアプリとして利用できる機能を実装しました。

  • ウォレット作成(新規作成、秘密鍵のインポート)
  • 送金(アドレス指定、QRコード読取り)
  • 送金先QRコード表示
  • 残高、送金履歴確認
  • モザイク(残高確認のみ)
  • 本人認証(指紋認証、FaceID、PINコード)
  • NEM公式ウォレットに対応

NEM NISのAPIを使用することでNEMのブロックチェーンへアクセスします。

アプリで作成した秘密鍵はローカルデバイス上に暗号化して保存します。
ローカルデバイス上の保存と暗号化はRealmライブラリ+αです。

秘密鍵以外のウォレット情報はブロックチェーンから取得しています。

万歩計機能

iOSに標準で搭載されている「ヘルスケア」を利用して歩数と歩いた距離を取得しています。

これがかなり優秀で、アプリ上でスマートフォンだけを動かすとカウントはされますが、取得を止めてから再度取得し直すと動かした分の歩数はリセットされていました。加速度センサ等を利用して制御しているのでしょうか。

CryptoWalkingではこの仕様を考慮して、ちゃんと歩かないと共有データとして反映しないようにしています。

プレゼント機能

ユーザー登録やフレンド登録を行い、フレンドの歩数と歩いた距離に応じてNEMを送金できる機能を実装しました。

  • メール、SNS認証(Facebook、Twitter)
  • 毎日の歩数と歩いた距離を共有
  • ユーザーIDをアプリからメール、Twitter、LINEへ共有可
  • フレンド登録、プレゼンターの変更
  • フレンドへの送金
  • 登録したユーザーの通報、削除

CryptoWalkingではFirebaseを利用しています。Firebaseを選んだ理由としては前に触ったこともあり開発コストを抑えれるからです。

Firebaseの認証機能やRealtime Databaseなどを利用しています。Realtime Databaseはなかなかクセがありまして、、、コードはかなり冗長的になりましたね笑。

余裕があればCloud Firestoreへ移行したいと考えています。Realtime Databaseから簡単に移行できるんかな?

登録されたユーザーの「歩数」「歩いた距離」「送金先アドレス」をFirebase上へアップロードしています。

プレゼンターはフレンド登録したユーザーの「歩数」と「歩いた距離」をアプリ上で確認し、目標を満たしていればNEMを送金できるようにしています。

NEMの送金はウォレット機能の送金と同じロジックを利用しているため、直接ブロックチェーンへ書き込まれます。

リリース状況

2018/3/13のAppleReviewの指摘によると以下の理由によりリジェクトされている状況です。

  • 暗号通貨NEMは現在AppleStoreでは認められない
  • 暗号通貨を扱いトランザクションを発行するアプリは金融機関のアカウントからのリリースでないと認めない

Guideline 3.1.5 – Business – Payments – Physical Goods and Services Outside of the App
As we discussed, your app facilitates the transmission of a virtual currency that is not approved for the App Store.
Please see attached screenshots for details.

Next Steps
We encourage you to review your app concept and incorporate different content and features that are in compliance with the App Store Review Guidelines.
Guideline 3.2.1 – Business – Other Business Model Issues – Acceptable

The seller and company names associated with your app do not reflect the financial institute name “NEM” in the app or its metadata, as required by Guideline 3.2.1(viii) of the App Store Review Guidelines.

Next Steps
Your app must be published under a seller name and company name that reflects the NEM name. If you have developed this app on behalf of a client, please advise your client to add you to the development team of their Apple Developer account.

Please note that submitting documentation showing permission to publish this app on behalf of the financial institution will not resolve this issue. This app must be submitted under the financial institution’s own Apple Developer account.

Once created, you cannot change your seller name or company name in iTunes Connect. For assistance with changing your company name or seller name, you will need to contact iTunes Connect through the Contact Us page. Select Getting Started from the first dropdown menu, then select General iTunes Connect Inquiry to contact the appropriate iTunes Connect team.

Best regards,

Apple審査の経緯は以下の通りです。

  • 2018/02/25 第1回申請
  • 2018/02/27 第1回審査
  • 2018/02/27 第1回拒否
  • 2018/02/27 第2回申請
  • 2018/03/01 第2回審査
  • 2018/03/06 第2回拒否
  • 2018/03/07 第3回申請
  • 2018/03/08 第3回審査
  • 2018/03/08 第3回拒否
  • 2018/03/09 第4回申請
  • 2018/03/09 第4回審査
  • 2018/03/09 第4回拒否
  • 2018/03/10 第5回申請
  • 2018/03/11 第5回審査
  • 2018/03/11 第5回拒否
  • 2018/03/11 第6回申請
  • 2018/03/11 第6回審査
  • 2018/03/11 第6回拒否
  • 2018/03/11 第7回申請
  • 2018/03/12 第7回審査
  • 2018/03/12 第7回拒否
  • 2018/03/12 第7回申請
  • 2018/03/13 第7回審査
  • 2018/03/13 第7回拒否
  • 2018/03/13 第8回申請・Apple担当者から電話
  • 2018/03/13 第8回審査
  • 2018/03/13 第8回拒否

※拒否の内容と回答は随時更新します。

今後の展望

まずやらんとあかんこと….

  • iOSアプリのリリースに努める
  • Androidアプリ、PWAでの開発を検討

リリース申請についてですが、打開策がないか色々と調べてるところです。回答してくれるかわかりませんがAppleへ数件問い合わせをしています。

進展がありましたら共有したいと思います。

↑が終えてからやりたいこと

  • モザイク送金機能の実装
  • アプリ上でのNEM決済店の紹介
  • NEMの蛇口+万歩計を組み合した機能の検討

最後に一言

がんばるねばね!

  • このエントリーをはてなブックマークに追加

SNSでもご購読できます。

コメントを残す

*

Translate »