<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Mobile Dev. (iPhone + Objcetive C)</title>
    <link>http://labs.karappo.net/iphone/</link>
    <description>iPhone Tips 集</description>
    <!-- optional tags -->
    <language>ja</language>           <!-- valid langugae goes here -->
    <generator>Nucleus CMS v3.71</generator>
    <copyright>ｩ</copyright>             <!-- Copyright notice -->
    <category>Weblog</category>
    <docs>http://backend.userland.com/rss</docs>
    <image>
      <url>http://labs.karappo.net/iphone//nucleus/nucleus2.gif</url>
      <title>Mobile Dev. (iPhone + Objcetive C)</title>
      <link>http://labs.karappo.net/iphone/</link>
    </image>
    <item>
 <title><![CDATA[iOS端末からYouTubeへ動画投稿の実装]]></title>
 <link>http://labs.karappo.net/iphone/index.php?itemid=297</link>
<description><![CDATA[iOS端末からYouTubeへ映像をアップロードするものを実装しました。<br />
<br />
<br />
情報が少なく苦戦したので、メモを残しておきます。<br />
参考にさせて頂いたサイト : <br />
<a href="http://www.hirano-dept.com/blog/2010/08/iphone-gdata-objectivec-client-youtube.html" target="_blank">iPhone gdata-objectivec-client でYouTubeへ動画をアップ / 袖触れ合うも多少の縁</a><br />
<a href="http://d.hatena.ne.jp/J_ogawa/20111121/1321863719" target="_blank">Google Data APIs Objective-C Client Library をXcode4で使う為の準備をした / エンジニアリングにはほど遠い</a><br />
<br />
※GoogleとYouTubeアカウントそれぞれが必要になります。<br />
<br />
<br />
1)まずGoogleDataAPIの<a href="http://code.google.com/p/gdata-objectivec-client/" target="_blank">gdata-objectivec-client</a>をダウンロードします。<br />
Terminalから<br />
<pre class="code">svn checkout http://gdata-objectivec-client.googlecode.com/svn/trunk/ gdata-objectivec-client-read-only</pre>をします。<br />
・DLしたgdata-objectivec-clientのGData.xcodeprojファイルを<br />
Finderから、自分のXcodeプロジェクトにドラッグ&ドロップでコピー<br />
・コピーされたGData.xcodeprojを展開し、CommonフォルダとYouTubeフォルダをドラッグ&ドロップでGData.xcodeprojから外（自分のプロジェクト内）に移動します。（ここでGData.xcodeprojを自分のプロジェクト内からRemove Reference Onlyで削除）<br />
・コピーしたフォルダの中身が黒色ならばコピー成功<br />
<br />
<br />
2)Xcodeの自分のプロジェクト→TARGETS→Build Phases→Link Binary With Librariesの<br />
+ボタンを押して以下のライブラリを追加します。<br />
<br />
<pre class="code">SystemConfiguration.framework<br />
Security.framework<br />
libxml2.dylib</pre>※【ARC使用時】Xcodeの自分のプロジェクト→TARGETS→Build Phases→Compile Sources内の<br />
追加されたファイルのCompiler Flagsに<br />
<pre class="code">-fno-objc-arc</pre>を追加し、ARCを無効にします。<br />
（現時点のライブラリはARC未対応なバージョンのため）<br />
<br />
<br />
3)Xcodeの自分のプロジェクト→TARGETS→Build Settings内の編集<br />
・Heder Search Pathsに<br />
<br />
<pre class="code">/usr/include/libxml2</pre>を追加<br />
<br />
・C Language Dialectに<br />
<pre class="code">C99 [-std=c99]</pre>を選択<br />
<br />
・Other C Flags/Debugに<br />
<pre class="code">-DDEBUG=1</pre>を追加<br />
<br />
<br />
4)ここで一度ビルドし、エラーが出なければ設定完了。<br />
<br />
<br />
5)YouTubeAPIのDeveloper Key, Client ID, Client Secret IDの取得<br />
参考サイト：<a href="http://ryushimiz.blogspot.com/2010/02/youtube-api.html" target="_blank">YouTube API のデベロッパーキーを取得 / WEBエンジニアの技術調査ブログ</a><br />
・上のサイトを参考にそれぞれ取得し、控えておく。<br />
<br />
<br />
6)自分のXcodeプロジェクトに戻り、<br />
ユーザーのアカウントログイン部分を実装します。<br />
参考にしたサンプル：<a href="http://code.google.com/p/gtm-oauth2/" target="_blank">gtm-oath2</a><br />
・ほぼサンプルの通りですが、以下のように実装しました。<br />
<br />
<pre class="code">- (void)signOut<br />
{<br />
    if ([self.auth_.serviceProvider isEqual:kGTMOAuth2ServiceProviderGoogle]) {<br />
        // remove the token from Google's servers<br />
        [GTMOAuth2ViewControllerTouch revokeTokenForGoogleAuthentication:self.auth_];<br />
    }<br />
    <br />
    // remove the stored google authentication from the keychain, if any<br />
    [GTMOAuth2ViewControllerTouch removeAuthFromKeychainForName:kKeychainItemName];<br />
    <br />
    self.auth_ = nil;<br />
}<br />
<br />
- (void)signInToGoogle<br />
{<br />
    [self signOut];<br />
    <br />
    NSString *keychainItemName = nil;<br />
    if ([self shouldSaveInKeychain]) {<br />
        keychainItemName = kKeychainItemName;<br />
    }<br />
    <br />
    NSString *scope = @"https://www.googleapis.com/auth/plus.me";<br />
    NSString *clientID = CLIENT_ID; // 先ほど取得したClient ID<br />
    NSString *clientSecret = CLIENT_SECRET; // 先ほど取得したClient Secret ID<br />
    <br />
    if ([clientID length] == 0 || [clientSecret length] == 0) {<br />
        NSString *msg = @"The sample code requires a valid client ID and client secret to sign in.";<br />
        NSLog(@"%@", msg);<br />
        return;<br />
    }<br />
    <br />
    SEL finishedSel = @selector(viewController:finishedWithAuth:error:);<br />
    GTMOAuth2ViewControllerTouch *viewController;<br />
    viewController = [GTMOAuth2ViewControllerTouch controllerWithScope:scope<br />
                                                              clientID:clientID<br />
                                                          clientSecret:clientSecret<br />
                                                      keychainItemName:keychainItemName<br />
                                                              delegate:self<br />
                                                      finishedSelector:finishedSel];<br />
    <br />
    <br />
    NSDictionary *params = [NSDictionary dictionaryWithObject:@"en"<br />
                                                       forKey:@"hl"];<br />
    viewController.signIn.additionalAuthorizationParameters = params;<br />
    <br />
    NSString *html = @"<html><body bgcolor=silver><div align=center>Loading sign-in page...</div></body></html>";<br />
    viewController.initialHTMLString = html;<br />
    <br />
    [[self navigationController] pushViewController:viewController animated:YES];<br />
}</pre><br />
<br />
[self signInToGoogle];のように呼び出せばWebView上にGoogleアカウントのログイン画面が現れます。<br />
ログイン情報を入力すると、作成したAPI Accessの認証画面が開き、認証をするとログインが成功となります。<br />
<br />
<br />
7)gdata-objectivec-client内のExample/YouTubeSampleを参考にアップロード部分の実装<br />
・手順<br />
1：アップロードする映像の準備<br />
２：動画のタイトルや説明、カテゴリー、キーワードなどを設定<br />
３：動画のタイプを指定し、それぞれを合わせる<br />
２：GDataServieTicketでコールバックさせるよう設定をし、アップロード関数に投げる<br />
<br />
<br />
<pre class="code">- (void)uploadVideoFile<br />
{<br />
    if ([self isSignedIn]) {<br />
        <br />
        NSURL *url = [GDataServiceGoogleYouTube youTubeUploadURLForUserID:@"default"];<br />
        <br />
        NSString *path = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"mov"];<br />
        NSData *data = [NSData dataWithContentsOfMappedFile:path];<br />
        NSString *fileName = [path lastPathComponent];NSLog(@"fileName : %@", fileName);<br />
        <br />
        GDataMediaTitle *title = [GDataMediaTitle textConstructWithString:movieTitleStr];<br />
        GDataMediaCategory *category = [GDataMediaCategory mediaCategoryWithString:movieCategoryStr]; <br />
        [category setScheme:kGDataSchemeYouTubeCategory];<br />
        NSArray *categoryArray = [[NSArray alloc] initWithObjects:category, nil];<br />
        <br />
        GDataMediaDescription *description = [GDataMediaDescription textConstructWithString:movieDescriptionStr];<br />
        NSArray *keyArray = [[NSArray alloc] initWithObjects:movieKeywordStr, nil];<br />
        GDataMediaKeywords *keywords = [GDataMediaKeywords keywordsWithStrings:keyArray];<br />
        <br />
        BOOL isPrivate = YES;<br />
        <br />
        <br />
        GDataServiceGoogleYouTube *service = [self youTubeService];<br />
        <br />
        GDataYouTubeMediaGroup *mediaGroup = [GDataYouTubeMediaGroup mediaGroup];<br />
        [mediaGroup setMediaTitle:title];<br />
        [mediaGroup setMediaDescription:description];<br />
        [mediaGroup setMediaCategories:categoryArray];<br />
        [mediaGroup setMediaKeywords:keywords];<br />
        [mediaGroup setIsPrivate:isPrivate];<br />
        <br />
        NSString *mimeType = [GDataUtilities MIMETypeForFileAtPath:path<br />
                                                   defaultMIMEType:@"video/mov"];<br />
        <br />
        GDataEntryYouTubeUpload *entry;<br />
        entry = [GDataEntryYouTubeUpload uploadEntryWithMediaGroup:mediaGroup<br />
                                                              data:data<br />
                                                          MIMEType:mimeType<br />
                                                              slug:fileName];<br />
        <br />
        SEL progressSel = @selector(ticket:hasDeliveredByteCount:ofTotalByteCount:);<br />
        [service setServiceUploadProgressSelector:progressSel];<br />
        <br />
        GDataServiceTicket *ticket;<br />
        ticket = [service fetchEntryByInsertingEntry:entry<br />
                                          forFeedURL:url<br />
                                            delegate:self<br />
                                   didFinishSelector:@selector(uploadTicket:finishedWithEntry:error:)];<br />
        <br />
        [self setUploadTicket:ticket];<br />
        <br />
        <br />
        GTMHTTPUploadFetcher *uploadFetcher = (GTMHTTPUploadFetcher *)[ticket objectFetcher];<br />
        [uploadFetcher setLocationChangeBlock:^(NSURL *url) {<br />
            [self setMUploadLocationURL:url];<br />
            <br />
        }];<br />
    }<br />
}</pre><br />
<br />
あとは、コールバックの関数でアップロードの成功/失敗を確認させます。<br />
<br />
<pre class="code"><br />
- (void)uploadTicket:(GDataServiceTicket *)ticket finishedWithEntry:(GDataEntryYouTubeVideo *)videoEntry error:(NSError *)error<br />
{<br />
    NSLog(@"upload callbackkkk");<br />
    NSLog(@"userData : %@", videoEntry.userData);<br />
    <br />
    if (error == nil) {<br />
        <br />
        // 成功<br />
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"アップロード成功"<br />
                                                        message:[NSString stringWithFormat:@"%@ がアップロードされました", [[videoEntry title] stringValue]] <br />
                                                       delegate:nil<br />
                                              cancelButtonTitle:@"OK"<br />
                                              otherButtonTitles:nil];<br />
        [alert show];<br />
    } else {<br />
        NSLog(@"エラー\n\n%@\n\n", [error description]);<br />
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"エラー"<br />
                                                        message:[NSString stringWithFormat:@"エラー : %@", [error description]]<br />
                                                       delegate:nil<br />
                                              cancelButtonTitle:@"OK"<br />
                                              otherButtonTitles:nil];<br />
        [alert show];<br />
    }<br />
    [mProgressView setProgress:0.0];<br />
    [self setUploadTicket:nil];<br />
}</pre><br />
<br />
このような感じでアップロードが出来ました。<br />
<br />
なかなか情報がなかったのと、YouTubeAPIについて調べが足らなかったのか<br />
アップロードする映像のカテゴリーの内容を自由記述にしていたため<br />
下記のようなエラーに長いこと悩まされました。。<br />
<br />
<pre class="code">Error Domain=com.google.HTTPStatus Code=400 "The operation couldn’t be completed.</pre><br />
<br />
結局はYouTube上にある正規なカテゴリー（AnimalsとかMusicとか）<br />
を入れて解決する事ができました。]]></description>
 <category>Objective-C</category>
<comments>http://labs.karappo.net/iphone/index.php?itemid=297</comments>
 <pubDate>Sat, 11 Feb 2012 20:34:03 +0900</pubDate>

</item><item>
 <title><![CDATA[2台目以降のMacで実機テストをする方法]]></title>
 <link>http://labs.karappo.net/iphone/index.php?itemid=274</link>
<description><![CDATA[2台目以降のMacで実機テストできるように証明書などの設定をしていて、表題のエラーが出てきてハマってしまったので、その解決方法を書いておきます。<br />
<br />
ちなみに、オーガナイザーで出たエラーはこんなものでした。<br />
xcode could not find a valid private key / certificate pair for this profile in your keychain.<br />
プロビジョニングファイルのStatusに Valid signing identity not found<br />
<br />
<a href="http://labs.karappo.net/media/2/20110429-1sc.png">エラー画面</a><br />
<br />
<br />
1台目の認証の仕方は、<a href="http://bit.ly/iJhVLX">いろんなサイト</a>で紹介されていますが、2台目のことはあまり書かれていない。<br />
<br />
結論を先に書くと、１つのApple IDで、2台目以降のパソコンで Xcodeの実機確認のための認証をするためには、１台目で作った証明書を使う必要がある（っぽい）ので、１台目のMacの証明書を書き出して、それを2台目にインストールする必要があるのです。<br />
<br />
そのため、多くのサイトで紹介されているような、「キーチェーンアクセス」>「証明書アシスタント」>「認証局に証明書を要求」から証明書要求を書き出す作業や、その証明書要求ファイルをADCにアップロードする作業は必要ありません。（１台目で証明書は既に作成しているため）<br />
<br />
このステップの代わりに必要なのは、1台目のキーチェーンアクセスに入っている証明書要求の秘密鍵（Apple IDの「名 姓」というファイル名のもの）を書き出して、書き出したファイルを2台目にインストールする作業です。<br />
<br />
<br />
以下では、書き出す作業の流れを説明しています。<br />
<br />
1)<br />
1台目のMacでキーチェーンアクセスを立ち上げ、左の「分類」ペインから「鍵」を選択、証明書要求の秘密鍵のファイル（選択すると、秘密鍵,RSA,2048-bitなどと出る）を右クリックして、"（Apple IDの「名 姓」）"を書き出すというメニューを選択します。<br />
<br />
<a href="http://labs.karappo.net/media/2/20110429-kakidashi1.png">画面1</a><br />
<br />
<br />
2)<br />
フォーマットは、「個人情報交換(.p12)」を選択、ファイル名は何でもOK。「保存」を押します。<br />
<br />
<a href="http://labs.karappo.net/media/2/20110429-kakidashi2.png">画面2</a><br />
<br />
<br />
パスワードの設定を求められますが、何も入力しなくてもOKです。セキュリティ的に何か設定しておいた方が良いと思いますが、面倒な人は何も入力しないというのでいいと思います。「OK」ボタンを押すと、「.p12」のファイルが書き出されます。<br />
<br />
<a href="http://labs.karappo.net/media/2/20110429-kakidashi3.png"></a><br />
<br />
<br />
3)<br />
書き出した .p12 ファイルを、2台目のMacに送って、ダブルクリックをすれば、無事秘密鍵の複製が完了です。おそらくこの作業が終われば、上記のようなエラーは発生しなくなるかと思います。<br />
<br />
<a href="http://labs.karappo.net/media/2/20110429-ka4.png">４</a><br />
<br />
<br />
残りの、プロビジョニングファイルのインストールや、iPhone実機の登録方法などは、１台目のときと変わりません。<br />
<br />
これは私の仮説ですが、2台目以降の認証要求の鍵に１台目のものを使う必要があるのは、秘密鍵を生成するときに、ランダムに生成された鍵を利用しており、仮に2台目で新しい認証要求の鍵を作ったとしても、ADCに登録されている証明書に埋め込まれている１台目で生成した鍵と一致しないためだからかもしれません。<br />
<br />
解決に１日ぐらいかかったので、他の人のお役に立てれば嬉しいです。<br />
<br />
<br />
stack overflow のサイトで、<a href="http://stackoverflow.com/questions/5391786/xcode-iphone-profile-doesnt-match-any-valid-certificate-private-key-pair-in">似たようなエントリー</a>があり、<br />
The error "XCode could not find a valid private-key/certificate pair for this profile in your keychain." means you don't have the private key.<br />
Maybe because your Mac was reinstalled, maybe because this key was generated on another Mac. So to be able to use your certificates, you need to find this key and install it on the keychain.<br />
などと書いてあったので、そういうことかなと思いました。<br />
<br />
]]></description>
 <category>Xcode</category>
<comments>http://labs.karappo.net/iphone/index.php?itemid=274</comments>
 <pubDate>Fri, 29 Apr 2011 20:32:23 +0900</pubDate>

</item><item>
 <title><![CDATA[デバッグ時に、program received signal SIGKILLと出る。]]></title>
 <link>http://labs.karappo.net/iphone/index.php?itemid=272</link>
<description><![CDATA[XCodeで、デバッグ中のアプリを、ホームボタン２回押しで、アプリの左上にある「-」ボタンを押して終了した後、もう一度起動しようとすると、<br />
<br />
mainの関数の<br />
int retVal = UIApplicationMain(argc, argv, nil, nil);<br />
という行に<br />
Thread 1: program received signal "SIGKILL"<br />
と出ます。<br />
<br />
<a href="http://labs.karappo.net/media/2/20110425-sc04231.png">sc1</a><br />
<br />
<br />
すると、ホームボタンを押しても、画面が真っ暗なままになってしまい、操作がほとんど効かない状態になってしまいます。シミュレーターでも実機でも、同じ症状になり、復帰するには、実機の場合は電源ボタンを一度押してロック解除して元の画面に戻るか、シミュレーターの場合は、シミュレーターを終了して立ち上げ直したりする必要があります。<br />
<br />
いろいろ試して分かったのですが、この症状は、XCodeでRunして、デバッグ中のときだけ発生するようでした。そのため、XCodeで、Stopさえしてあれば、このようなことは起こらないと分かりました。<br />
<br />
<br />
最初、アプリを終了するときに必要な処理が十分に行われていないことが原因で、この問題が発生しているのかと思って、かなり悩んでいたのですが、簡単なことでホッとしました。]]></description>
 <category>General</category>
<comments>http://labs.karappo.net/iphone/index.php?itemid=272</comments>
 <pubDate>Mon, 25 Apr 2011 01:38:31 +0900</pubDate>

</item><item>
 <title><![CDATA[Developer Profileのインポートがうまくいかない]]></title>
 <link>http://labs.karappo.net/iphone/index.php?itemid=271</link>
<description><![CDATA[XcodeのOrganizer＞LIBRARY＞Developer Profileで確認できる開発者プロファイル情報は、Import/Exportに対応しているのですが、なぜかXcode4.0ではインポートが正常にできませんでした（パスフレーズが間違っています的なアラートが出る）。Xcode4.0でエクスポートしたファイルをXcode3.xでインポートすることは出来たのですが・・・。もう一度、Xcodeを再インストールしてやると正常にインポートできました（アンインストールの必要はなし）。]]></description>
 <category>Xcode</category>
<comments>http://labs.karappo.net/iphone/index.php?itemid=271</comments>
 <pubDate>Wed, 23 Mar 2011 09:50:35 +0900</pubDate>

</item><item>
 <title><![CDATA[アプリの申請とビルド]]></title>
 <link>http://labs.karappo.net/iphone/index.php?itemid=252</link>
<description><![CDATA[制作したアプリをApp StoreでリリースするにはiTunes Connectでアプリの審査を通過する必要があります。<br />
この手続きも一筋縄ではいかないものだったりします。<br />
今回は無料アプリの申請をしてみたのでメモしておきます。<br />
有料の場合は登録の際に税金の手続きやいろいろとまた更に時間がかかりそうです。<br />
<br />
制作したアプリをiTunes Connectで申請する手順は<br />
? : iTunes ConnectでLoginし、Manage Your Appをクリック<br />
<a href="http://labs.karappo.net/media/12/20101112-1112-1.png">null</a><br />
　ここでアプリの情報やスクリーンショットなどを登録します。<br />
　（ここはさほど難しくないので割愛します。）<br />
　各項目の記入を終えて、アプリがupload待ちの状態になった事を確認したら、Xcodeでアプリをビルドするための準備をします。<br />
<br />
? : iOS Provisioning Portalにいきます。<br />
　前回ここで実機テストをする際に、実機テスト用の認証キーを作成してキーチェインに登録する必要がありました。<br />
　今度は、配布用の認証キーを新たに作る必要があります。<br />
<br />
? : Certificates > Distribution で前回と同じように認証キーを作成 > ダウンロード > キーチェイン登録<br />
<br />
? : Provisioning > Distribution で同じように認証キーを作成 > ダウンロード > プロビジョニングを~/Library/MobileDevice/Provisioning Profilesにコピー<br />
<br />
? : Xcodeを起動し、左側の"グループとファイル"のプロジェクトファイルを右クリック >"情報を見る">"構成"タブへいきます。<br />
　ここで、"Release"を選択し下の"複製"ボタンをクリックして複製されたものの名称を変更します。(任意な名前)<br />
　名前を変えたら下の"ビルドが使用するコマンドライン"をいま作成したリストに切り替えます。<br />
<br />
? : "ビルド"タブを選択し、"構成"を上で作ったものを選択<br />
　すぐ下の設定の"コード署名"の"コード署名ID"内の"Any iOS Device"の右側を上の?で作った"Distribution"を選択<br />
<br />
? : 同じようにターゲットファイルも"情報を見る"から"ビルド"タブで"構成"を変更<br />
　下の"設定">"コード署名">"コード署名ID">"Any iOS Device"の右側の"Distribution"を変更<br />
<br />
? : Xcodeの上のツールバーから"プロジェクト">"アクティブターゲット""を編集"を開き、上記二つと同じように"ビルド"の"構成"を変更し、同じように下の"Distribution"も変更<br />
<br />
? : "グループとファイル"の"info.plist"を選択し各種項目を入力<br />
　ここは<a href="http://blog.livedoor.jp/second_flush/archives/51039297.html" target="_blank">Xcodeのプロパティリストエディタ</a>が参考になります。<br />
　Iconの設定はCFBundleIconFilesでiPhone3G(57*57)/iPhone4(114*114)/iPad(72*72)のアイコンをまとめて記入しないとエラーが出るので注意。<br />
<br />
? : Xcodeの左上の概要で"Device"を選択し、"構成"を?で作ったものを選択<br />
<br />
? : 上のツールバーから"ビルド">"Build and Archive"<br />
　ビルドに成功したらオーガナイザが開きます。<br />
<br />
? : 開いたオーガナイザで左側の"IOS DEVELOPMENT"内の"Archived Applications"を選択すると、右側に先ほどビルドしたアプリが出てきます。その下にビルドした時間が表示されるのでそれを選択<br />
<br />
? : 下の"Submit Application to iTunes Connect..."をクリックしてビルドしたアプリをiTunes Connectにuploadします。<br />
<br />
? : これで成功したらUpload完了、iTunes Connectのサイトで申請したアプリがWaiting for Reviewになる筈です。<br />
<br />
<br />
?の部分で何度も同じ"Application failed codesign verification."というエラーが出て2〜3時間戦いました。。<br />
結構誰もが通る関門のようで、やり方を解説してるサイトが沢山ありました。<br />
その中で今回、特に参考になったサイトは下のサイトです。<br />
<br />
<a href="http://wiki.minaco.net/index.php?iPhone/%E7%94%B3%E8%AB%8B%E6%96%B9%E6%B3%95" target="_blank">iPhone/申請方法 - MinacoWiki</a><br />
<a href="sarudeki.maiway.jp/forum/topic/20" target="_blank">Application Loaderでファイルをアップロードするところで詰まってます。助けてください。 &#171; 寺子屋サルでき</a><br />
<a href="http://iphone-sdk.jp/?p=849" target="_blank">アプリ申請エラーの解決法「Application failed codesign verification. 」</a><br />
<br />
その他にも解説しているサイトは沢山ありますので、調べると結構出てきます。]]></description>
 <category>General</category>
<comments>http://labs.karappo.net/iphone/index.php?itemid=252</comments>
 <pubDate>Fri, 12 Nov 2010 17:48:31 +0900</pubDate>

</item><item>
 <title><![CDATA[iPhone実機テスト]]></title>
 <link>http://labs.karappo.net/iphone/index.php?itemid=249</link>
<description><![CDATA[この回からMobile Devを引き続き更新していこうと思います。<br />
<br />
iPhoneアプリ開発で実機テストをするためにはiPhoneDeveloperProgramで認証登録する必要があります。<br />
<br />
登録情報記入 > FAX確認 > iOS Developer Program購入 > アクティベートという長い道のりを経ての実機テストを登録する作業に入ります。<br />
一つだけ特につまづいてしまった点は、Current Development Certificatesの登録の際に必要になる.cer拡張子の証明書アップロードの.cer拡張子の作成でした。<br />
<br />
アプリケーション > ユーティリティ > キーチェーンアクセス のツールバーから<br />
キーチェーンアクセス > 証明書アシスタント > 認証局に証明書を要求... で作成できてるの筈なのにアップロードがうまくいきませんでした。<br />
<br />
<a href="http://labs.karappo.net/media/12/20101108-error.gif">エラー内容</a><br />
<br />
ファイル拡張子が違うみたいな事が書かれてます。<br />
どの参考サイトにも載っておらず少し混乱しましたが、ここは作成した証明書CertificateSigningRequest.certSigningRequestをCertificateSigningRequest.cer<br />
に拡張子を短くするだけで無事アップロードできました。<br />
<br />
ここからはサクサクとDevices登録、AppIDs登録、Provisioningを完了させて念願のiPhone実機テストに辿り着く事ができました。<br />
既に多くのページで細かい手順を説明されているのですが、今回は<a href="http://umelog.com/wp/?p=1632" target="_blank">umelog.com</a>さんのページを特に参考にさせて頂きました。]]></description>
 <category>General</category>
<comments>http://labs.karappo.net/iphone/index.php?itemid=249</comments>
 <pubDate>Mon, 8 Nov 2010 12:32:56 +0900</pubDate>

</item><item>
 <title><![CDATA[C, C++, C#, Objective C]]></title>
 <link>http://labs.karappo.net/iphone/index.php?itemid=218</link>
<description><![CDATA[C言語の子孫みたいなのはたくさんあるようですが、違いというか誕生した順番や、おおよその違いを知りたかったのでエントリーを作りました。<br />
<br />
<a href="http://ja.wikipedia.org/wiki/C%E8%A8%80%E8%AA%9E">C</a> : 1971年誕生。前身はB。<br />
<a href="http://ja.wikipedia.org/wiki/C%2B%2B">C++</a> : 1983年誕生。オブジェクト指向になった<br />
<a href="http://ja.wikipedia.org/wiki/C_Sharp">C#</a> : 2001年誕生。マイクロソフトが作った。ECMA準拠。<br />
<a href="http://ja.wikipedia.org/wiki/Objective-C">Objectvie C</a> : 1983年誕生。NextSTEPなどを経て、Appleが開発した。最新はver. 2.0<br />
<br />
C# は、windowsでしか動かない<br />
Objective C は、MacやiPhoneでしか動かない<br />
<br />
C, C++ は割とニュートラルな存在っぽいです。]]></description>
 <category>General</category>
<comments>http://labs.karappo.net/iphone/index.php?itemid=218</comments>
 <pubDate>Tue, 25 Aug 2009 01:23:14 +0900</pubDate>

</item><item>
 <title><![CDATA[iPhoneで、trace, print, echo みたいにログの出力結果を確認したい。]]></title>
 <link>http://labs.karappo.net/iphone/index.php?itemid=212</link>
<description><![CDATA[Xcodeのメニューから、<br />
Xcode > 実行 > コンソール<br />
をクリックすると、<br />
デバッガコンソールが立ち上がり、<br />
そこでログが確認できるようになる。<br />
<br />
デバッガコンソールのショートカットは、<br />
Command + Shift + R<br />
<br />
プログラム内では、以下のように書く。<br />
NSLog(@"Hello world!");<br />
int型の変数などは、型変換しないといけないようです。<br />
<br />
<a href="http://vaca.vc/blog/wordpress/wp-content/uploads/2009/08/e38394e382afe38381e383a3-3.png"><img src="http://vaca.vc/blog/wordpress/wp-content/uploads/2009/08/e38394e382afe38381e383a3-3-300x276.png" alt="デバッガコンソール" title="デバッガコンソール" width="300" height="276" class="alignnone size-medium wp-image-55" /></a><br />
<br />
<br />
<a href="http://d.hatena.ne.jp/theodoorjp/searchdiary?word=*[_level0.iPhone]">どうやって iPhone で trace 文書くの？？</a><br />
]]></description>
 <category>Objective-C</category>
<comments>http://labs.karappo.net/iphone/index.php?itemid=212</comments>
 <pubDate>Thu, 13 Aug 2009 03:44:14 +0900</pubDate>

</item><item>
 <title><![CDATA[Objective-Cのクラス名についてるNSって何？]]></title>
 <link>http://labs.karappo.net/iphone/index.php?itemid=208</link>
<description><![CDATA[iPhone開発本を読み始めて、最初になんだコリャ？と思った、クラス名にやたらとついてる「NS」という表記が何なのかやっと分かりました。<br />
<br />
MacOSの前身である<a href="http://ja.wikipedia.org/wiki/NEXTSTEP">NEXTSTEP</a>というOSが1987年〜1996年ぐらいまであったらしいのですが、それがObjective-Cで書かれていたらしく、NEXTSTEPを略して、NSとし、それを、クラスライブラリのトップにあるObjectクラスの頭に付けちゃったということらしい。<br />
<br />
最初NSという表記を見たとき名前が特殊な感じがして、iPhoneに特有のクラスかと思いましたが、どうやらObjective-C全体がそうなってるようですね。<br />
<br />
ちなみに、クラス名の接頭辞で、NS以外にも、UIやCAなど、いちいち接頭辞が付いているようですが、それは、Objectctive-Cが言語使用として、クラススコープを備えていないからで、間違って最初からあるクラスと同じ名前をつけてしまわないように、という理由があるとかないとか、そんな感じみたいです。]]></description>
 <category>General</category>
<comments>http://labs.karappo.net/iphone/index.php?itemid=208</comments>
 <pubDate>Wed, 5 Aug 2009 11:59:03 +0900</pubDate>

</item><item>
 <title><![CDATA[About]]></title>
 <link>http://labs.karappo.net/iphone/index.php?itemid=206</link>
<description><![CDATA[iPhoneアプリ開発のTips集です。<br />
既に、巷にiPhone Tipsは溢れていますが、<br />
つまずいた点などをまとめていければと思います。<br />
<br />
Objective C は未踏領域でしたが、<br />
基本Flasher視点で、<br />
足を踏み入れてみようと思います。<br />
<br />
trace("Hello iPhone !");<br />
NSLog(@"Hello Flash !");<br />
<br />
といった感じで。<br />
<br />
<br />
2009.8.6. 現在の参考図書<br />
・ユメみるiPhone<br />
・iPhone SDK プログラミング大全<br />
・iPhone SDKの教科書<br />
・詳解 Objective-C 2.0<br />
<br />
2009.8.6. 開発環境<br />
・iPhone 3G (3GSではない方)<br />
・MacBookPro 13inch OSX 10.5]]></description>
 <category>About</category>
<comments>http://labs.karappo.net/iphone/index.php?itemid=206</comments>
 <pubDate>Wed, 5 Aug 2009 02:01:23 +0900</pubDate>

</item>
  </channel>
</rss>