PhoneGapでビルドする方法
PhoneGapを使ってiOSアプリをビルドする方法です。
まずは下記よりPhoneGapをダウンロードする。
特にPhoneGapはインストールする必要はなくzip解凍するだけです。
PhoneGap用のXcodeプロジェクトを作成する前に、
アプリの下記の詳細情報を決めておきます。
【作成プロジェクトの場所】
/Users/name/works/XcodeProject/PhoneGap/SampleApp
【パッケージ名】
com.publicroots.SampleApp
【プロジェクト名】
SampleApp
次にターミナルを使ってPhoneGapを開始するための
Xcode用プロジェクトファイルを作成します。
先程ダウンロードして解凍したPhoneGap内の「lib/ios/bin」を開いて、
中にある「create」をターミナルにドラッグ&ドロップします。
ターミナル上のcreateの後に、
「create {作成するプロジェクトの場所} {パッケージ名} {プロジェクト名}」
(それぞれのパラメータは半角スペースをあける)となるように入力して、
Enterキーを押します。
/Users/name/Downloads/phonegap-2.9.1/lib/ios/bin/create /Users/name/works/XcodeProject/PhoneGap/SampleApp
com.publicroots.SampleApp SampleApp
そうすると、指定した場所にXcodeファイルが出来上がっています。
あとは、「www」フォルダの中にコーディングしたファイルを入れて、
ビルドするだけです。
参考サイト
Objecti-ve-C : Social.frameworkライブラリ
iOS6から実装されたライブラリSocial.frameworkを使うと
簡単にSNSへシェアができるようになります。
#import <Social/Social.h>〜略〜// Facebookシェアボタン設置
UIImage *FBsharebtnimg = [UIImage imageNamed:@"facebook.png"];
FBrepbutton = [[[UIButtonalloc] initWithFrame:CGRectMake(160, 468, 80, 100)] autorelease];
[FBrepbuttonsetBackgroundImage:FBsharebtnimg forState:UIControlStateNormal];
[FBrepbuttonaddTarget:selfaction:@selector(FBshareaction:) forControlEvents:UIControlEventTouchDown];
[self.viewaddSubview:FBrepbutton];
〜略〜
- (void)FBshareaction:(id)sender {//NSLog(@"Facebookシェア保存");// 組み込みのFacebookが利用可能な端末かを検証するif ([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) {SLComposeViewController *slComposeViewController =[SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook];// 投稿するコンテンツを設定する// 表示する文字列[slComposeViewController setInitialText:@"#PUBLICROOTS"];// URL//[slComposeViewController addURL:[NSURL URLWithString:@"http://publicroots.com"]];// 画像 (ファイル名が分る場合)//[slComposeViewController addImage:[UIImageimageNamed:@"SNScompimg"]];// 画像を添付[slComposeViewController addImage:[self makeaShot]];
// 処理終了後に呼び出されるコールバックを指定する[slComposeViewControllersetCompletionHandler:^(SLComposeViewControllerResult result) {switch (result) {case SLComposeViewControllerResultDone:NSLog(@"Done!!");break;case SLComposeViewControllerResultCancelled:NSLog(@"Cancel!!");}}];// 表示する[self presentViewController:slComposeViewController animated:YES completion:nil];}}
Twitterの場合は、isAvailableForServiceType:SLServiceTypeFacebookを
isAvailableForServiceType:SLServiceTypeTwitterにすればOKです。
また、画像を添付したい時は、ファイル名を入れるか、
上記では別に画面キャプチャを撮って添付しています。
-(UIImage*)makeaShot {
//NSLog(@"シェア用画像保存スタート");UIImage *image;CGRect snsrect = CGRectMake(0, 0, 320, 468);UIGraphicsBeginImageContext(snsrect.size);[self.view.layerrenderInContext:UIGraphicsGetCurrentContext()];image = UIGraphicsGetImageFromCurrentImageContext();// 画像コンテキストを終了UIGraphicsEndImageContext();//NSLog(@"シェア用画像保存完了");return image;}
参考サイト
画像やURLをFacebookやTwitter、LINEなどのSNSに共有する - Think Big Act Local
Objective-C : アラート表示して自動的に閉じる方法
アラートの表示自体は簡単なのですが、自動的に閉じたい時の方法です。
//アラートの表示
UIAlertView *alert = [[[UIAlertView alloc] initWithTitle:@"SAVE"
message:@"COMPLETE"
delegate:self
cancelButtonTitle:nil
otherButtonTitles:nil ] autorelease];
[alert show];
//アラートを自動的に閉じる
[alert dismissWithClickedButtonIndex:0 animated:NO];
参考サイト
Objective-C : ステータスバーを非表示にする
GW中にちょっと時間があったので、久しぶりにObjective-cを書いてみたりした。
結構時間があいていたので、感覚を取り戻すのに時間がかかりました。。。
iOSアプリのディスプレイ名を変更する方法もiOS7からちょっと変わってたのでメモ。
・info.plistの「Status bar is initially hidden 」を「YES」にする。
・TARGETSの infoタブ > Custom iOS Target Properties 項目 > View controller-based status bar appearance を「NO」にする。これはiOS7で新しく必要となった設定。項目がない場合は(+)から View controller-based status bar appearance 項目を作成する。
参考サイト
Androidアプリの登録に必要なキーストアファイル
AndroidアプリをAndroidマーケット(Google Play)に登録するためには、
apkファイルへの署名が必要で、署名に必要なのが Keystore ファイルです。
基本的には、非公開鍵なのでiOSアプリのように厳しくはないですが、
下記の情報を登録する必要があります。
Enter keystore password: <enter password>
What is your first and last name?
[Unknown]: <user’s name>
What is the name of your organizational unit?
(あなたの組織単位の名前は何ですか?)
[Unknown]: <department name>
What is the name of your organization?
(組織の名前は何ですか?)
[Unknown]: <company name>
What is the name of your City or Locality?
(あなたの都市または地域の名前は何ですか?)
[Unknown]: <city name>
What is the name of your State or Province?
(あなたの都道府県の名前は何ですか?)
[Unknown]: <state name>
What is the two-letter country code for this unit?
(この単位に該当する2文字の国コードとは何ですか?)
[Unknown]: <country name>
まとめると
パスワード : *****
姓名 : 担当者の氏名
組織単位名 : 担当者の肩書き
組織名 : 会社名
都市名または地域名 : 住所
州名または地方名 : 県名
国番号 : 81(日本)
上記の情報さえあれば、開発会社側で設定できます。
Macのターミナルからも作成できるようです。
参考サイト
【10分で出来る】Androidのリリース用「署名付きapkファイル」の作成 - キリンを召還するブログ。
【追記 2014.05.11】
いつからか分らないですが、
アプリアップデート時の仕様が変更になってます。
どうやら、変更内容の入力場所も上記画像の場所では無く、
apkアップデート時に入力するようになっているのと、
アップロードしたらすぐに反映されるようです。。。
あと、この前制作したアプリが突然落とさました。。。
きちんと利用規約やプライバシーポリシー情報を入れていなかったので、
「なりすまし」と思われたようです。
きちんと異議申し立てをすれば解除されましたが....
Androidは、Appleとは違って審査なくすぐに反映される反面、
こういうところが怖いところですね。。。
iOSアプリ開発時の証明書(p12)とプロビジョニング
iOSアプリの開発時の証明書(p12)とプロビジョニングについて
よく忘れるのでメモります。
Apple IDの取得
文字化けを防ぐため、Apple IDは英語で登録しておく。
証明書(p12)発行の手順
iOS Developer Centerへの登録が必要です。(年間 ¥7,800 (税別) 2014.4.28現在)
iOS Dev Center - Apple Developer
【法人の場合】
iOS Developer Program に企業/組織として登録するには下記が必要です。
- Apple Developer Program の法的な契約書に対して企業/組織を拘束する法的権限。
- 登録された法人名。この法人名が App Store 上で「販売者」として表示されます。DBA、架空事業名、商号、支店名は受け付けておりません。
- 企業の主要な事業所または本社の住所。
- 法人に割り当てられた D-U-N-S Number。
- 購入用の有効なクレジットカード
- 担当者の情報を登録時のメールアドレスは企業ドメインのものにする。
- 審査中に担当者に電話があります(申請後2〜3日くらい必要)
iOS Developer Center登録後、マスターになるMacを用意する。
AppleアカウントとマスターMacを紐付けるためにMacの証明書要求を準備する。
- キーチェーンアクセス -> 証明書アシスタント -> 認証局に証明書を要求
- メールアドレス : 開発者登録時のメールアドレス
- 要求の処理 : ディスクに保存 / 鍵ペア情報を指定にチェック
CertificateSigningRequest.certSigningRequest がデスクトップに保存される。
iOS Developer CenterからCertificateSigningRequest.certSigningRequest を使って
開発用と申請用の設定をする。
- (開発用)iOS Provisioning Portal -> Certificates -> Developmentタブ -> Request Certificate
- (申請用)iOS Provisioning Portal -> Certificates -> Distributionタブ -> Request Certificate
デスクトップ上の ios_distribution.cer と ios_development.cer を
ダブルクリックすれば、キーチェーンアクセスに証明書が登録される。
参考サイト
Apple Developer:iPhoneアプリ開発での証明書関連の作業手順 | www.sirochro.com
プロビジョニングプロファイルの書き出し
AppIDを登録後、アプリに紐づく情報を登録する。
- (開発用)BundleIDは「*」にする。ex) jp.publicroots.*
- (申請用)BundleIDは正確に入力する。ex) jp.publicroots.appname
appname.mobileprovision ファイルがダウンロードできます。
書き出されたプロビジョニングプロファイルをクリックするか、
Xcodeで開くと、ビルド時に選択できるようになります。
別の環境で製作をする場合は、マスターMac の証明書(p12)とパスワード、
プロビジョニングプロファイルを使えば書き出す事ができます。
※最近仕様変更があり、Xcodeから iTunes Connect に書き出す際に
Apple ID のID/PWが必要になりました。
【追記 2014.05.11】
アカウント取得や証明書発行などは、
できればクライント側でやってもらう方がベストです。
もしこちらでやる場合でも、クライントにMacを用意してもらうか、
新規で購入して管理した方がいいと思います。
複数アプリを制作していると、アカウントと証明書とプロビジョニングの紐付けや
Xcodeでビルドする時にややこしくなります。。。
Adobe PhoneGap Buildの使い方
ハイブリッドアプリを作成する時には
Dreamweaver CCとAdobe PhoneGap Buildを使えばとても便利です。
まず、Adobe PhoneGap Buildでアプリを登録しておきます。
GitHubからデータを同期するか、Zipファイルをアップロードする必要があります。
正直ここは何をアップロードすれば良いのかよく分からないので、
僕は適当にサイトデータを圧縮したZipファイルを使ってます。
証明書(p12)とプロビジョニングプロファイルをここで
アップロードして、無事ビルドできるかどうかまで確かめておきます。
※ちなみに、iOSだけではなく Android / Windows8 に書き出し可能です。
その後、Dreamweaver CCを立ち上げて
サイト定義します。(久しぶりにやった気がする)
そして、ツールバーのサイトの「PhoneGap Build サービス」を選択する。
新たに出てきたウィンドウから、
Adobe PhoneGap BuildのID/PWでログインする。
そこから定義したサイトデータと、登録したアプリ情報を
紐づけて書き出す事ができます。
ビルド後にQRコードが出てくるので、
それを読み取ればアプリがインストールできます。
【追記 204.05.11】
ファイル容量が40Mを超えるとエラーが出るようです。。。