iPhone Safariで現在位置情報を取得

iPhone

iPhone Safariにて現在位置情報を取得する方法です。
Firefoxでも3.5以上から現在位置情報を取得できます。

Javascriptで、下記のように呼び出します。

 //handleSuccessが成功したときの処理、handleErrorがエラー時の処理
 
 navigator.geolocation.getCurrentPosition(handleSuccess, handleError); 
 

positionというデータになって帰ってきます。

 position.coords.latitude   //経度
 position.coords.longitude  //経度

iPhone Apple Push Notification ServiceのApple Push Notification Serviceのトラブル

Apple Push Notification Service(以下、APNS)を利用したアプリのAdHocビルドを作成してインストールしようとしたところ、下記のエラーメッセージが表示されました。

 A valid provisioning profile for this executable was not found.

XCode OrganizerのConsoleでアプリのインストールを監視したところ、下記のエラーログが出力されました。

 'aps-environment' has value not permitted by a provisioning profile

 A valid provisioning profile for this executable was not found.

 the executable was signed with invalid entitlement

APNSの設定とプロビジョニングファイルのAPP ID等の設定が整合していない場合に発生するようです。
Apple Push Notification Serviceの設定を見直したり、プロビジョニングファイルを作り直すと解決する可能性が高いです。

また、Bundle IDがワイルドカードだとAPNSは動作しません。

iPhone 4 横スクロールする

iPhone

iPhone 4 横スクロールする

スマートフォン向けのサイトを作成していて、iPhone 4でだけ、ビヨヨンと変な横スクロールをする場合があります。
こういう場合は

  1. 中の要素が横幅が大きいものがある
  2. CSSでWidth:100%を指定している

を修正すると、治る可能性があります。

iOS版アプリ(.ipa)」とprovisioningファイルのダウンロード方法

①プロビジョニングファイルの追加

②アプリケーションのインストール

で開発用アプリケーションをiPhoneにインストールすることができます

①プロビジョニングファイルの追加
1.iTunesで、「メニュー」→「ファイル」→「ライブラリに追加」
2.プロビジョニングファイル(~.mobileprovision)を選択
3.iPhoneにプロビジョニングファイルが追加されていることを確認
(確認方法は…)
iPhoneの「設定」→「一般」→「プロファイル」の中に追加されていればOK
※今までプロビジョニングファイルを追加したことがない人は、失敗していると「プロファイル」という項目が表示されていないはず!「プロファイル」は「アクセシビリティ」の下に出ます

②アプリケーションのインストール
1.以前のバージョンがインストールされている場合は、デバイスおよびiTunesのAppから削除
2.IPAファイル(~.ipa)をダブルクリック(自動的にiTunesが開いてライブラリに追加されるはずです。開かなければ、iTunesライブラリにドラッグ)
3.iPhoneをUSBポートに接続
4.iTunesで左メニューにある「デバイス」の「~~のiPhone」をクリック
5.「App」タブを開き、インストールするアプリが選択されているか(チェックマークが付いているか)確認

iOSプロジェクトにFFmpegを組み込む

iPhone

iOSプロジェクトにFFmpegを組み込んでみました。
以下はMac OS X 10.8.5/Xcode 5.0.2で確認した内容です。

FFmpegライブラリのビルド

まず、FFmpegのユニバーサルライブラリをMac上でビルドします。

下記リンク先からgas-preprocessor.plを取得します
https://github.com/mansr/gas-preprocessor.

gas-preprocessor.plに実行権限を付与します

 chmod +x gas-preprocessor.pl 

gas-preprocessor.plを/usr/local/bin/に配置します。

下記からシェルスクリプトを取得します
https://gist.github.com/m1entus/6983547

ダウンロードしたシェルスクリプトを実行するとffmpegがダウンロード・ビルドされます。

 sh build-ffmpeg.sh

下記ディレクトリにユニバーサルライブラリとヘッダーファイルが配置されます。

 build/built/universal/

iOSプロジェクトへの組み込み

Xcodeで新規プロジェクトを作成します。

ライブラリのリンク

build/built/universal/lib以下に生成された.aファイルを
プロジェクトナビゲーターのFrameworksフォルダ以下にドラッグ&ドロップします。
必要に応じて「Copy items into destination group’s folder (if needed)」にチェックをいれます。

ライブラリのヘッダー追加

build/built/universal/includeをプロジェクトナビゲーターのブロジェクト名フォルダ以下にドラッグ&ドロップします。

プロジェクトのビルド設定

プロジェクトナビゲーターのプロジェクトをクリックするとエディタ部分にプロジェクト設定が表示されます。
Build Settingsタブを選択し、”Header Search Paths”を検索して、ffmpegのヘッダーを格納したフォルダ(例 $(SRCROOT))を、recursive(再帰)に設定して追加します。
次にBuild Phasesタブを選択し、libbz2.dylibとlibz.dylibを追加します。

テストコード作成・動作確認

AppDelegation.mを開き下記を追加します。

 #include "avformat.h"

didFinishLaunchingWithOptions関数内に下記を追加します。

 av_register_all();
 

これでビルド・実行すると、libavformatの初期化され、全てのmuxers, demuxers, protocolsの登録ができるところまで動作確認できます。