Tumblr(http://www.tumblr.com/)というWebスクラップサービスがありますがその中でも画像に特化したビューアーです。気に入った物はReblog,Likeの操作も簡単にできます。また、Flickrなどの画像サイトからReblogすることもできるソフトで、暇な時にぽちぽち見るのに重宝します。
iPhoneソフトの広告システム AdMobとTrafficGateについて
どんなものか試してみたのでその結果を。
AdMob
基本的に広告を配信するためのシステムで、収入は成果報酬がほとんどです。また配信される広告はこちらでは選べず、配信側がターゲットを選択する形となります。そのため、アプリの形態や種類によって収入が得られる場合もあるでしょうが私のアプリでは無理でしたw
その収入に付いても基本的には広告掲載料に回してほしいらしく、一定額以上の広告収入を掲載料に回すと割り増しされるようです。
AdMob
TrafficGate
iPhone用は基本的に表示単価方式で、1広告の表示でいくら、という形の収入になります。ただしほとんどの広告が1日1端末1回しか表示されないのでアプリを何度も再起どうしても無駄ですw
定期的にアプリを起動してもらえるカレンダーや日記などのソフトに組み込めばiPhoneデベロッパーキット代ぐらいは回収できるかも。1円から収入を得られますが一定額を超えないと振り込まれないし振込手数料がいるので「ポイント交換のPeX」というポイントシステムに入れるのが良いかもしれません。
無料のソフトを配信している人は、アプリを使う側の人のことを考えて邪魔にならない程度に利用した方が良いでしょうね。
2011.1.27 追記
TrafficGateの広告について表示回数で収入が決まるかのように書いてしまっていたので訂正。
実際には有料の広告ではない表示があるため(TrafficGate様自身の自社広告など)表示件数ではなく、有料広告(スポンサー広告?)がどれだけ表示されたかで金額が決められます。
ただ現在の管理画面からはどの部分が対象だったのかわかりにくくてなぜこの金額なのかわかりませんw
iPhone/touch用のWifi検索ソフト
2011.10.20追記
便利に使えていたWifiTrakですがiOS5にしたら動かなくなってしまいました。
これでwifiをスキャンするソフトはたぶん全滅だとおもいます。
2010.2.17記入
現状では以下の二種類しか無いのかも。
ただし、どちらも検索するだけでパスワードやログインIDの必要な所へ自動的に接続する機能はありません。
eWifi(無料)

また、Easy WiFiというソフトはパスワードを記憶してくれますが未登録のWifiスポットを検索したり表示する機能はありません。パスワード等はdevicescapeというサイトに登録することによりPC等と共有できるようです。
Easy Wifi(無料)

iPhone/iPodのアプリを作るために(7) Certificatesの期限切れ更新
2013.10.31追記
この内容は古いので現状とは合わない部分があるのでご注意ください。
いつの間にかDistribution-CertificatesもDevelopment-Certificatesも期限切れになっていたので再作成しました。普通に説明どおり新しくキーチェーンアクセスでキーを作成してサイン(過去ログ2、3を参照)して新しく「Profile」も作り直しました。
ところがこのあと問題発生。Xcodeでサインができません。
正しく新しい有効期限のProfileを選んでいるのにキー情報に問題がある?みたいなエラーで先にすくまなくなりました。
色々調べたけど原因不明。でもなんとなく期限の切れたCertificatesが悪い気がしたので削除したらすんなり通りました。
たぶん、ですが手順どおり新しくCertificatesを作成してしまったのが間違いだったのだと思っております。本来は以下の様に作成する必要があったのだと思います。
1、キーチェーンアクセスを動かして「ログイン」「自分の証明書」を選んで期限切れのiPhone Developer,iPhone Distribution証明書を見つける
2、三角をクリックして関連づけされている秘密キーを表示
3、秘密キーを右クリックして「”mei sei”を使って認証局に証明書を要求…」
メールアドレス、名称を入れてディスクに保存
4、あとは普通の手順どおりアップロードしてCertificatesを入手し、キーチェーンに登録
こうすることにより、同じ秘密キーで新しいCertificatesが出来上がるので問題なくサインができるのだと思います(未確認w)
私は1年先にしか試せそうにないのでどなたか試して結果をお教えください。
2011.2.1 追記
この方法でDeveloperの方はうまく行ったのですがDistributionの方はうまく行きませんでした。期限切れとなった証明書を削除して回復しましたがDeveloperとは条件が違うようです。
違いは名称で、Developerの方には以下のような感じで名前の後ろに識別コードがついています。
iPhone Developer: xxxxx yyyyyy (ABCDEFGH)
上のやり方が良かったのではなく、名称が変わっているために問題が起きていない感じです。次の更新時にどうなるか確認します。
In App Purchaseのサンプルもどき
2013.10.31追記
古いので参考にはならないと思います。
「iPhone&Androidアプリ内課金プログラミング完全ガイド」など参考にしてみてください。
エラーチェックも何も無い省略しまくりソフトの概略です。枝葉は自分でちゃんと付け加えてください。
#コピペした時に漏れがあったみたいなので修正しました。2010.2.4
まずはStoreKitObserver
MyStoreKitObserver.h
#import <Foundation/Foundation.h>
#import <StoreKit/StoreKit.h>
@interface MyStoreKitObserver : NSObject <SKPaymentTransactionObserver> {
}
@end
MyStoreKitObserver.m
#import "MyStoreKitObserver.h"
@implementation MyStoreKitObserver
-(id)init {
if (self = [super init]) {
}
return self;
}
- (void)paymentQueue:(SKPaymentQueue *)queue removedTransactions:(NSArray *)transactions {
}
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions {
for (SKPaymentTransaction *transaction in transactions) {
switch (transaction.transactionState) {
case SKPaymentTransactionStatePurchasing:
break;
case SKPaymentTransactionStatePurchased:
case SKPaymentTransactionStateFailed:
case SKPaymentTransactionStateRestored:
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
break;
}
}
}
@end
あとは適当にボタンを用意して
TestStoreViewController.h
#import <UIKit/UIKit.h>
#import <StoreKit/StoreKit.h>
@class MyStoreKitObserver;
@interface TestStoreViewController : UIViewController <SKProductsRequestDelegate> {
MyStoreKitObserver *mySKObserver;
}
-(IBAction)test1Action:(id)sender;
@end
TestStoreViewController.m
#import "TestStoreViewController.h"
#import "MyStoreKitObserver.h"
@implementation TestStoreViewController
-(IBAction)test1Action:(id)sender {
SKProductsRequest *request= [[SKProductsRequest alloc] initWithProductIdentifiers:[NSSet
setWithObject:@"item1"]]; // 自分でつけたアイテムID
request.delegate = self;
[request start];
}
- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response {
NSArray *myProduct = response.products;
if([myProduct count] > 0) { //1アイテムしか処理してません
SKProduct *product = [myProduct objectAtIndex:0];
SKPayment *payment = [SKPayment paymentWithProductIdentifier:product.productIdentifier];
[[SKPaymentQueue defaultQueue] addPayment:payment];
}
}
- (void)viewDidLoad {
[super viewDidLoad];
mySKObserver = [[MyStoreKitObserver alloc] init];
[[SKPaymentQueue defaultQueue] addTransactionObserver: mySKObserver];
UIApplication *app = [UIApplication sharedApplication];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(_applicationWillTerminate:) name:UIApplicationWillTerminateNotification object:app];
[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];
}
-(void)_applicationWillTerminate:(NSNotification*)notification
{
[[SKPaymentQueue defaultQueue] removeTransactionObserver: mySKObserver];
[mySKObserver release];
}
一応動作確認はしましたが無保証です。

