カテゴリー別アーカイブ: iPhone/iPadアプリ

iOSアプリのアップデート

agreementの承認とかを放置していたら、ストアから削除された自作アプリ。
重い腰を上げて、アップデートを試みました。

ビルドが通るまでの軌跡はこちら。
http://blog.as-toybox.com/archives/647

ようやく新しいバージョンを審査へ提出します。

まず、itunes Connetで新しいバージョンを作成します。

itunes_connect

itunes_connect

その後、連絡先情報などを更新して、提出準備完了です。

その前に実機確認しなきゃと思ったら、またエラーです。

Could not locate device support files.
This iPhone 6 Plus is running 10.1(14B72), which may not be supported by this version of Xcode.

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88_2016_10_30_18_48

Xcodeを最新版にアップデートする必要があるようです。

アップデートした再度起動したら、次はこれ。

Development cannot be enabled while your device is locked.
Please unlock your device and reattach.

flagraisingappdelegate_m

iPhoneを一旦外す

設定->一般->リセット->位置情報とプライバシーをリセット

つなぎ直す

信頼

今度は、これ、、、

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88_2016_10_30_19_00

よくみたら何か処理をしている。待たないと駄目か。

flagraisingappdelegate_m

デバイスをdeveloper portalに登録しないといけないよ、と言われたので、Regsiter Device

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88_2016_10_30_19_05

はい、つぎ。

App installation faild
This application’s application-identifier entitilement does not match that of the installed application.
These values must match for an upgrade to be allowed.

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88_2016_10_30_19_07

iPhoneに古いバージョンが入っていたからですね。
実機から消して、再実行すればOK。

実機の動作確認OK!

Xcodeからアプリをアップします。

メニュー → Product → Scheme → Edit Scheme

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88_2016_10_30_19_12

Build Configration を Release に変更

OKボタンを押す。

XcodeでDeviceを「Generic iOS Device」に設定

flagraisingappdelegate_m

メニュー → product → Archive

ビルドが完了すると Organizer が自動で開き Archive したアプリが表示される

organizer

Validate をクリック

使用するアカウントを聞かれる。

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88_2016_10_30_19_16

Provisioning Profile を選択し、Validate ボタンをクリック

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88_2016_10_30_20_13

エラー発生。

iTunes Store operation faild…
Missing required icon file. The bundle does not caontain an app icon for iPhone/iPod Touch of exactly ‘120×120′ pixels, in .png format for iOS versions >= 7.0.

organizer

必要なサイズのアイコンが含まれてないとのこと。

TARGETS->General->App Icons and Launch ImagesのところのUse Asset Catalogをクリックすると、Resourcesの中にImages.xcassetsが追加されます。

sc_sp_01_png__png_%e7%94%bb%e5%83%8f__1392x826_px__-_%e8%a1%a8%e7%a4%ba%e5%80%8d%e7%8e%87__94__

Images.xcassetsをクリックすると、

images_xcassets

のような画面になるので、これにちょうどいい画像を登録していけばいいようです。

images_xcassets

ドラッグ・アンド・ドロップですべての場所に画像を登録します。

では、再度ビルド!
また、エラーになってしまいました。

The app icon set named “App Icon” did not have any applicable content.

images_xcassets

アイコンのサイズが違うと、、、
横着して、同じファイルをすべての場所に当てはめたのがだめだったようです。

真面目に正しく、x2用 120×120、x3用 180×180で作り直して設定。

今度はビルド成功。

では、再度、Archive。
Organizerが開いたら、Validate…。
Summaryがでたら、Validateボタン。

成功!!

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88_2016_10_30_21_07

Doneを押す。

Upload to App Store…をクリック。

organizer

また、アカウントを聞かれるので、選択して、Choose 。

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88_2016_10_30_21_08

Send xxxxxxx to Apple:が表示されたら、Uploadボタン

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88_2016_10_30_21_09

なんでー

Archive upload failed due to he issues listed below.
This action could not be completed. Try again.(-22432)

organizer

たまたま失敗しただけのような気がするので、もう一度Upload。

今度は上手くいったと思ったのに、、、

WARNING ITMS-90076: “Potential Loss of Keychain Access. The previous version of software has an application-identifier value of [‘xxxxxxx’] and the new version of software being submitted has an application identifier of [‘yyyyyyy’]. This will result in a loss of keychain access.”

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88_2016_10_30_21_25

プロビジョニングファイルファイルを作り直しかな、、、

ちょっと設定を変えて、Archiveし直してみると、もうそのバージョンはアップロードされてるよと言う。

おや?っと思って、iTunes connectを見てみる。

itunes_connect_%e3%82%a2%e3%83%83%e3%83%95%e3%82%9a%e3%83%ad%e3%83%bc%e3%83%88%e3%82%99%e3%82%92%e9%81%b8%e6%8a%9e_-_google_%e6%a4%9c%e7%b4%a2

ここの表示が変わっていないので、アップロードされていないものと思ったら、クリックすると、アップロードされたアプリが表示された。
選択して、保存する。

そして「審査へ提出」ボタンをクリック!

画像が足りないとか、年齢制限のところでエラーになったので、設定し直し。

再度「審査へ提出」!!

・輸出コンプライアンス
暗号化機能は変えてないのでいいえ
・コンテンツ配信権
アクセスしないのでいいえ
・Advertising Identifer(通称:IDFA)
広告は表示しないのでいいえ
※たぶんこれでいいはず、、、

「送信」!!

審査待ちになりました!

パチパチパチパチ

久しぶりにXcodeでiOSプロジェクトを開いたらいろいろエラーだった件

ひさしぶりに開いたiOSアップのプロジェクトがビルドできなくなってた。

The file “/Users/as……dist.plist” could not be opend.
Verify the value of the CODE_SIGN_ENTITLEMENTS build setting for target “xxxxx” and build configuration “Debug” is correct and that the file exists on disk.

flagraising_xcodeproj

ファイルの場所を移動したから、provisioning profileが読めなくなったか?

Build Settingのsigningにパスを指定するところがあったので、現状に合わせて直す。

flagraising_xcodeproj

すると次はこれ。

XXXXX requires a provisioning profile.
Select a provision profile for the “Debug” build configuration in the project editor.

flagraising_xcodeproj

どうも単純な話では無さそう。
Google先生に聞くと、Automatically manage signingにチェックを入れるといいらしい。
Apple Accountへのログインを求められるので、ログインする。
チームを選んだ結果がこれ。

The ‘Apple Developer Program License Agreement’ has been updated. In order to access certain membership resources, you must accpet the latest license agreemnt.

No profiles for ‘xxxxx’ were found
Xcode couldn’t find a provisioning profile matching ‘xxxx’

flagraising_xcodeproj

一つ目は、Apple Developer Program で何かAcceptが必要そう。
iTunes Connect にログインするとこれがでた。

itunes_connect

続けると押すと、さらに警告が。

itunes_connect

まあ、今回の作業のきっかけは、先日販売数を見ようと思ってiTunes Connectを開いたら、アプリが削除されたというメッセージを見たから。
さきは長そうだ。
まずは、payment関係を片付けないといけないらしい。

Agreements, Tax, and Bankingのページで、Requestボタンが有効になってたので、これをクリックして、Agreemntを承認する。
あいかわらず、このサイトはわかりにくい、、、
とりあえず、警告は無くなった。

Xcodeに戻ってみると、ビルドはできるようになった。

しかし、
The ‘Apple Developer Program License Agreement’ has been updated. In order to access certain membership resources, you must accpet the latest license agreemnt.
のエラーは残ったまま。

一旦終了して、開き直す。

flagraising_xcodeproj

直った!

ビルドも成功するもののエミュレーターが起動して、アプリが立ち上がるとエラーで止まってしまう。
ソースコードの修正も必要そうだ、、、

Method possibly missing a [super awakeFromNib] call
というwarningは、
– (void)awakeFromNib
{
[super awakeFromNib];
}

のように、[super awakeFromNib];を追加すれば解決。

main_m

このエラーの原因がわからない。

いろいろ調べているとOutletの接続もれらしい。

this class is not key value coding-compliant for the key view.
というエラーってわかりにくいけど、viewって変数の接続がうまくいっていないらしい。
一旦削除すると上記exceptionは発生しなくなる。
しかし、いろいろやっているうちに、こんどはviewがconnectされてないよというエラーが発生する。
再度つなぎ直すと直った。
おそらく最初の接続がおかしくなっていたので、一旦削除して接続し直しで、直ったらしい。

シミュレーターが起動しても真っ黒な原因は、

flagraising_xcodeproj

ここ↑の選択を間違えていた。

Terminating app due to uncaught exception ‘NSInternalInconsistencyException’, reason: ‘Application windows are expected to have a root view controller at the end of application launch’

の場合は、

AppDelegate.m
– (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

// [window addSubview:viewController.view];
// ⇂
[window setRootViewController:viewController];

}

ようやく、シミュレーターでアプリが起動した!!
明日中に、再申請までいけるかな?
さて、もう寝ないと。

AVFoundation.frameworkを使用してカメラ機能を利用しようとしたらBuild Failed

iPhoneのカメラ機能を使ったアプリをXcodeで開発中.

  "_kCVPixelBufferPixelFormatTypeKey", referenced from:
      -[FirstViewController viewDidLoad] in FirstViewController.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

というエラーが発生して困ってしまった
いろいろ調べていくと、CoreVideo.frameworkが足りないらしい.
プロジェクトを選択して、SummaryタブのLinked Frameworks and Librariesで、CoreVideo.frameworkを追加して、
ビルドし直すと解消.

iPhone/iPadアプリのiOS5対応

最初のiPhoneアプリをリリースして、1年半。放置していましたが、サポートサイトに「iOS5で動かないよ」という書き込みが。
最新のXCodeでコンパイルし直せばいいんじゃないのと、mac miniを立ち上げて、最新版のXCodeをインストールしようとすると、「Lionに上げろ」という。しょうが無い確かオンラインでダウンロードしてアップデートできたはずと、インストールしようとすると、「Core 2 Duo以上じゃないとだめ」といういう。残念!!うちのmac mini は、Core Soloでした。
数千円の売上しか上がってないのに、数万かけて新環境をつくるのもなんだかなあと思っていたら、知り合いからMacBookを借りることができたので、調査を始めました。

Lionまでインストールされていた状態だったので、XCodeの最新版をインストール。
プロジェクトを取り込んでみると、Warningがいくつかでていたので、それはちゃちゃっと直す。
さて、iOS5エミュレーターで実行。
だめでした。。。

EXC_BAD_ACCESSとか言っているので、何かメモリアクセスの部分でエラーになっているようです。
しかし、デバッガがとまった場所は、appleのライブラリ内なので、自分のコードのどこが影響しているのかわかりません。
Googleでいろいろ検索したところ、以下のサイトにたどり着きました。

http://program.station.ez-net.jp/special/xcode/xcode4/leak-check.asp

簡単に設定を記すと、
(1)アップルメニューのProductからEdit Scheme…を選択。
(2) “Run” スキームの “Diagnostics” タブの中から “Enable Zombie Objects” を選択。
で、エラーの原因となっているところがわかるらしい。
では、実行!!
おお!!確かに、自分のコード内でひっかかりました。

さて、ここからが本題。
ポインタ変数にアクセスしているところで、エラーになっている様子。
さて、ここでもいろいろググります。
で、たどり着いたサイトがここ。

http://www.zero4racer.com/blog/88

「2.オブジェクト型を生成する時には、必ずプロパティを作成する」の項目が該当していたよう。
ここで記載されているようにポインタ変数を、@property,@synthesize宣言した上、アクセスするときは、self.xxxxxのようにアクセスすとことが必要ということらしい。

さて、上記の修正を施した後、実行。
さて、どうか。。。。うまくいった!
やった~

iOS5になって、メモリ管理が厳しくなったようですね。

あとは、リリースするだけと思ったが、そこにも難関が。。。
続きは次のエントリで。

iPhoneアプリ AppStore申請まとめ

(1)事前に準備するもの
・AppStore用画像ファイル(512×512)
・サポートサイト
・アプリの名称および説明文
・アプリのスクリーンショット
→オーガナイザでキャプチャが取れます。(Default.pngとして保存されます。)余分な枠が付いてしまうので、画像編集ソフトで切り抜きました。サイズが決まっているので、それに合わせないとアップロード時に怒られます。

(2)配布用AppID作成
iOS Provisioning Portalから、App IDs→New App IDで、新しく作成する。
Description: アプリの説明
Bundle Seed ID(App ID Prefix): Generate Newのまま
Bundle Identifer (App ID Suffix): アプリのID。他とぶつからないようにドメインなどを使用する。

(3)配布用Provisioningファイルの作成
iOS Provisioning Portalから、Distribution→New Profileを開く。
Distribution Method: App Storeのまま
Profile Name: 適当に
Distribution Certificate: 自分の情報が出ているはず。変更できない。
App ID: (2)で作ったApp IDを選択

直後は、StatusがPadingになっているので、何度かリロードするうちに、Activeになる。

(4)配布用Provisioningファイルの登録
(3)の画面で作成したProvisioningファイルをダウンロード。
ダウンロードしたファイルをダブルクリックすると自動的にオーガナイザが起動し、登録される。

(5)プロジェクトの設定
プロジェクトを選択し、情報を見るで設定を開く。
コード署名IDで、(3)で作ったファイルを選択する。
(プロジェクト名)-Info.plistファイルを開き、Bundle identifierを、(2)で作ったIDと同じく設定する。

(6)「iTunes Connect」にログインする

(7)契約情報の登録
※これを先にやらないと、アプリを有料で登録できません。私は、アプリの登録を先にしてしまってから気付きました。
契約情報と銀行の情報を登録します。
トップ画面上のContracts, Tax, and Bankingのリンクをクリック。

(8)Contracts Tax, and Banking画面
Contract Region = All、Contract Type=iOS Paid ApplicationのRequestボタンを押します。

(9)Add New Legal Entity画面
すでに内容は入力されていました。iOS Dev Centerに登録したときの情報が表示されているのでしょう。
変更してsubmitし直せと出ています。
新宿区が抜けていたので、追記して、Save。

(10)Review Agreement画面
言語をJapaneseにすると日本語で表示されます。
なんとか流し読みしましたが、ちゃんと読むのはきついなあ。。。
Agreeのチェックを入れて、Submit。

Thank youの画面になるので、Done。
Contracts Tax, and Banking画面に戻ります。
Contract Region = All、Contract Type=iOS Paid Applicationが「Contracts In Processに移動しているはずです。

(11)Contact Information 連絡先の登録
Contact InfoのSet Upをクリック。
5種類登録しないといけないが、最初は誰も登録されていないので、選択できない。
Create New Personで一人追加して、みんな同じ人を選択して、Submit。

(12)Bank Information 銀行情報の登録
Bank InfoのSet Upをクリック。
Banking Informationで、Choose Bank Accountが空。
Add Bank Accountをクリック。

Bank Countryで、Japanを選択。
全銀コードを入力するようになっていますが、下のフォームで検索できます。
銀行名や都道府県をローマ字で入力するなり、郵便番号をを入力するなりして、一つに絞り込めれば、自動的に全銀コードが入力されます。
確認画面が表示されるので、Next。

Bank Account Number:口座番号
Account Holder Name: 口座名義
→個人の名義で登録しました。本当は会社の口座を使いたかったのですが、名義のローマ字入力方法がわからなかったので。。。知っている方教えてください。。。
Bank Account Type: 口座種別
Bank Account Currency: JPYにしました。
と入力して、Nextをクリック。

確認画面が表示されます。
「I certify that the information above is ….」のチェックを入れて、Save。

Banking Informationの最初の画面に戻るので、追加した銀行を選んで、Save。

(13)Tax Information 税金情報の登録
Tax InfoのSet Upをクリック。
“U.S. Tax Forms”のSet up をクリック。(たぶん、これでよいはず。)

「Are you a U.S. citizen, U.S. resident, U.S. partnership, or U.S. corporation?」と聞かれる。→No

「Do you have any U.S. Business Activities?」→No

「Certificate of Foreign Status of Beneficial Owner」の入力。
すでに入力されている項目もある。Type of Beneficial OwnerとTitleだけ入力して、
「I declare that the individual or organization named i….」のチェックボックスを入れて、Confirm→Submit。

(14)Contracts, Tax, and Bankingの入力完了。
Contract Region = All、Contract Type=iOS Paid ApplicationのStatusが、「Processing」に変わったので、Done。

(15)New Application画面の入力
「Manage Your Application」→「Add New Application」とすすむ。
Primary Language:言語を選択
Company Name:作者名を入力

(16)App Information画面の入力
App Name:アプリケーションの名前
SKU Number:製品番号らしい。私は、App IDを入れました。
Bundle ID:登録済みのアップIDから選択

(17)Rights and Pricing画面の入力
Availability Date: 今日の日付がデフォルトで表示されているはず。そのままにしました。
Price Tier: これで金額が決まるようです。今回は、115円のつもりなので、「Tier 1」を選択しました。
Discount for Education Institutions: 教育機関向けの割引だそうです。115円で割引されても困るので、今回はチェックを外しました。
※この時は、気付かなかったのですが、契約情報や銀行情報を登録していなかったので、アラートが出ていたはずなのですが、気付かずに進めたので、Freeで登録されてしまっていました。

Price Tier Effective Date: Now
Price Tier End Date: None
にして、Save。

ここで、
「Your contract for this price tier is being reviewed and is not yet active. Your app cannot be available on the App Store until your contract becomes active.」という警告がでてしまいました。
契約プロセスが完了していないのかなと想像。

(18)Version Information画面の入力
<Metadata>
Version Number: 今回は、初回なので1.0にしました。
Description: 適当に。
Primary Category: 今回は、Entertainmentにしました。
Secondary Category: 選択せず。
Keyword: カンマ区切りで複数入力
Copyright: 「2010 〜 Inc」のように入力するようです。
Contact Email Address: 連絡先のメールアドレス
Support URL: サポートサイトのURL
App URL: 省略
Review Notes: 省略
<Rating>
全部Noneにしました。
<EULA>
エンドユーザー向け使用許諾契約を独自に作る場合に必要らしい。今回は、無視。
<Images>
Large 512×512 Icon: AppStoreに載るときの画像。サイズ指定があるので、合わせる。
iPhone and iPod touch Screenshots:スクリーンショット画像。サイズ指定があるので、合わせる。
iPad Screenshots: iPad専用画面はないので、未選択。

この後、確認画面になるので、確認して、Done。

(19)アプリのアップロード
Manage Your Appsに、今登録したアプリが表示されていると思います。それをクリック。
アプリの詳細画面になります。VersionsのCurrent Version のView Detailsをクリック。
該当バージョンの詳細画面になります。右上のReady to Upload Binaryをクリック。

(20)Export Compliance画面
Export Compliance(輸出コンプライアンス)とのこと。
暗号化処理を含んでいるかどうかの確認らしい。今回は、No。

アプリケーションのアップロードについての説明書きの画面が表示される。→Continue

※契約や銀行の情報の登録をせずにすすめていると、PricingがFreeになってしまいます。アラートが出ていたはずです。私は見逃していたので、Freeで登録されてしましました。
その後、契約情報や銀行情報を登録して、再度Pricingを選ぶと有料アプリが選べるようになりました。

しかし、現時点では、
「Your contract for this price tier is being reviewed and is not yet active. Your app cannot be available on the App Store until your contract becomes active.」
という警告がでて、Pricingが登録できませんでした。Statusが「Processing」なので、しばらく待ってみることにします。
→30分もしないうちに、Statusが変わってようで、「Contracts In Effect」に移りました。

(21)アプリのアップロード
とりあえず、アプリのアップロードだけ進めることにしました。
現時点では、オーガナイザーからしかアップロードができないようです。
XCodeで通常の「ビルドと実行」ではなくて、「ビルド」→「Build and Archive」でビルドすると、オーガナイザーのArchived Applicationsにアプリが表示されます。

表示されたアプリケーションをダブルクリックし、日付のところを選択すると、下のSharingエリアの「Submit Application to iTunes Connect」のボタンが押せるようになります。
クリックすると、IDとパスワードを聞かれるので、iOS Dev Centerのアカウントを入れます。
Identityを聞かれるので、App Store配布用のPropositioningを選択して、Submit to iTunse Connect。
しばらくすると、「Submitされたよ」というダイアログが表示されます。
この時点で、iTunes Connectのステータスが、「Waiting For Upload」から「Upload Received」に変わりました。
その後、すぐにステータスが、「Waiting For Review」に変わりました。

で、再度Pricingの設定を試みていたら、警告が無くなったのですが、登録は完了できないままです。
「The following error(s) occurred:
No changes have been made. Please make your changes or click “Cancel”」
というエラーが出ます。
Reviewが終わらないと登録出来ないんでしょうか。。。