カテゴリー : 2013年 5月

[Java] ArrayList#toArray を String[] にキャストする方法

Java で ArrayList#toArray を String[] にキャストする方法をご紹介します。

Java

続きを読む

[Android] アラートダイアログ(AlertDialog)のタイトルの設定方法

Android アプリ開発で、アラートダイアログ(AlertDialog)のタイトルを設定する方法をメモ。

final AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
alertDialogBuilder.setTitle("タイトル!");

[参考]

UIコンポーネント/AlertDialogの使い方 – Android Wiki*

[Android] アクションバーで前のアクティビティに戻るボタンを表示させる設定方法

Android アプリで、アクションバーで前のアクティビティに「戻る」ボタンを表示させる設定で、参考になった情報をメモ。

親アクティビティを指定せずに作成したアクティビティに親を設定する – IKB: 雑記帖

Navigation with Back and Up | Android Developers

Y.A.M の 雑記帳: Android Up の振る舞いパターンを実装する

[Git] .gitignore ファイルをカンタンに生成するサービス「gitignore.io」が便利!

.gitignore ファイルをカンタンに生成するサービス「gitignore.io」が便利すぎて、泣けました!

gitignore.io – Generate useful .gitignore files for your project

.gitignore ファイルを生成するサービス gitignore.io #git – Qiita [キータ]

今まで、どういうファイルを .gitignore に追加して、コミットしないようにすべきか、いちいち検索して調べてました。

例えば、Android や iOS アプリ開発用の .gitignore は下記のような感じでしょうか。

.gitignore for Android Development

curl http://gitignore.io/api/windows,linux,osx,eclipse,android > .gitignore

.gitignore for iOS Development

curl http://gitignore.io/api/osx,objective-c > .gitignore

[Android] Parse.com を使った Push 通知機能の実装方法

Parse.com を使って Android アプリに Push 通知機能を実装したので参考になったリンクをメモ。

手順は、下記のページを参考にしました。

Get Started with Android | Parse

Quick Start | Parse

Android Push Notifications | Parse

Push Developer Guide | Parse

[Android] エラー「ビルド・パスが不完全であるため、プロジェクトはビルドされませんでした。」

Eclipse での Android アプリ開発でよく発生するエラーの解決方法をメモ。

エラーメッセージ
ビルド・パスが不完全であるため、プロジェクトはビルドされませんでした。

解決方法
1. プロジェクトのプロパティ →「Javaのビルドパス」→「順序およびエクスポート」→「AndroidX.X」にチェックを入れて「OK」をクリック
2. ビルド

[Linux]ドメインの TXT レコードを nslookup -q=txt コマンドで確認する

ドメインの TXT レコードは nslookup コマンドに -q=txt オプションを付けて、確認することができます。

以下は、bakorer.com というドメインのTXTレコードを確認した結果です。

% nslookup -q=txt bakorer.com
Server:		192.168.0.1
Address:	192.168.0.1#53
 
Non-authoritative answer:
bakorer.com	text = "v=spf1 include:aspmx.googlemail.com ~all"
 
Authoritative answers can be found from:
bakorer.com	nameserver = dns01.muumuu-domain.com.
bakorer.com	nameserver = dns02.muumuu-domain.com.
dns01.muumuu-domain.com	internet address = 157.7.180.150
dns02.muumuu-domain.com	internet address = 182.48.37.179

[iOS] ReleaseビルドでNSLogを出力させない設定方法

iOS アプリで、ReleaseビルドでNSLogを出力させない設定方法

アプリ名-Prefix.pch ファイルに下記を定義すればOKです。

#ifdef DEBUG
#   define NSLog(...) NSLog(__VA_ARGS__)
#else 
#   define NSLog(...)
#endif

ちなみに、DEBUG のON/OFFの切り替えは下記の画像のように「PROJECT > Build Settings > Apple LLVM compiler 4.2 – Preproessing」で設定します。

ios-debug-off

以上です。

[参考]

objective c – Enable and Disable NSLog in DEBUG mode – Stack Overflow

[iOS] UIScrollView や UITableView のスクロール停止・禁止の設定方法

iOS アプリ開発で、UIScrollView や UITableView のスクロール操作を禁止にする設定方法をご紹介します。

iOS Development

続きを読む

[iOS] Facebook エラー:The Facebook server could not fulfill this access request: The app must ask for a basic read permission at install time.

Facebook iOS SDK version 3.5.1 で Facebook 認証を実装したらエラーが発生しました。

エラーログ

error:Error Domain=com.facebook.sdk Code=2
“The operation couldn’t be completed. (com.facebook.sdk error 2.)”
UserInfo=0x1e8b2740 {com.facebook.sdk:ErrorLoginFailedReason=com.facebook.sdk:SystemLoginCancelled, com.facebook.sdk:ErrorInnerErrorKey=Error Domain=com.apple.accounts
Code=7 “The Facebook server could not fulfill this access request: The app must ask for a basic read permission at install time.”
UserInfo=0x1ddf1eb0 {NSLocalizedDescription=
The Facebook server could not fulfill this access request: The app must ask for a basic read permission at install time.
}, com.facebook.sdk:ErrorSessionKey=, expirationDate: (null), refreshDate: (null), attemptedRefreshDate: 0001-12-30 00:00:00 +0000, permissions:(null)>}

最初、以下のように openActiveSessionWithPublishPermissions で、publish_actions だけ取得しようとしていたのですが「The app must ask for a basic read permission at install time.」というエラーメッセージの通り、まず basic profile information を取得する必要があるそうです。

+ (void)connectWithCompletionHandler:(void(^)(FBSession *session, FBSessionState status, NSError *error))handler {
    NSLog(@"Connection");
    if ([[FBSession activeSession] isOpen]) {
        NSLog(@"Logout");
        [[FBSession activeSession] closeAndClearTokenInformation];
    }
 
    // Request publish permissions
    NSArray *publishPermissions = [NSArray arrayWithObjects:@"publish_actions", nil];
    [FBSession openActiveSessionWithPublishPermissions:publishPermissions
                                       defaultAudience:FBSessionDefaultAudienceFriends
                                          allowLoginUI:YES
                                     completionHandler:handler];
}

なので、下記のように先に openActiveSessionWithReadPermissions を呼び出せばOKです。

+ (void)connectWithCompletionHandler:(void(^)(FBSession *session, FBSessionState status, NSError *error))handler {
    NSLog(@"Connection");
    if ([[FBSession activeSession] isOpen]) {
        NSLog(@"Logout");
        [[FBSession activeSession] closeAndClearTokenInformation];
    }
 
    // Request basic profile information
    // 基本情報で必要なものがある場合、指定する
    // NSArray *readPermissions = [NSArray arrayWithObjects:@"email", @"user_birthday", nil];
    NSArray *readPermissions = nil;
    [FBSession openActiveSessionWithReadPermissions:readPermissions
                                       allowLoginUI:NO
                                  completionHandler:^(FBSession *session, FBSessionState status, NSError *error) {
                                      /* handle success + failure in block */
                                  }];
 
    // Request publish permissions
    NSArray *publishPermissions = [NSArray arrayWithObjects:@"publish_actions", nil];
    [FBSession openActiveSessionWithPublishPermissions:publishPermissions
                                       defaultAudience:FBSessionDefaultAudienceFriends
                                          allowLoginUI:YES
                                     completionHandler:handler];
}

[参考]

Facebook iOS SDK3.5で投稿処理を行う際の流れ(その2) – assaulter's diary