見出し画像

Nocodeツール(Adalo)で作ったグルメアプリSabinukyにアプリアップデート促進機能実装してみたよ

どうも、こんにちは〜!最近鼻がむずむずして、くしゃみもたくさんでるけど花粉症が発症した可能性を意地でも認めたくないまいこさま@Saninukyです!最近は少しあったかくなってきましたね〜。

さて今日はアプリリリース後に度重なるアップデートを繰り返しているグルメアプリSabinukyに、「最新versionをリリースしたよ!アップデートしてね!」と通知する機能を実装したのでその方法をお伝えできればと思います! やっぱりアップデートしたら、早くお手元の端末でも最新versionに更新してもらいたいですよね>< 

1.必要な情報と機能は・・・?

まず、ユーザーに最新versionがリリースされたことをお伝えするときに取得しなければいけない情報と、必要な機能を考えました。大まかには以下3つのステップで実装が可能そうです!

①App storeに公開されている最新のversion情報取得

②ユーザーの端末にダウンロードされているアプリのversion情報取得

③①と②を比較して、①>②の場合はアップデートしてくださいの表示を出す

2.最新version取得のための iTunes Search API とは

まず、App storeに公開されている最新のversion情報を取得したいと思います!色々調べて使えそうなのは、 iTunes Search APIというものでiTunes Store、App Store、 iBookstore、Mac App Store にあるコンテンツの様々な情報を取得することができるようです!

試しにSabinukyのアプリの情報を取得するため、以下URLを叩いてみます。(ブラウザでOKです)※id以下を他のアプリのidに変更すれば他のアプリの情報が取得できます。

https://itunes.apple.com/lookup?id=1539312495

取得できた情報はコチラ!Json形式で様々な情報が取得できました!"version":"1.6"との情報が含まれており、これが使えますね!



{
"resultCount":1,
"results": [
{"ipadScreenshotUrls":[], "appletvScreenshotUrls":[], "artworkUrl60":"https://is2-ssl.mzstatic.com/image/thumb/Purple124/v4/48/32/dd/4832dd65-c6ae-df7f-b763-eaf6c536c475/source/60x60bb.jpg", "artworkUrl512":"https://is2-ssl.mzstatic.com/image/thumb/Purple124/v4/48/32/dd/4832dd65-c6ae-df7f-b763-eaf6c536c475/source/512x512bb.jpg", "artworkUrl100":"https://is2-ssl.mzstatic.com/image/thumb/Purple124/v4/48/32/dd/4832dd65-c6ae-df7f-b763-eaf6c536c475/source/100x100bb.jpg", "artistViewUrl":"https://apps.apple.com/us/developer/maiko-murakami/id1539312497?uo=4", 
"screenshotUrls":[
"https://is5-ssl.mzstatic.com/image/thumb/PurpleSource124/v4/29/b5/69/29b569e6-504d-33ad-49fb-e45324258db4/67ae454a-182a-423d-a513-11531efa174d_Slice_1.png/392x696bb.png", 
"https://is4-ssl.mzstatic.com/image/thumb/PurpleSource114/v4/75/ac/cc/75accc65-078f-8bab-eb4b-2163aadb329d/818a4298-68a2-4b8e-bdd7-d7b167c05ab6_Slice_2.png/392x696bb.png", 
"https://is4-ssl.mzstatic.com/image/thumb/PurpleSource114/v4/f2/90/d5/f290d50e-d348-dd0a-f0b4-74fa3317ee2c/19e8ae34-c3bf-44e5-a6d1-be1f77d3b058_Slice_3.png/392x696bb.png", 
"https://is5-ssl.mzstatic.com/image/thumb/PurpleSource124/v4/77/8f/fd/778ffd8e-ad2e-1be9-6021-eccc6d54e901/84838f93-d511-43a7-908a-3c01ece2d2a3_Slice_4.png/392x696bb.png", 
"https://is2-ssl.mzstatic.com/image/thumb/PurpleSource114/v4/45/37/4c/45374c94-3dbb-29e5-2d00-ad038ee07002/9de2143d-3104-4e10-ab00-4aa785358e3d_Slice_5.png/392x696bb.png"], 
"supportedDevices":["iPad2Wifi-iPad2Wifi", "iPad23G-iPad23G", "iPhone4S-iPhone4S", "iPadThirdGen-iPadThirdGen", "iPadThirdGen4G-iPadThirdGen4G", "iPhone5-iPhone5", "iPodTouchFifthGen-iPodTouchFifthGen", "iPadFourthGen-iPadFourthGen", "iPadFourthGen4G-iPadFourthGen4G", "iPadMini-iPadMini", "iPadMini4G-iPadMini4G", "iPhone5c-iPhone5c", "iPhone5s-iPhone5s", "iPadAir-iPadAir", "iPadAirCellular-iPadAirCellular", "iPadMiniRetina-iPadMiniRetina", "iPadMiniRetinaCellular-iPadMiniRetinaCellular", "iPhone6-iPhone6", "iPhone6Plus-iPhone6Plus", "iPadAir2-iPadAir2", "iPadAir2Cellular-iPadAir2Cellular", "iPadMini3-iPadMini3", "iPadMini3Cellular-iPadMini3Cellular", "iPodTouchSixthGen-iPodTouchSixthGen", "iPhone6s-iPhone6s", "iPhone6sPlus-iPhone6sPlus", "iPadMini4-iPadMini4", "iPadMini4Cellular-iPadMini4Cellular", "iPadPro-iPadPro", "iPadProCellular-iPadProCellular", "iPadPro97-iPadPro97", "iPadPro97Cellular-iPadPro97Cellular", "iPhoneSE-iPhoneSE", "iPhone7-iPhone7", "iPhone7Plus-iPhone7Plus", "iPad611-iPad611", "iPad612-iPad612", "iPad71-iPad71", "iPad72-iPad72", "iPad73-iPad73", "iPad74-iPad74", "iPhone8-iPhone8", "iPhone8Plus-iPhone8Plus", "iPhoneX-iPhoneX", "iPad75-iPad75", "iPad76-iPad76", "iPhoneXS-iPhoneXS", "iPhoneXSMax-iPhoneXSMax", "iPhoneXR-iPhoneXR", "iPad812-iPad812", "iPad834-iPad834", "iPad856-iPad856", "iPad878-iPad878", "iPadMini5-iPadMini5", "iPadMini5Cellular-iPadMini5Cellular", "iPadAir3-iPadAir3", "iPadAir3Cellular-iPadAir3Cellular", "iPodTouchSeventhGen-iPodTouchSeventhGen", "iPhone11-iPhone11", "iPhone11Pro-iPhone11Pro", "iPadSeventhGen-iPadSeventhGen", "iPadSeventhGenCellular-iPadSeventhGenCellular", "iPhone11ProMax-iPhone11ProMax", "iPhoneSESecondGen-iPhoneSESecondGen", "iPadProSecondGen-iPadProSecondGen", "iPadProSecondGenCellular-iPadProSecondGenCellular", "iPadProFourthGen-iPadProFourthGen", "iPadProFourthGenCellular-iPadProFourthGenCellular", "iPhone12Mini-iPhone12Mini", "iPhone12-iPhone12", "iPhone12Pro-iPhone12Pro", "iPhone12ProMax-iPhone12ProMax", "iPadAir4-iPadAir4", "iPadAir4Cellular-iPadAir4Cellular", "iPadEighthGen-iPadEighthGen", "iPadEighthGenCellular-iPadEighthGenCellular"], "advisories":[], "isGameCenterEnabled":false, "features":[], "kind":"software", 
"trackViewUrl":"https://apps.apple.com/us/app/sabinuky-%E7%BE%8E%E5%91%B3%E3%81%97%E3%81%84%E3%81%8A%E5%BA%97%E3%82%92%E8%A8%98%E9%8C%B2-%E3%82%B7%E3%82%A7%E3%82%A2%E3%81%99%E3%82%8B%E3%82%A2%E3%83%97%E3%83%AA/id1539312495?uo=4", "trackCensoredName":"Sabinuky -美味しいお店を記録/シェアするアプリ-", "languageCodesISO2A":["EN"], "fileSizeBytes":"48616448", "sellerUrl":"https://peraichi.com/landing_pages/view/sabinuky", "contentAdvisoryRating":"4+", "averageUserRatingForCurrentVersion":0, "userRatingCountForCurrentVersion":0, "averageUserRating":0, "trackContentRating":"4+", "trackId":1539312495, "trackName":"Sabinuky -美味しいお店を記録/シェアするアプリ-", "releaseDate":"2020-12-17T08:00:00Z", "genreIds":["6023", "6005"], "formattedPrice":"Free", "primaryGenreName":"Food & Drink", "isVppDeviceBasedLicensingEnabled":true, "minimumOsVersion":"9.0", "sellerName":"Maiko Murakami", "currentVersionReleaseDate":"2021-02-18T15:23:26Z", "releaseNotes":"・お問い合わせフォームを追加しました\n・「お店を聞く(ベータ機能)」を追加しました\n・自己紹介機能を追加しました\n・パフォーマンスの向上・軽微な修正を行いました", "primaryGenreId":6023, "currency":"USD", 
"description":"知りたいのは、あの人のイチオシのお店\n\n「どこか美味しいお店を教えて!」\n身近な人とこんな会話をよくしませんか?\n\nインターネットで調べれば、\nあなたの知らない「美味しい!」口コミがたくさん広がっています。\nでも、本当の「美味しい!」は、「身近な」あの人のイチオシ。\nSabinukyは、そんな声にお応えする新しいお店の探し方を提案します。\n\n\n■Sabinukyアプリの特徴\n\n ①新たな食の探し方を提供\n  -友達のおすすめのお店を、このサービスにまとめよう\n  -点数レビューではわからない、友達のリアルな声をキャッチ!\n\n  今までメッセージアプリ上に散乱していたお店の情報がここにまとまる!\n\n ②自分のイチオシをコレクション\n  - 必要最低限の情報だけ入力してお店を登録\n  - 自分の訪問記録として活用可能\n\n  自分のお気に入りの美味しいお店を、サービス上にコレクション。\n  自分だけのイチオシリストを作成しよう!\n\n ③マップ機能搭載\n  - 近くのお店も一目瞭然\n  - その日のお出かけの場所に合わせてお店をチョイス\n\n  マップから探すも良し、友達から探すも良し、自分に合った探し方で、\n  行きたいお店をクイックに見つけよう!", "artistId":1539312497, "artistName":"Maiko Murakami", "genres":["Food & Drink", "Social Networking"], "price":0.00, "bundleId":"com.sabinuky.ios", "version":"1.6", "wrapperType":"software", "userRatingCount":0}]
}

3.ユーザーダウンロードversionの取得

これが・・・Adalo上では難しく苦労しました・・・!通常のアプリ開発の場合は、ソースコードに1行足せば取得できるのですが私の知っている限りadaloでは取得できるようなIFが用意されておりません。

なので、ユーザーの利用導線に固定値でversionを仕込み、Userデータベースに各ユーザーのversionを記憶しておく手法をとりました!

Sabinukyの場合、アプリを立ち上げた際必ず下記のスプラッシュ画面を経由するので、スプラッシュのボタンを押下した際にUserデータベースのversionが更新されるように設計しました。クリックアクション→Userデータベースのアップデートで実装してます!※このversionネームは固定値のため、開発者側としてはAppstoreのversionアップデートの際に都度変更する必要があります

スクリーンショット 2021-02-23 11.27.57

4.adaloへの実装方法

上記のiTunes Search APIはカスタムアクションで設定!

スクリーンショット 2021-02-23 11.34.20

スクリーンショット 2021-02-23 11.34.49

ここで取得した最新versionを3項で説明した、Userデータベースにあるアプリversionと比較し、最新version>アプリversionの場合に以下のように通知を出す処理を追加しました!(Sometime visible機能を使います)

スクリーンショット 2021-02-23 11.38.00

すると、こんな感じで実装できました(赤枠の部分)!タップすると、Appstoreに遷移するよう設定しています。

スクリーンショット 2021-02-23 11.40.07

最後まで読んでいただきありがとうございました!ぜひ私たちの開発した美味しいお店を記録/シェアするアプリSabinukyも使ってみてください!

Product Hunt参加中(英語版)

ぜひ投票頂けますと嬉しいです。


AppStore

GooglePlay

サービス紹介ページ


この記事が参加している募集

最近の学び

Sabinukyの今後の開発費用に利用させて頂きます。ご支援頂けますと幸いです。