iPhone

Push Notification Push SSL Certificate 更新

Push Notification Push SSL Certificate の更新時期が迫ってきたので、更新の際の備忘録。

目次

  • Certificateの更新
  • 鍵の生成

Certificateの更新

  1. iOS Dev Center – Apple Developer にログインする。
  2. 対象のApp IDから「Settings」をクリックする。
    スクリーンショット_13_05_29_11_40-3
    スクリーンショット_13_05_29_11_42
  3. 「Create Certificate…」をクリックして(今回はリリース用Production)、CSR(証明書署名要求ファイル)をアップロードする。CSR(証明書署名要求ファイル)の作成方法は suusuke – blog – プロビジョニングファイル作成から実機転送手順 参照
    スクリーンショット_13_05_29_11_43
  4. アップロードすると、Certificateがダウンロードできるようになるので、ダウンロードしたaps_production.cerファイルをダブルクリックしてキーチェーンに登録する。
    スクリーンショット_13_05_29_15_31

鍵の生成

  1. キーチェーンを開き、登録した証明書を .p12形式でエクスポートする。
    スクリーンショット_13_06_05_16_10
    1. 右クリック→書き出す→フォーマットを「個人情報交換(.p12)」形式にして、保存する。ファイル名は「apns-pro-cert.p12」
      スクリーンショット_13_06_05_16_18
    2. パスワードは何でもOK、キーチェーンのアクセス許可のパスワード聞かれる場合はmacのrootのパスワード
      無題-3
  2. 1と同様の手順で、秘密鍵もエクスポートする。ファイル名は「apns-pro-key.p12」
    スクリーンショット_13_06_05_16_24-2
  3. pam形式に変換する。
    1.  
      iMac:Desktop user$ openssl pkcs12 -clcerts -nokeys -out apns-pro-cert.pem -in apns-pro-cert.p12 
      Enter Import Password: //←キーチェーンで入力したパスワード 
      MAC verified OK 
      iMac:Desktop user$ openssl pkcs12 -nocerts -out apns-pro-key.pem -in apns-pro-key.p12 
      Enter Import Password: //←キーチェーンで入力したパスワード 
      MAC verified OK 
      Enter PEM pass phrase: 
      Verifying - Enter PEM pass phrase: 
      iMac:Desktop user$ openssl rsa -in apns-pro-key.pem -out apns-pro-key-noenc.pem 
      Enter pass phrase for apns-pro-key.pem: //←key作成時に入力したパスフレーズ 
      writing RSA key 
      iMac:Desktop user$ cat apns-pro-cert.pem apns-pro-key-noenc.pem > apns-pro.pam
      
  4. 作成した「apns-pro-cert.pem」、「apns-pro.pam」をアップロードして更新

ドキュメント:https://developer.apple.com/jp/devcenter/ios/library/documentation/RemoteNotificationsPG.pdf

今回はサーバー側はPerlで作られているアプリだったので、Push Notificationを使ってみる – iOSアプリ開発トピック が参考になりました。

iOS Developer Enterprise Program の更新

iOS デバイス向けのエンタープライズ App を配信する.

iOS Developer Program 同様 Enterprise版も 年間使用料があり、更新しないと社内用アプリの起動ができなくなるので、更新しました。
更新手順は Developer Program 同様なので、以前備忘録として書いた suusuke – blog – iOS Developer Programの期限内での更新. の通りの手順で問題なく更新出来ます。

ただ、疑問点?

Distribution Certificate の期限が3年後になっている

iOS デバイス向けのエンタープライズ App を配信する.

一年前に Enterprise に申し込んだ際は証明書(Certificate)の期限も1年間だったんだけど。最近変わったんだろうか?
ドキュメントにも、3年間と書いてある。

配信プロビジョニングプロファイルは、発行後 12 カ月で有効期限が切れます。有効期限の 2 カ月前から、iOS デバイスにもうすぐ期限切れになることについて通知が表示されます。有効期限日以降は、App は起動しなくなります。

….

配信証明書の有効期限が切れると、App は起動しなくなります。配信証明書は、発行後 3 年間、またはエンタープライズ・デベロッパ・プログラム・メンバーシップの有効期限まで有効です(どちらか早い方)。証明書が想定より早く期限切れにならないように、メンバーシップの有効期限が切れる前にメンバーシップを更新してください。配信証明書がどのようにチェックされるかについては、証明書の検証を参照してください。

上記のように、配信証明書は3年間有効でも、プロビジョニングプロファイルは12ヶ月なので、アプリも新しいプロビジョニングプロファイルで、作りなおさないと起動しなくなってしまう。
良くなる点としては、配信証明書を更新する手間がなくなる事位なのかな。。。
チームで開発している場合は、証明書渡したりする手間が無くなり良いのか。

追記

Developer Program の更新との細かい違い

上に書いたとおり基本的には同じだったのですが、Provisioning Profileの更新の際にModifyボタンが無いので、削除して新たに作りなおすようになります。
これは、古い証明書で作成した、Enterprise版のアプリを利用不可にするため、そのような仕様になっているかと思われます。
削除すると

Your Certificate Has Been Revoked

というメールが届きます。

アプリをiPhone5に対応した際の備忘録

iPhone5が発売されてから随分時間が経ってますが、この度アプリをiPhone5に対応したのでやったことの備忘録を書きたいと思います。

 

縦幅を568pxに変更する

アプリによって対応する箇所はいろいろ有ると思うのですが、共通するのが縦幅を568pxに変更する事だと思います。対応されてないアプリをiPhone5で起動すると上下に余白ができてしまします。

iPhone5/iOS6で、アプリの縦幅を568pxに変更する方法 – たくあん. に記載されている通りに、568pxのスプラッシュ画像(Default-568h@2x.png)を用意してプロジェクトに追加すればiPhone5で起動した場合に568pxで表示されます。

iPhone5対応のスクリーンショットを用意する

これはApp Storeに表示されるものになりますが、iTunes Connectで申請する際に、4-Inch Retina Display ScreenshotsにiPhone5で表示したスクリーンショットをアップロードすればOKです。

ITunes Connect

iPhone5対応のスクリーンショットについて | KAYAC DESIGNER’S BLOG – デザインやマークアップの話.

その他必要な対応

ポートレート、ランドスケープ両方対応しているアプリなど、アプリによってはその他にも対応が必要みたいです。

アプリをiPhone5に対応する場合の地雷ポイント一覧 | fladdict.

Xcode で 既存アプリのアプリ名を変更する方法

Appleからアプリ名が規約違反って事でリジェクトされてしまったので、その時にやったアプリ名を変更する手順をについて書きます。

プロジェクト名の変更

プロジェクト->TARGETSを選択、右のIdentityでProject Nameを新しいアプリ名に変更する。
リネームの確認画面で確認し[Rename]をクリック。

Bundle Identifierの変更

通常であれば、ドメイン名.プロジェクト名 の用な感じで自動で設定されますが、今回はプロジェクト名を新しい名前に変更したので、Bundle Identifierも自動で変わってしまいます。新規でiTunes Connectに申請する場合(App IDをまだ作成してない場合)はいいですが、バージョンアップなので既存のApp IDを指定しました。

Archive Nameの変更

[Edit Scheme…]よりArchive Nameを設定しました。

無事、申請完了しました。

iTunes Connect ダウンロード数 や 売上ついて

アプリの申請や管理、ダウンロード数などはiTunes Connectから確認することができます。

iTunesConnect_DeveloperGuide_JP.pdf (application/pdf オブジェクト).

ダウンロード数

Sales and Trends から確認できます。

更新されるタイミングは

公式ガイドを確認した結果、

Pacific Time(アメリカ太平洋標準時間)の午前8時に前日分の売上レポート作成されるようです。

となると、日本との時差は17時間だから、

午前1時に前々日分(2日前)の売上レポートが見られることになりますね。

いまはサマータイム実施期間中なので、

午前0時に更新されるかもしれません。

(私は早寝なので確認できませんが・・・)

日次レポートは、

アプリの販売地域が属するタイムゾーンにおいて

午前0時から午後11時59分までの売上を報告しているようです。

Appleが採用しているタイムゾーンは以下の4つ。

Pacific Standard Time (PST)、

Central Europe Time (CET)、

Japan Standard Time (JST)、

Western Standard Time (WST)

この中で一番最後に午後11時59分を迎えるのがアメリカ太平洋標準時間なので

売上レポートの作成はPSTの午前8時に作成される・・・らしいです。

ちなみに、週次レポートは、

月曜日の午前0時から日曜日の午後11時59分までだそうです。

引用元: iPhoneアプリの売上レポートが更新されるタイミング.

売上

Payments and Financial Reportsから確認できます。

有料アプリは値段の70%が開発者に支払われるので500JPY($5.99)の場合は350JPY($4.20)になります。
また、$150を超えないと支払いされないので先は長いですね。

また締め日がいつなのか調べてみたら、Appleと銀行によって決まるみたいで、特に決まってないみたいです。

iPhoneアプリ開発ときどき料理、いちじプログラム: iPhoneアプリの売上の締め日.

売上(Payments and Financial Reports)とダウンロード数(Sales and Trends)があってなくて、売上の詳細を見ると4/1~5/5までとなってて、それだと合うんだけど、ダウンロード数って=売上で良いんだよね。。。

iTunesConnectからアプリダウンロード数レポートを自動取得する方法

iTunesConnectからアプリダウンロード数レポートを自動取得する方法

引用元: iTunesConnectからアプリダウンロード数レポートを自動取得する方法 | zaru blog.

こちらを参考にやってみたので備忘録。

目次

  • jreインストール
  • シェル作成

jreインストール

サーバー環境は、CentOS 5.532bitです。

[root@suusuke ~]# cat /etc/redhat-release 
CentOS release 5.5 (Final)
[root@suusuke ~]# uname -a
Linux suusuke.info 2.6.32-042stab044.11 #1 SMP Wed Dec 14 16:02:00 MSK 2011 i686 i686 i386 GNU/Linux

まずは↓からJREのrpmをダウンロードしてくる。(4/30時点で最新版のjre-7u4-linux-i586.rpmをダウンロード)

Java SE Downloads.

scpやftpでサーバーにアップする。

rpmコマンドでインストールする。

[root@suusuke tmp]# rpm -i jre-7u4-linux-i586.rpm 
[root@suusuke tmp]# java -version
java version "1.7.0_04"
Java(TM) SE Runtime Environment (build 1.7.0_04-b20)
Java HotSpot(TM) Server VM (build 23.0-b21, mixed mode)

シェル作成

jreのインストールが終わったので、iTunesConnectから提供されている、javaのclassファイルを使ってレポートを取得するスクリプトを作成します。
クラスファイルは
http://www.apple.com/itunesnews/docs/Autoingestion.class.zipからダウンロードします。
classファイルをサーバーにアップして、
シェルは冒頭のブログに掲載されているのでそれをちょっとアレンジして

#!/bin/bash

BINDIR=/home/suusuke/bin
DATADIR=/home/suusuke/itunes_report
GETDAY=`date +%Y%m%d -d '2 days ago'`

cd $BINDIR
RESULT=`java -cp "$BINDIR" Autoingestion john@xyz.com letmein 80012345 Sales Daily Summary $GETDAY`
#echo $RESULT;
#exit;
arr=(`echo $RESULT`)
mv ${arr[0]} $DATADIR
gunzip $DATADIR/${arr[0]}

として、取り合えずファイルを保存するだけにしました。

あとはcronに登録して完了です。

45 20 * * * /home/suusuke/bin/get.sh 1> /dev/null

iTunesConnectへ申請する方法

iPhoneやiPadのアプリを作成したら、AppStoreに掲載するためにiTunesConnectからアプリを申請します。
初めて、申請してみたのでその時の備忘録です。

目次

  • 申請の準備(開発証明書、AppID、プロビジョニングファイル作成)
  • iTunesConnectにアプリの情報登録
  • アプリのビルド、サブミット

申請の準備(証明書、App ID、プロビジョニングファイル作成)

証明書については、

suusuke – blog – プロビジョニングファイル作成から実機転送手順.

で書いたとおり既に作成している状態です。

App IDの作成

iOS Dev Center – Apple Developer.

iOS Dev CenterからApp IDを作成します。

  • 右側にあるリンクから「iOS Provisioning Portal」に移動。
  • 左側にあるリンクから「App IDs」→「New App ID」→「Create App ID」へ移動。
  • 「Description」に通称または説明を入力。
  • 「Bundle Seed ID (App ID Prefix)」は複数ある場合は、適切なものを選択。(私の場合はひとつしかないので選択不可。複数チーム登録している場合など選択できる?)
  • 「Bundle Identifier (App ID Suffix)」は”com.domainname.appname”の様な形式で入力する。
  • Submitを押す。

プロビジョニングファイル作成

  • 左のメニューから「Provisioning」に移動して「Distribution」タブをクリック
  • 「New Profile」を押して「Create iPhone Distribution Provisioning Profile」へ移動する。
  • 「Distribution Method」→「App Store」
  • 「Profile Name」→プロファイルの名前。(アプリ名と同じでなくてもOK。ただ同じ方が分かりやすい。)
  • 「Distribution Certificate」→公開用証明書作ったときの名前が表示されている
  • 「App ID」→作成したAppIDを選択
  • 「Devices (optional)」→Ad Hoc版を作成する場合は必要ですが、今回はApp Storeようなので選択なし
  • 「Submit」クリック
  • しばらくするとStatusが「Pending」から「Active」になるので、Downloadを押してダウンロード・保存
  • 「[Profile Name].mobileprovision」を適当な場所に保存
  • ダブルクリックすると、Xcodeのオーガナイザに登録されます。

iTunesConnectにアプリの情報登録

事前準備

  • Store用の説明文の用意します。ちなみに、iPhone用のStoreは一行全角23文字表示されます。
  • スクリーンショットの用意。形式は、jpg / tif / png。下記はサイズ。単位はpxです。
    (iPhoneの場合のサイズ:960×640, 960×600, 640×960, 640×920, 480×320, 480×300, 320×480, 320×460)
    (iPadの場合のサイズ:1024×768, 1024×748, 768×1024, 768×1004)
  • Store用アイコンを用意。形式は、jpg / tif / pngで、サイズは512×512。

iTunes Connectにてアプリの情報を登録する。

iTunesConnectはiOS Dev Centerからアクセスします。

「Manage Your Applications」の「Add New App」をクリック 。

初回のみ”Company Name”(Storeに表示される名前)を入力。

第1ページ

  • 「Default Language」を設定。
  • Application name – アプリの名前 。
  • SKU Number – 他のアプリとかぶらない任意の番号 。自分はその日の日付と0001。
  • Bundle ID – 先ほど作ったやつ。今からアップロードするアプリと対応されます。

第2ページ

  • Availability Date – app storeに出る日。
    (※審査が終わった日か、ここで設定した日の遅い方が採用されます。)
  • Price Tier – 値段を設定します。
  • Discount for Educational Institutions- 教育機関向けの場合、割引するか。
  • 売る国を選ぶ場合ここで設定します。デフォルトだと、全部選択されてます。

第3ページ

  • 最初に選んだ「Default Language」の表示設定です。
    (※Englishで作成して、後で日本語版を作成しました。)
  • Version Number – バージョン。プロジェクトと同じ数字。基本は1.0。
  • Description – アプリの説明。
  • Primary Category – 自分が思う1番のカテゴリを選択。
  • Secondary Category – 自分が思う2番のカテゴリを選択。
  • Keywords – 検索キーワード。カンマ区切りで入力。
    (※100bytes以内。いくらでも入力できてしまうので、優先順位の高い順に記入していくと無難)
  • Copyright – 例を参考に入力。
  • Contact Email Address – 連絡先のメアド。
  • Support URL – アプリのサポートのためのサイトを記入。
  • App URL (optional) – 自分のアプリの紹介サイトを記入。
  • Review Notes (optional) – アプリ審査の為の追加情報。
    (※ユーザー登録が必要なアプリなら、サンプルのアカウントを記入が必須)
  • Rating – レーティング。適切に選択。
    (※Apple側であとで変更する場合があるようです)
  • EULA – End User License Agreement (EULA)を自分で設定したい場合はここで設定する。
  • Images – 先ほど用意しておいたスクリーンショットとかを指定する。
    (※サイズが間違ってる場合はErrorとなります。)
  • 確認画面みたいなのになるので、「View Details」で確認する。

別言語を追加する場合

  • 「Manage Localizations」をクリック。
  • 「Add New Language」をクリックして、言語を追加していく。
  • Languageを選び、同じ事を選択言語でやる。
  • すべて終わったら「Done」をクリック。
    (※ここまでやると、アプリの専用ページやURLができるので、アプリURLを使う場合はここから取得する。その際、URLに「/us/」とあれば、「/jp/」に変えておけば日本語のAppStoreURLになります。)
  • 「Ready to Upload Binary」をクリック します。
  • 暗号化技術とかを使っているのか聞かれるので、Yes/Noを選択。
  • そのうちステータスが「Waiting For Upload」になるので、待つ。

アプリのビルド、サブミット

  • Xcodeで「Info.plist」の「Bundle identifier」と「Bundle version」を設定する。
    (※申請内容と合致するようにしましょう)
  • 画面左上にある「Scheme」のプルダウンメニューにある「Edit Scheme」をクリック 。
  • 左側のメニューの中から「Archive」をクリック 。
  • 「Build Configuration」を「Release」か確認して、「OK」をクリック。
    (※Releaseになっていなければ、Releaseにします)
  • 左側にあるプロジェクト名をクリックしたら行ける画面から、上のタブの中の「Build Settings」を選択。
  • 表示を「All」にして、その中の「Code Signing」の「Code Singing Identity」を、申請用につくったのに設定
  • 画面左上にある「Scheme」のプルダウンメニューから「iOS Device」を選択。
    (※シミュレーション用になっているとダメです)
  • 画面上部にあるメニューの「Product」から「Archive」を選択します。
  • 自動的にOrganizerの「Archives」が開くので、右上の「Validate…」をクリックし、IDとパスワードを入力。
  • Applicationを、先ほど登録したアプリ名に。Identityを自分の名前のiPhone DistributionにセットしてNextをクリック。
  • 正常にいけば、正常だよっていうお知らせとともに、右下に「Finish」が表示されるので、クリック。
    (※この時アプリのStatusは「Passed Validation」 )
  • 今度は右上の「Distribute…」をクリック。”Submit to the iOS App Store”を選択してNextを押す。
  • 正常に行けばエラーが出ない。右下のFinishをクリック。
    (※この時アプリのStatusは「Submitted」)
  • アップロードはこれで完了します。
  • iTunes Connectの該当アプリのStausを確認すると、「Waiting For Upload」→「Upload Received」→「Waiting For Review」に変わっているか確認する。

あとは、審査を待つのみ。。。

参考サイト

App StoreへのiPhoneアプリの登録手順のまとめ(Xcode4環境).

Facebookノートで書かれている記事ですが、物凄くしっかりまとまってます。

SBTickerViewでFlipboard風のUIを実現する

FlipboardのUIは操作性、見た目ともにすごく好きです。

http://www.youtube.com/watch?v=YOQAGmXOERI

そんなUIをSBTrickerViewを使うと簡単に実現できます。

githubからcloneすると、デモプロジェクトが一緒になっているのでそれを参考にサンプルを作って見ました。

blommegard/SBTickerView – GitHub.

UIImageを使えば写真、SBTickViewというクラスを使えばテキストをパラパラと表示できます。
SBTickViewを参考に拡張すれば画像とテキストを重ねたものも作れるかもと思いました。

写真をパラパラめくるアプリ



iPhone Developer Program 登録

iPhone Developer Program に登録した際の備忘録です。

登録

  • iOS Developer Program – Apple Developer. から [今すぐ登録]から登録を行います。

  • [続ける]をクリック。

  • 既にApple Developerには登録済みだったので、既にアップルデベロッパとして登録済みの方アップルデベロッパとして登録済みで、アップルデベロッパプログラムに登録を希望します。を選択後、[続ける]をクリック。
  • Are you enrolling as an individual or company? 個人用か?法人用か?と聞かれるので個人用(individual)の方[Individulal]をクリック。
  • 登録してあるApple IDで Sing in する。
  • 住所等入力して[Continue]をクリック。
    一応、ローマ字で入力。

  • iOS Developer Programを選択し、[Continue]をクリック。
  • 入力内容を確認して、[Continue]をクリック。
  • 規約を読み、同意したらチェックボックスにチェックして、[I Agree]をクリック。
  • [Add to cart]ボタンをクリック。
  • Apple Store に移動するので、ライセンスを購入する。
    購入手続きが完了すると購入完了のメールが届く。

認証(アクティベーション)

購入完了のメールの後に[ Apple Developer Program Activation Code ] と言うメールが届くので、メール内にあるアクティベーションのリンクをクリックする。
※私の場合は1h後くらいにメールが届いた。

しかし、We are unable to activate your Apple Developer Program membership.というエラーメッセージが表示されてしまって、アクティベーションに失敗する。

これはよくあることのようで、私もApple IDに登録している個人名を日本語で登録していたのでこのようになってしまったようだ。
この個人名はApple Developerページへ変更してもどうしても変更できない箇所であった。

サポートからメール送ってくださいと記載あるので、How to Contact Us – Apple Developer.から

Subject
iOS Developer Program Enrollment Status
Your region
Japan
Request Details
日本語でアクティベーションできない旨と、名前をローマ字表記に修正してくださいと記載(Enrollment IDも記載)

として、メールを送った。

翌日には、

Apple Developer Program のメンバーシップをご購入いただく場合、請求先情報と iOS Developer Program 登録情報を比較するシステムを使用しております。最近いただいたご購入の情報には、購入プロセスが完了せず、保留状態になっておりました。

確認させていただいたところ、保留状態を解除いたしました。お受け取りになった Activation Code メールを再度ご確認いただき、リンクをクリックしたいただくようお願いいたします。アカウントを認証出来るはずです。

というメールが届いていたので、再度アクティベーション行ったところ正常に認証されました。
また、個人名についてもローマ字表記に修正されていました。

jQuery Mobile で iPhone 用のHTML作成

mod_rewiteでPC版、iPhone版ディレクトリを分ける

今回はトップページだけの手抜きiPhone対応(というか、ただやってみたかっただけ)なので、iPhoneの場合は/iphone/にリダイレクトするようにする。

.htaccess

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} iPhone
RewriteRule ^$ /iphone/ [R=301,L]

HTTPヘッダーのユーザエージェントで判定。

jQuery Mobile用のマークアップを追加

1時間で携帯サイトをスマートフォン対応にする方法とかjQuery Mobile デモのページを参考に変更。

done.