iOSの月額課金レシート検証をサーバーサイドで行うときのTipsまとめ

f:id:vasilyjp:20180927090637j:plain

こんにちは、バックエンドエンジニアのjoeです。
みなさんはお気に入りのアプリに月額課金をしたことがありますか?したことがない人は今すぐお気に入りのアプリをみつけて月額課金しましょう!
実際にiOSで月額課金をすると、課金の証明としてAppStoreがレシートを発行します。レシートと言ってもAppStoreが紙のレシートを送りつけてくるわけではなく、電子的な購入情報のことをレシートと呼びます。ユーザーが解約処理をしない限りAppStore側でレシートが自動更新される仕組みになっています。(月額課金の場合)
その際に、AppStoreのサーバーにHTTPのPOSTリクエストでレシートを問い合わせ、現在の課金状況を知ることができます。このお問い合わせ処理と、レシートが不正なレシートでないかをチェックする処理を合わせてレシート検証と呼びます。
今回はiOSのレシート検証をクライアントのみでの検証からサーバーサイドでの検証に実装を変更したので、その理由や方法、考慮するべき点などを書きます。

注意

この情報は2016年8月3日現在のものです。

サーバーサイドでのレシート検証が推奨される理由

続きを読む

画像がズームインしながら画面遷移するSwiftライブラリを公開しました

f:id:vasilyjp:20180927090637j:plain

iOSエンジニアの庄司(@WorldDownTown)です。 iQONのiOSアプリ内部で使われている画面遷移処理をOSSライブラリ化したのでご紹介します。

TL;DR

  • UINavigationControllerでの遷移時に、タップした画像をズームして遷移するトランジション処理をSwiftライブラリ化しました。
  • エッジスワイプでもズームアウトして戻ることができます。

github.com

続きを読む

iOSチームでのインターンシップのすすめ

f:id:vasilyjp:20180927090637j:plain

こんにちは、iOSエンジニアの遠藤です。 学生の皆さん、夏のインターンシップはもう決めましたか? 各社で様々な形式のインターンシップがあると思いますが、今回はiOSチームを例にVASILYでのインターンシップについて紹介をしたいと思います。

記事には実際にインターンシップに参加した学生の感想を載せていますので、VASILYのインターンシップに興味のある方はぜひチェックしてください!

続きを読む

カスタムmitmproxy入門

f:id:vasilyjp:20180927112657j:plain

VASILYのiOSエンジニアにこらすです!

f:id:vasilyjp:20160711100702j:plain

今回はプロキシツールmitmproxyカスタムスクリプト機能について説明したいと思います。 モバイル開発をする際にAPIリクエストのデバッグツールとして mitmproxy はとても役に立ちます!

カスタムスクリプトを使うと何ができるか

カスタムスクリプトを書くと、mitmproxyの動作をプログラムでカスタマイズすることができます。 モバイルデバイスのリクエストやレスポンスを書き換えたり、通信を遅延させたりできます。

続きを読む

iPhoneでテザリング中にレイアウトが崩れる問題の解決方法

f:id:vasilyjp:20180927112657j:plain

iOSアプリを開発しているエンジニアの庄司です。
今回は、iPhoneでのテザリング中や通話中に、ステータスバーの高さが変わることによる表示崩れの対応について紹介します。

f:id:vasilyjp:20160517111453p:plain

TL;DR

  • iPhoneでテザリング中、UITabBarが画面からはみ出したりすることへの対応方法です。
  • RootViewControllerのviewにUITabBarControllerのviewをaddSubview:するときは、親viewの中に収まるようにAutoLayoutを設定します。
  • scrollView.contentInsetの調整にはtopLayoutGuide.topを使います。
  • サンプルアプリをGitHubにあげています。[GitHub]
続きを読む

UIPageViewControllerをつかって無限スクロールできるタブUIを実装してOSSとして公開しました

f:id:vasilyjp:20180927112657j:plain

こんにちは、エンジニアの遠藤です。

最近iQONアプリのホーム画面のデザインをリニューアルしました。
タブを使ったデザインにすることで、iQON内にある多くのコンテンツが見やすくなりました。

f:id:vasilyjp:20160320155549g:plain

今回はこのタブ機能の実装についてざっくりと紹介しようと思います。 実装したものはライブラリーとしてGitHubに公開しているので、ぜひ使ってみてください!

github.com

続きを読む

SequenceTypeの利便性 in Swift 2.2

f:id:vasilyjp:20180927112657j:plain

Making Sequences work for you

こんにちは!

VASILYのiOSエンジニアにこらすです。 SwiftのコントリビューターとSwift EvolutionSE-0053の作者です。 他のOSSプロジェクトにも貢献してるので興味があればGithubでフォローしてください。

今回のトピックはSwift2.0以降のSequenceTypeというプロトコルと、その内部的な動きについて紹介します。classstructSequenceTypeプロトコルに準拠させると、for inループやmap, filterなどを使えるようになります。

f:id:vasilyjp:20160324105731j:plain

続きを読む

アプリのAPIリクエストのトレースはどうするのが効率的か?

f:id:vasilyjp:20180927112657j:plain

こんにちは。iOSエンジニアの庄司です。

普段のアプリ開発において、バックエンドチームから「○○のページで△△のデータ取得するためにリクエストしているURLってどんなの?」と聞かれることがよくあります。
その都度、APIリクエストとリクエスト結果をprintで表示するフラグをONにしてアプリをビルドするということをしていたため、かなり手間がかかっていました。
こういった作業を楽にするためにネットワークデバッグライブラリをいくつか比較してみました。

f:id:vasilyjp:20160212005131p:plain

続きを読む

【iOS】一定以上スクロールするとタブの位置が固定されるUIの実装について

f:id:vasilyjp:20180927090637j:plain


こんにちは。iOSエンジニアの遠藤です。

最近のiQONはコンテンツ量が増えてユーザーの詳細ページに表示する情報が多くなってきました。今のデザインでは情報量が多すぎて詳細ページが見づらい状況になっています。そこで以下のようなコンテンツをタブで管理できるかつユーザー情報を表示してスクロールするデザインを実装しました。

Untitled1.gif

実装について色々と調べたのですがあまり情報が無かったので共有したいと思います。実装する上で参考になれば幸いです。

続きを読む

Carthageクイックスタートガイド

f:id:vasilyjp:20180927090637j:plain


   Carthageとは?

こんにちはVASILYでiOSエンジニアをしているニコラスです。
今回はCarthageの紹介をしたいと思います。

CarthageはiOS / OS X開発のための分散型の (decentralized) パッケージマネージャーです。 既にプロジェクトでCocoaPodsを使っていても、同じプロジェクトでCarthageを使うことができます。 CarthageはCocoaPodsと違って中央レポジトリ型ではないので高速です。 また、100%Swiftで作られているため信頼性が高く、欧米のプログラマーコミュニティで特に盛んに利用されています。 Carthageの基本を学べば(たった5分で)すぐ使えるようになります。

  Carthageを使うメリット

  • コミュニティの活発さ
    Carthageのコミュニティはとても活発で、バグがあればだいたい1日以内に修正のPRが送られています。
  • 環境依存性の低さ
    Carthageは100%Swiftでできているので、CocoaPodsと違って、環境ごとのRubyバージョンの違いによる問題に悩まされることがありません。
    Swiftでできているので、Rubyが書けなくてもiOS開発者がOSSに貢献することができます。 (私もPull Requestを送りました。)
  • シンプルさ
    Carthageはダウンロードしたらすぐに使うことができます。CocoaPodsの場合はRubyやRubyGemの依存関係により、CocoaPodsのコマンド実行に失敗することがあります。
続きを読む

Swiftで会社の受付アプリを作った話とCADisplayLink

f:id:vasilyjp:20180927112657j:plain

iQONのiOSアプリはまだ全てObjective-Cで記述されています。 Swiftへの移行については「たいしてパフォーマンスが上がるわけでもないし…」と思って渋っていました。 そんな中、オフィスの移転をきっかけに来客の受付システムをiPadアプリで作ることになりました。 スクラッチでアプリを作るのならSwiftで、ということでSwiftで作りました。 今回は、受付システムの社員を呼び出すデータ通信と、トップページの時計に使ったCADisplayLink実装を紹介します。

続きを読む

WWDCの現地に来るべき7つの理由 [2014年版]

f:id:vasilyjp:20180927090637j:plain


VASILY iOSエンジニアの庄司です。 同じくiOSエンジニア荒井とチーム全員(2名)でサンフランシスコで開催中のWWDCに来ています。 今回のKeynoteは既にご存知の通り、「OS X Yosemite」、「iOS 8」、新言語「Swift」など盛りだくさんの内容でした。 SwiftはRubyと似たような記法があり、Rubyを使っている会社の一員としてはとっつきやすくていい感じです。 さて、WWDCの開催期間は5日間ありますが、大きく報道されているKeynote以外にもたくさんのセッションが開かれています。 そのセッションの様子はWWDC2014の公式サイトで見ることができます。 Keynoteもセッションも現地に行かずに見れるのに、なぜ高い参加費を払って現地に来るのでしょうか。 今回は「現地に来るべき理由」をいくつか紹介します。

WWDCの現地に来るべき理由

1. Labs

WWDCの会場にはAppleのエンジニアが直接技術的な相談に乗ってくれるブースがあります。(基本的に英語。一部日本語のわかるエンジニアもいるそうです) 日本にいるとAppleのエンジニアと話す機会はなかなかありません。英語に自信がなくてもコードでなら会話ができます。 僕達も実際にLabに行ってみました。英語が苦手でも一人ひとりに理解できるまで丁寧に教えてくれて、抱えていた問題が解決しました。

 

続きを読む
カテゴリー