タグ

iosに関するnagachikaのブックマーク (20)

  • [iOS]NSURLConnectionを利用してHTTP通信 - l4l

    iOSアプリでHTTP通信を実装するベーシックな方法はFoundation Frameworkで提供されているNSURLConnectionを利用すること。ドキュメントの「URL Loading System Programming Guide」を一通り読んだので、その基的な使い方をまとめてみる。 デフォルト設定でGET通信 まずはコードから。Window-based Applicationのプロジェクトテンプレートに対して、処理のエントリポイントをapplication:didFinishLaunchingWithOptions:に追加、他のメソッドは新規で作成。receivedDataはヘッダで定義されているNSMutableData型の変数。あ、テストコードなのでメモリ管理とか気にせず書いてます、あしからず。 - (BOOL)application:(UIApplication *

  • Appleのサーバー認証を通過するアプリ内課金のクラックツールが出回っているらしい - @Yoski はてな別室

    アプリ内課金のクラックツールで有名なのは iAP Cracker で、これは偽署名を作成することで「サーバー側認証を行なっていない」実装のアプリについてアプリ内課金を回避ししてしまうツールです。 urus のリポジトリにあるやつが有名で、これを使うとデフォルトで Transaction ID が「com.urus.iap.xxxx」になるので、まぁもろバレなわけですが・・・。 iAP Cracker については、iOS 6.1 で Apple が対策をいれたため使えなくなりました。 代わりに「LocalIAPStore」というものが出まわってます。ただ、これも「サーバー側認証」されるとダメなので、アプリ開発者がちゃんとサーバー側で認証していれば問題ありません。 ところが、最近サーバー側認証を回避するアプリ内課金のクラッキングツールが出回っているようです。 アプリ内課金のサーバー認証では、i

    Appleのサーバー認証を通過するアプリ内課金のクラックツールが出回っているらしい - @Yoski はてな別室
  • RubyMotion のデバッグで NSZombieEnabled を使う - satococoa's blog

    RubyMotion でアプリをつくるとき、デバッグがやはり大変です。 例えば GCD など非同期で実行されるブロック内で参照されるオブジェクトをインスタンス変数に入れていない場合、実際にそのブロックの処理が実行されるときには既にそのオブジェクトが解放されてしまっているというケースがあります。 これが RubyMotion を使う上での一番厄介なハマりどころといえると思います。 そのケースにハマった場合、何も有用なログを残さずにすとんと落ちてしまうことがありとても萎えます。 例えば以下の例はあまりに単純すぎますが、当然アプリがすとんと落ちます。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 # app_delegate.rb class AppDelegate def application(application

  • iOS Development Tips I Would Want If I Was Starting Out Today

    iOS Development Tips I Would Want If I Was Starting Out Today Making iOS apps is getting easier and easier with each new release of Xcode. However, all the new features and approaches means there are more options to choose from, outdated books and old documentation. Back in my day it was so much harder - that's is true in many respects, but a much higher level of quality and features is expected n

  • レシートのverifyとSandbox – なんてこったい

    StoreKitを使ってアプリ内でアイテムの購入が行われると、レシートが発行されます。Appleは不正防止のため、レシートの内容が正しいかどうかverifyする機構を用意していますが、この機構を使うには若干注意が必要です。 レシートの認証の基礎 まず、StoreKitを使ったアプリ内課金を実装する上で、レシートの認証はすべてのアプリで必須の要件というわけではありません。しかし、とくに購入内容がサーバーと連動するような場合において、レシートの認証は効果の高い不正対策方法の一つです。 ユーザがアプリ内で決済を行う(状態がSKPaymentTransactionStatePurchasedになる)と、そのtransactionのtransactionReceiptプロパティからレシートデータを取得できるようになります。ここで取得したレシートデータをAppleが用意している認証サーバー(buy.i

  • StoreKit(組み込みプロダクトモデル編) まとめ – なんてこったい

    というわけで、StoreKitの挙動について細かく検証してきましたが、少なくとも組み込みプロダクトモデル編については、ここから先はかなり細かい話になってきてしまうので一旦ここでまとめておきます。 なお、この情報は2011年11月現在のiOS 5.0におけるもので、将来的に仕様が変わっている可能性があります。また、公式ドキュメント等には記載されていない独自の検証に基づく見解が含まれます。参考程度に読んでください。そして気づいた点を躊躇せず指摘してください。 StoreKit 組み込みプロダクトモデルに関するポイント 1. オブザーバーをアプリケーション起動直後に登録する 組み込みプロダクトモデルにおいて、最も厄介なのは6. の購入手続きが同時に複数走ってしまう場合です。中断されたトランザクションをなるべく早く再開させるためにも、オブザーバーはアプリケーション起動直後に登録しましょう。公式ドキ

  • StoreKit トランザクションの重複を防ぐ – なんてこったい

    トランザクションが複数できると面倒なことになると前回のポストで書きました。特に購入手続きの途中でアプリケーションが終了してしまったような場合は、アプリケーション側で少し面倒ですが対策をいれないと問題を回避できません。 発生するケースについての確認 実際の対策を見る前に、発生するケースについて確認しておきます。 ユーザがアプリケーション上で特定のアイテムを「購入」しようとする。 アプリケーションからStoreKitのキューにPaymentリクエストが積まれる。 トランザクションが生成される。 トランザクションが完了する前にアプリケーションが終了。 アプリケーション再起動。 前回のトランザクションが再開/完了するより前のタイミングでユーザが再び「購入」しようとする。 この問題は、前述の通りアプリケーション起動から未完状態のトランザクションが再開されるまで若干のラグがあるために発生しうる問題です

  • StoreKit Consumableプロダクトの二重購入 – なんてこったいブログ

    トランザクションの中断と再開について、さらにケースを見ていきます。未完状態のトランザクションが既にある状態で、新しいペイメントをリクエストした場合の挙動について。厄介です。 同一プロダクトに対する複数のトランザクション 前述した複数デバイスを使っているときを除いて、StoreKitでは同じプロダクトに対する購入トランザクションを複数同時に進める事はできないようになっているようです。既に進行中/中断状態のトランザクションがある状態で新しい支払いリクエストをキューに積むと、そのトランザクションはfailすることになります。勿論この挙動自体はそうあるべきものですが、この時の処理の流れには注意をしなければいけません。 発生するパターン 同一のデバイス上で一つのプロダクトに対する複数のトランザクションが発生してしまうパターンは二つ考えられます。 パターン1. 前回のトランザクションがfinishして

  • StoreKit トランザクションとデバイスとAppleID – なんてこったい

    トランザクションの中断と再開について、もう少し詳しく見ていきましょう。 トランザクションの中断と再開に関する基的な挙動の復習 購入の確認ダイアログが表示された後、アプリケーションから正しくfinishTransaction:を実行されなかったトランザクションは未完状態となり、次回アプリケーションが起動した時に再開されます。 実験 前のポストに書いた通り、トランザクションはApple IDと紐づいています。なので、複数のデバイスで同じApple IDを使っていて、なおかつ未完のトランザクションがあった場合にどういった挙動になるのか、実験をしてみます。※この内容は、2011年10月時点で最新のOS 5.0を用いて行った結果です。状況/アップデートにより挙動は変わる可能性があるため、十分に注意してください。 Consumableプロダクトの場合 まず、あらかじめ二つのデバイスA, Bで同じAp

  • StoreKitのトランザクションの基礎 – なんてこったい

    支払いは完了したのにアイテムがアンロックされない、等の問題が起きないように、StoreKitにはトランザクションの機構があります。トランザクションの機構は絶対に必要なのですが、これがStoreKitによるアプリ内課金の組み込みを複雑にする大きな要素となってきます。基礎から見ていきましょう。 StoreKitにおけるトランザクション SKPaymentTransactionクラス トランザクションを扱うクラスはSKPaymentTransactionです。基的にPaymentがキューに積まれたタイミングで生成され、購入の一連の流れを管理するのに用います。最後はアプリケーション側からfinishTransaction:というトランザクション完了のメソッドを投げる形で完了になります。 SKPaymentTransactionObserverプロトコル アプリケーション側がPaymentリクエス

  • StoreKit トランザクションの中断と再開 – なんてこったい

    購入トランザクションは、アプリが最後にfinishTransaction:を呼んだタイミングで完了となりますが、そこにたどり着く前にアプリケーションが終了してしまったりネットが切断してしまう可能性があります。その場合、トランザクションは未完状態になり、次回アプリケーションが起動したタイミングで再開されます。これを適切に処理しようとすると、結構厄介なことに気がつきます。 トランザクションを意図的に未完状態にする方法はいくつかあります。購入ダイアログがでた直後にアプリケーションを終了してしまってもいいし、もっとシンプルにPaymentをキューに積んだ後、finishTransactionを呼ばなければそのトランザクションは未完状態のまま残る事になります。 トランザクションの再開 未完状態のトランザクションは、次回アプリケーションが起動した後でStoreKitからSKPaymentTransac

  • iPhoneで楽器アプリを作るときに抑えておきたいvDSPの概要 – なんてこったい

    Mac/iPhone音楽アプリを作りたいとき、音響合成を行う時にvDSPを使うと高いパフォーマンスを出す事ができます。使い方は簡単ですがウェブ上に情報が少ないので、後で調べる方と自分のためにここに記事として情報を残しておきます。 vDSPってなに? vDSPはOS X、iPhoneなどに搭載されている信号処理用のライブラリvecLibの中の、DSP(信号処理)用の機能がまとめられたものです。元々はPowerPC G4時代にAltiVecというベクトル演算機構を有効活用するために用意されていたライブラリですが、その後Intel Macでも使えるようになり、今はiPhone / iPadでも使えます。 なにがいいの? 1. 速い。アセンブラも書かなくてよい。 音響合成処理は計算量が多いので、効率化のためにアセンブラを書く事が多いですが、vDSPを使えばアセンブラを書かなくてもCPUを効率的に

  • iOSのオーディオルーティングシステム「Audiobus」アプリがついにリリース!〜対応アプリのまとめ〜 | iPhone・iPad Music App blog〜音楽アプリ・楽器アプリのレビューブログ〜

    iPhone/iPadのアプリ間でオーディオのルーティングができる「Audiobus」のアプリがついに12/10に解禁になりました!iOS関連、音楽関連のWebサイトやSNSなどで話題沸騰中です! Audiobus - A Tasty Pixel(iPhone/iPad) ¥850 iPadはもちろんiPhoneにも対応したユニバーサルアプリでリリースされました。価格は¥850。 このAudiobus Appがミキサー的な役割をすることで、対応アプリ間のオーディオのルーティングが可能になります。 具体的に言うと、楽器アプリの演奏を、他のレコーディングアプリで録音したり、エフェクターアプリでエフェクトをかけたりなど、今まで2つのiOS端末をケーブルで繋げなければできなかったようなことが、1つのiOS端末の中で、しかもリアルタイムでできるようになりました。 現在対応アプリはまだ少ないですが、今

  • RubyMotionのプロジェクトでアプリの設定画面を作る - ひげろぐ

    主に以下のサンプルを参考に。基的な考え方はObjective-Cでやるときと変わらない。 mordaroso/rubymotion-settings · GitHub resources以下にSettings.bundleを置けばiOSの設定アプリに自作のアプリの設定画面が追加される。Settings.bundleの詳細については情報がいくらでもあるので省略。 アプリ内での設定や取得、初期化などは以下のようにして行う。詳細についてはNSUserDefaultsでググるといろいろ出てくるので基的な操作のみ。 値の設定 NSUserDefaults.standardUserDefaults["key_a"] = "A" ハッシュと同様に操作できる。 数値などもそのまま設定できるのはなかなか素晴らしい。 値の取得 NSUserDefaults.standardUserDefaults["ka

  • 第3回 iphone_dev_jp 東京iPhone/Mac勉強会でFrankの紹介をしました - soutaroブログ

    サンプルプログラムとプレゼンテーションを公開します。 https://github.com/soutaro/chefpad 各方面に(いらん)配慮をした結果、サンプルプログラムは画像リソースを削除してあります。(どの方面かはプレゼンテーションの中に残してあるスクリーンショットからお察しください)。 リンク Testing With Frank — Painless iOS and Mac Testing With Cucumber どういう話でしたか? Frankを使うとRubyからiPhoneアプリのテストができるので、iPhoneアプリがクライアントになっていて、サーバがRailsで書いてあるような、今どきのアプリのテストがやりやすいよ!という話でした。 Frankって言うのは一言で言えば、iPhoneアプリのためのSeleniumです。 サンプルの説明 Railsのサーバを普通に開発

    第3回 iphone_dev_jp 東京iPhone/Mac勉強会でFrankの紹介をしました - soutaroブログ
  • [RubyMotion] Simulatorでは動くのに実機で動かなくてハマった話 - ぽっちぽちにしてやんよ

    はじめに アプリを作ってた時に,Simulatorでは動くのにrade deviceやrake testflightして実機で動かしたときに起動した瞬間落ちるという現象が起こって困った話です. RubyMotionは実機でのデバッグに弱い! 実機を繋ぐのはめんどくさいので,基Simulatorで開発してるのですが,さぁ実機でうごかすかーとなったときに何故か即死して困りました. RubyMotionはrakeしたときにSimulatorが自動的に立ち上がってインタラクティブシェルで色々出来るという利点があるのですが,これは実機では出来ません.(よね?) なので,どうしてもSimulatorがメインになってしまう気がします. 今回実機で動かして落ちるとかいうことでハマったわけですが,結果的には実機で動かしてXCodeのOrganizerのConsoleからログを見て原因調査をしました. そ

  • iOS 組み込みの効果音を鳴らしてみる - A Day In The Life

    iOSにはいくつか組み込みの効果音が用意されていて AudioToolbox フレームワークを使うと簡単に鳴らすことが出来ます。 手順 プロジェクトに AudioToolbox.framework を追加します。 AudioServices.h をインポートします。 AudioServicesPlaySystemSound 関数を実行します。引数にはサウンド ID を渡します。 #import "RootViewController.h" #import <AudioToolbox/AudioServices.h> @implementation RootViewController - (IBAction)onClick:(id)sender { AudioServicesPlaySystemSound(1000); } @end 音の種類 サウンド ID は1000から1017まで全部

    iOS 組み込みの効果音を鳴らしてみる - A Day In The Life
  • VOYAGE GROUP エンジニアブログ : androidとiOSで共通で使える暗号方式

    2012年04月26日09:42 カテゴリprogrammingスマートフォン androidとiOSで共通で使える暗号方式 こんにちは、VOYAGE GROUPのしんばし(@shinbashi)です。 昨今何につけてもスマートフォンですよね。 かくいう僕もPDAからのW-ZERO3という王道を通って来ました。 さて、最近は特にスマートフォン対応とか、アプリ化する機会が増えてきたと思います。 android版を作ればiOS版も出すよ!みたいな話になりますよね。 「android版だけでいい」 なんて言葉を信じて設計すると、後で痛い目を見るのは火を見るより明らかです。 前フリが長くなりました。 android版だけだと信じて僕が痛い目を見たのは暗号化・復号処理の部分です。 Javaはともかく、Objective-Cをよく知らなかったのでライブラリに頼るわけですが、 Objective-Cの暗

  • 10分でわかるGoogle Analytics SDK for iOS - murapong's blog

    (iOS Advent Calendar 2011 20日目の寄稿エントリです) iPhone/iPadアプリをリリースした後にダウンロード数、ランキングをチェックするのは当然ですが、どれだけアプリが使われているのかをチェックすることも重要です。そこで今回はGoogle Analyticsを使ってiOSアプリの使用状況を計測をする方法を紹介したいと思います。 Google Analytics for iOSとは iOSネイティブアプリ用のGoogle Analyticsなのですが、計測データの送信部分がObjective-Cで書かれているので、画面の表示回数やボタンのクリック数などを計測することが可能です。ちなみに計測結果はWeb版のGoogle Analyticsと同じ管理画面から確認することができます。 Google Analyticsの設定 Google Analyticsのアカウン

    10分でわかるGoogle Analytics SDK for iOS - murapong's blog
  • iOS 5のオーディオ新機能 | Objective-Audio

    世の中iOS 5といったらiCloudだSiriだと騒いでいますが、オーディオの新機能も実は結構あります。とりあえずどんなものがあるかだけ書いておきます。 AudioUnitプラグイン AudioUnitのプラグインがかなり追加されてます。Macでは以前からあるもののサブセット的な感じです。 【Generator】 ・ScheduledSoundPlayer ・AudioFilePlayer 【MusicDevice】 ・Sampler 音を再生するものはGeneratorとMusicDeviceですね。特にSamplerはSoundFont&MIDI対応のプレイバックシンセなので、SoundFontを作ってしまえばMIDI対応も簡単にできてしまいます。「なんとかピアノ」とか「シンギングなんとか」とか、AVAudioPlayerで無理矢理つくるんじゃなくて、これ使った方が良いです。Audi

  • 1