Hatena::ブログ(Diary)

Over&Out その後 このページをアンテナに追加 RSSフィード Twitter

2013-09-24

iOS 7 の新機能のサンプルコード集『iOS7 Sampler』を公開しました。

iOS7にどんな新機能があるのかも把握しきれないままベータ期間が終わってしまい、せっかくのメジャーバージョンアップ祭に乗り遅れた感があったので、先週末に開催された『もくもく開発会@鎌倉 #2 by Qiita』にて、 iOS 7 で新たに加えられたAPI の使い方等を勉強しつつ、簡単なサンプルを集めたアプリをつくりました。


ソースコードは GitHub に置いてあります。


https://github.com/shu223/iOS7-Sampler



今のところ21個のサンプルが入っています。何か調べた折に随時追加していきます。


以下サンプルのリストです。


Dynamic Behaviors

iOS7 では UIView サブクラスに簡単に物理演算を適用することができるようになりました。


本サンプルでは、UIDynamicAnimator, UIGravityBehavior, UICollisionBehavior, UIDynamicItemBehavior を用いて 重力と衝突をシミュレート しています。



関連:UIKit で物理演算エンジンを使用する - Over&Out その後


Speech Synthesis

AVSpeechSynthesizer, AVSpeechUtterance を用いた音声合成のサンプル。


任意の文字列を iOS が読み上げ てくれます。Macのsayコマンドのようなもの。



関連:フリーの iOS 向け音声認識/音声合成ライブラリ『OpenEars』の使い方 - Over&Out その後


Custom Transition

UIViewControllerAnimatedTransitioning, UIViewControllerTransitioningDelegateを用いた カスタムトランジション (画面遷移)のサンプル。


トランジションエフェクトは下記のOSSを入れています。


HUAnimator

細い線に分解されて遷移するエフェクト。



ZBCustomTransitions

ブロックに分解されガラガラと崩れ落ちて遷移するエフェクト。



3D マップ

MKMapView の camera プロパティ (MKMapCamera という新クラス)を用いた 3D 地図表示 のサンプル。



関連:no title


iBeacon

iBeacon を 2台のiPhone(iPad)同士で試せるようにしたサンプル。



一方をビーコン(Peripheral)、もう一方を監視側(Central)として使用します。


関連

no title


120fps ビデオ録画(SLO-MO)

AVFoundationでスローモーション動画撮影を行うサンプル。iPhone5sでは120fpsでの撮影が可能です。



作例

See the 120fps Slo-Mo video in Vimeo 120fps.


関連

AV Foundationで120fpsスローモーション動画撮影を実装する - Over&Out その後


笑顔検出

CIDetectorに新たに追加された CIDetectorSmile と、CIFeature に追加されたプロパティ bounds, hasSmile を用いた 笑顔検出 のサンプル。



画像フィルタ

CIFilter に追加されたフィルタのサンプル




下記の画像処理ををピッカーで選択してかけられるようになっています。


  • CILinearToSRGBToneCurve
  • CIPhotoEffectChrome
  • CIPhotoEffectFade
  • CIPhotoEffectInstant
  • CIPhotoEffectMono
  • CIPhotoEffectNoir
  • CIPhotoEffectProcess
  • CIPhotoEffectTonal
  • CIPhotoEffectTransfer
  • CISRGBToneCurveToLinear
  • CIVignetteEffect

Sprite Kit

Sprite Kit の SKView, SKScene, SKSpriteNode, SKActionを用いて キャラのスプライトを生成し、アニメーションさせる サンプル。


ほぼCocos2Dと同じようなAPIです。



Map Directions

MKDirections, MKDirectionsResponse, MKPolylineRenderer 等を用いた 経路探索とルートの描画 サンプル。



Motion Effects (Parallax)

UIMotionEffect を用いた パララックスエフェクト(視差効果) のサンプル。



Multipeer Connectivity

Multipeer Connectivity Framework で Peer-to-Peer 通信を行うサンプル。P2P通信には Wi-Fi または Bluetooth LE を使用します。



AirDrop / Flickr / Vimeo / ReadingList

新たに追加された UIActivityType (UIActivityTypeAirDrop, UIActivityTypePostToFlickr, UIActivityTypePostToVimeo, UIActivityTypeAddToReadingList)のサンプル


AirDropはデバイスが対応している必要があり、Flickr, Vimeo は Settings でアカウントを設定している必要があります。



QR Code Reader

新たに追加された `AVMetadataObjectTypeQRCode` を利用してQRコードを読み取るサンプル。


参考:no title


QR Code Generator

CIFilter の CIQRCodeGenerator を用いた QRコード生成 のサンプル。



歩数カウントと移動状態

Core Motion に新たに追加された CMStepCounter と CMMotionActivityManager を用いて、 歩数のカウント移動状態(歩いている/走っている/車に乗っている)をトラッキング するサンプルです。



本機能を使用するにはM7コプロセッサが必要なので、2013年10月現在出ているiOSデバイスでは iPhone5sでのみ動作 します。


Static Map Snapshots

MKMapSnapshotOptions, MKMapSnapshotter を用いた 地図のスナップショットを取得する サンプル。



Safari Reading List

新たに追加された Safari Services framework を使用して Safari の Reading List にWebサイトを追加 するサンプル。


(※スクショは地味なので省略しました。)


New Fonts

iOS 7 で新たに追加された全フォント36種類をフォント名と共に確認できます。



関連:iOS 7 で使えるフォント名一覧 - Over&Out その後


ばね風アニメーション

ばね風のタイミングカーブでアニメーションさせることのできるUIViewのメソッドの挙動を確認できるサンプル。



関連:no title


UIWebViewのページネーション

UIWebViewの新機能、paginationMode のサンプル。Webページを書籍のように pagination して表示してくれます。



関連:no title


おわりに

iOSアプリに友達招待機能を追加できる『AppSocially SDK』も iOS 7 サポートしております。


関連:iOSアプリに友達招待機能を追加できる『AppSocially SDK』の使い方 - Over&Out その後



2013-09-19

Xcode の旧バージョンも Dev Center からダウンロードできるようです

昨日ついに Xcode5 が正式リリースされましたが、現行バージョンだけでなく、Xcode4.x、Xcode3.x や Xcode2.x も引き続き Dev Center からダウンロードできるみたいです。




たとえば Xcode4 でいうと、4.6.x, 4.5.x, 4.4.x, ... と本当にひとそろいダウンロードできるようになってます。


初めて知りました。このページ何度か見てるはずなのに。。



2013-09-09

アメリカの大規模ハッカソンに参加し、入賞しました

9/7-8の2日間、24時間にわたってサンフランシスコにて開催されたハッカソン『Disrupt SF Hackathon 2013』に参加し、なんと賞をいただいてしまいました。



Disrupt SF Hackathon 2013について

Disrupt SF Hackathon 2013は、参加者600人以上、プロジェクト(チーム)の数はプレゼンにエントリーしたものだけでも260以上という、かなり大規模なハッカソンです *1


f:id:shu223:20161118195547j:image:w500

(会場の奥行きが伝わりますでしょうか)


(参加費無料で、3食出ます。おやつと夜食とビールも出ます。)


作品発表会

作品発表会(プレゼン)がまた本格的で、プロのイベント運営会社が入っていてモニター類やバックステージの設備もしっかりしてて、進行も完璧でした。


f:id:shu223:20161118195622j:image:w500

(発表会。照明も音楽もクラブ調)


f:id:shu223:20161118195642j:image:w500

(発表直前にバックステージから客席を撮った写真)


(客席を沸かせた9歳の女の子ハッカーのプレゼン)


受賞者発表

プレゼンの持ち時間は1チーム1分で、進行も的確に進んでいたのですが、さすがに260組もいると、休憩含めプレゼン時間は5時間以上(!)に及びました。


で、家にネコ(弊社CEOから預かっている)を待たせていたこともあり、受賞者発表を最初の方だけちょっと見て家に帰ってしまったのですが、翌日Twitterを見ると、スポンサーの一社、Masheryの方から、


会場で君を見つけられなかったけど、賞をあげたいから連絡ちょうだい


とmentionをいただき受賞を知ったのでした。


ハッカソンでやったこと

一人で参戦して一人で黙々と作業していました。プレゼンのときに初めてちゃんと声を発した気がします。


Leap Motionを試した

サンフランシスコ行きの電車に乗り遅れ、会場に到着したのはハッカソン開始から2時間後。そして僕はその日箱から出したばかりの『Leap Motion』で何かつくる、ということに着手しました。


(電車に乗り遅れ、駅近くのカフェでセットアップ)


で、ハッカソンお約束の「インターネットがつながらない」問題と戦いながらいろいろ調べはじめ、「Leap Motion には iOS用SDKがない」ということに気付いたのがハッカソン開始から4時間半経過した17:00。



重い腰をあげて箱から出してセットアップできたし、これがわかっただけでもよかったです。MacアプリとかUnityでつくるかもしれないし、今後iOS SDKが出るかもしれないし。


つくるものを考えた

というわけで作戦変更。スポンサーが提供しているAPIを使って何かつくろう、と スポンサーAPI一覧 を一通り眺めました。


で、興味のある CoreBluetooth を使ってるやつとか、定番のEvernoteとか、景品が豪華なところとか、いろいろ迷ったのですが、兼ねてからつくりたいと思ってたものをつくれそうな、CrunchBase API を使うことにしました。


つくりたいと思ってたのは、会社名からそこに在籍する人のリストを引っ張ってきて、その人たちのKloutスコアをとってきて、その合計値からその会社のパワーを計る というもの。


なんか、知り合いが転職したけど、その会社よく知らない、ってことあるじゃないですか。で、僕が世間知らずなだけで、その会社が結構すごい会社ってこともある。そういうのを計りたいなと *2


APIクライアントを2つつくって GitHub で公開

そんなわけで、CrunchBase API と Klout API のiOS用クライアントをつくり、GitHubにサンプルコードと簡単なREADMEつきでアップしました。


CrunchBase APIは、位置情報からも検索できるっぽかったので、「近隣のスタートアップのパワーを調べる」みたいなこともできそうだと思って実装を進めてたのですが、そこに来てたスタッフの人に(メールで)いろいろ聞きながら実装してみた結果、緯度経度では検索できないとか、レスポンスがものすごい遅いとか、いろいろとイマイチだったので、最終的に会社名で検索する機能だけにしました。


まぁ、UI/UXがまとまりきらなかっただろうし、プレゼン時間も足りなかっただろうから、これで良かったです *3


ブログを3記事書いた

つくりきれるかどうか、いい落としどころを見つけられるかどうかの確信がなかったので、せめて中間アウトプットを細かく出そう、ってことで、ハッカソン中にブログを3記事書きました。


一番上の記事はブックマークも結構ついたし、今後の自分のためにもなるので、書いてよかったです。


Company Scouter

これがハッカソンの最終作品。日本語でいうと『会社スカウター』。会社のパワーと、算出の基となる各メンバーのKloutスコアが一覧表示されます *4


まるっとソース公開してます *5


https://github.com/shu223/CompanyScouter


ちなみにいくつか試した感じでは、Apple最強でした。


f:id:shu223:20130910173756p:image:w600


プレゼン資料をつくった

作品提出締め切りまで時間が5時間ほどあまり、もう改良する気力はなく、しかし眠るにはあまりにも寒かったため、ひとりで無駄に会場を歩き回ったのちに、



プレゼン資料の作成に着手しました。


で、できたのがこちら *6



あと最後のページはプレゼンでは触れませんでした。1分だと足りないのと、ネイティブだけどブラウザで試せる、ってのが説明不足だと混乱を招くかなと。ブラウザアプリなの?どっち?みたいな。


プレゼンした

プレゼンしました。


f:id:shu223:20130910182200p:image:w600


賞品もらいに行きます

そんなわけで、あさって、サンフランシスコに行く用事があるので、賞をくれた Mashery のオフィスに寄って賞品をいただいてきます。


BIG JAMBOXの "Mashery Red" (要は赤)をもらえるみたいです。


ちょうどしっかりした音の出るワイヤレススピーカー探してたし、この中だと赤がいいのでめちゃくちゃ嬉しいです。


(2013.9.12追記)賞品もらってきました

ハッカソンの賞品を受け取りにMasheryオフィスに行ってきました。サンフランシスコの一等地にある素晴らしいオフィスでした。


f:id:shu223:20161118195726j:image:w300

(一緒に写ってるのはプロダクトマネージャーのNeil Mansilla)


BIG JAMBOX以外にもいろいろいただきました。


(写真右中央にある栓抜き型USBメモリも気に入ってます)



*1こちらに別の日本人参加者の方がリアルタイムレポート記事を書かれていて、とても臨場感あります。

*2:Klout スコアなので計れる「パワー」は狭い意味になってしまうのと、CrunchBase だと日本の会社はあまり入っていないという欠点はありますが、使うAPIはあとから入れ替え可能だし、今回はスポンサーだし、ということでよしとしました。

*3:Klout API に関しては、公式リポジトリにiOS SDKとかあるのですが、ちゃんと動作しなかったし、そもそも1年以上メンテされてなかったし、無駄に複雑に見えたので、自分でつくった方が早いってことで自作しました。

*4:本当に大したものではないというか、ちょっと痛々しさすらあります。「会社のパワーを計る」というコンセプト自体はもともとつくりたかったものなのでいいのですが、中途半端にスカウター」というネタっぽいものになぞらえてしまったことを少し後悔したりもしました。

*5:この方がスポンサーが喜ぶと思ったので。。

*6:英語でのプレゼンは初めてで舞い上がること必至なので、自分が強調して話したい部分を資料でも強調してます。

2013-09-08

Kloutスコアを取得するライブラリをつくりました

Klout はちゃんとオフィシャルに iOS SDK がリリースされているのですが、最終更新が1年前と古く、デモは正常に動作せず(APIKeyとAPISecretをセットしても認証が通らない)、APIはシンプルなのにソースはなんだか複雑。。


ということで『API クライアントを AFNetworking を用いてつくる手順』に従って Klout スコアを Twitter の screen_name から取得する iOS 用 API クライアントをつくりました。


Klout API Client for iOS


使い方

README.md に書いてある通りですが、下記のような感じでスコアを取得できます。

[KloutAPIClient scoreWithTwitterScreenName:@"shu223"
                                   handler:
 ^(NSDictionary *result, NSError *error) {
     
     // Do something
 }];

結果をログ出力すると、こんな感じです。

{
    kloutId = 36310276762296144;
    nick = shu223;
    score =     {
        bucket = "60-69";
        score = "64.7767214065569";
    };
    scoreDeltas =     {
        dayChange = "1.221016407905331";
        monthChange = "3.329226905713995";
        weekChange = "0.5908994821739952";
    };
}

CrunchBase APIをiOSアプリで使用する手順のメモ、およびAPIクライアントつくりました

CrunchBaseというのは、米国のテック系企業の情報が詰まったデータベースみたいなものです。以下そのAPIを使う手順のメモ。


APIキー取得まで

デベロッパーページのトップ

http://developer.crunchbase.com/


ここから登録(最初のアプリの登録もここで行う)

http://developer.crunchbase.com/member/register


完了すると、確認メールが送信され、メールのリンクをクリックでAPIキーが発行される


APIの基本的な呼び方

ベースURLは

http://api.crunchbase.com/v/1/

で、下記のように引数 "api_key" にAPIキーをくっつけるだけ。

http://api.crunchbase.com/v/1/company/facebook.js?api_key=(your_acess_key)


APIを試す

下記URLで、各APIを試せる。

http://developer.crunchbase.com/io-docs

一通りの組み合わせを試せるので、これがドキュメントにもなっている。


ドキュメント

ちゃんと書かれたドキュメントはこちら。

http://developer.crunchbase.com/docs


APIクライアントつくりました

とあるハッカソン(いままさにその真っ最中)の副産物として、以下のような CrunchBase API の iOS 用クライアントができました。


CrunchBase API Client for iOS


こんな感じで使えます。

(会社名を指定して情報取得)

[CrunchBaseClient companyWithName:@"appsocially"
                          handler:
 ^(NSDictionary *result, NSError *error) {
     
     // Do something.
 }];

他の詳細は同梱のREADMEにてどうぞ(ハッカソン中はどんどん更新すると思います)。


2013-09-07

API クライアントを AFNetworking を用いてつくる手順

ちょっとこの Web API 使ってなんかつくってみるか」ということがたまにある(とくにハッカソンで)ので、手早くつくれるように僕なりの手順をまとめてみました。


「共通処理の実装」までは簡単な文字列の置換で済むので、 ファイルテンプレートにしておく とより簡単になりそうです(参考:Xcodeのファイルテンプレートを自作する)。


0. クラスファイルを新規作成

AFHTTPClientのサブクラスとしてクラスファイルを新規作成する。


1. 共通処理の実装

APIキーをセットするメソッドの定義と実装と、オブジェクト初期化用のメソッド実装。

ヘッダファイル(.h)
+ (void)setAPIKey:(NSString *)APIKey;
実装ファイル(.m)
#import "AFJSONRequestOperation.h"
#define API_BASE_URL      @"http://xxxx"
@interface XXXX ()
@property (nonatomic) NSString *APIKey;
@end
+ (XXXX *)sharedClient
{
    static XXXX *sharedClient = nil;
    
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        sharedClient = [[XXXX alloc] initWithBaseURL:[NSURL URLWithString:API_BASE_URL]];
    });
    
    return sharedClient;
}

- (id)initWithBaseURL:(NSURL *)url
{
    if (self = [super initWithBaseURL:url]) {
        
        [self registerHTTPOperationClass:[AFJSONRequestOperation class]];
        [self setParameterEncoding:AFJSONParameterEncoding];
        [self setDefaultHeader:@"Accept"     value:@"application/json"];
    }
    
    return self;
}

+ (void)setAPIKey:(NSString *)APIKey {
    
    [[XXXX sharedClient] setAPIKey:APIKey];
}

2. 汎用Privateメソッドの実装

ここは各サービスの仕様に合わせて実装を変える必要がある。APIキーをセットする、とか、そのサービスにおけるAPIをたたく際の共通の処理をここで行う。


(APIキーをパラメータに渡す場合)

- (NSMutableURLRequest *)requestWithMethod:(NSString *)method
                                      path:(NSString *)path
                                parameters:(NSDictionary *)parameters
{
    NSAssert(self.APIKey, @"API Key has not been set.\n\n");
    
    path = [path stringByAppendingFormat:@"?api_key=%@", self.APIKey];
    
    for (NSString *key in [parameters keyEnumerator]) {
        
        NSString *value = [NSString stringWithFormat:@"%@",
                           [parameters valueForKey:key]];
        
        NSAssert2([key length] && [value length],
                  @"invalid param! key:%@: value:%@", key, value);
        
        path = [path stringByAppendingFormat:@"&%@=%@", key, value];
    }

    NSMutableURLRequest *req = [super requestWithMethod:method
                                                   path:path
                                             parameters:nil];
        
    return req;
}

3. 各APIに対応したメソッドを書く

- (void)companyWithName:(NSString *)name
                handler:(void (^)(NSDictionary *result, NSError *error))handler
{
    NSAssert([name length], @"name is required");
    
    __weak XXXX *weakSelf = self;
    
    dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
    dispatch_async(queue, ^{

        NSString *path = [NSString stringWithFormat:@"company/%@.js", name];

        [weakSelf getPath:path
               parameters:nil
                  success:^(AFHTTPRequestOperation *operation, id responseObject) {
                      
                      dispatch_async(dispatch_get_main_queue(), ^{
                          
                          handler(responseObject, nil);
                      });
                      
                  } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
                      
                      dispatch_async(dispatch_get_main_queue(), ^{
                          
                          handler(nil, error);
                      });
                  }];
    });
}

サンプル

この手順でつくったAPIクライアント

2013-09-06

iOSアプリに友達招待機能を追加できる『AppSocially SDK』の使い方

AppSocially iOS SDK を使うと、たった1行コードを追加するだけで、友達を招待する機能をアプリに追加することができます。無料で使えて、招待数による従量課金もありません。



招待の方法もいろいろあって、いまのところ

  • Facebook のチャット
  • Twitter の DM
  • メール
  • SMS
  • LINE

が用意されています。


iOS6 以降は Social.framework によって Facebook や Twitter への投稿がものすごく簡単になりましが、DM やチャットは Accounts.framework を用いた認証や、SLRequest で API をハンドリングする処理を自前で書かなければならず *1、それでいてアプリ毎に固有な差別化要素でもないので、まるっと外部ライブラリに任せてしまえばかなり手間が省けます。


導入方法

上述したとおり、フレームワーク追加、ヘッダインポートといった一般的なライブラリの導入手順をのぞけば、基本的にはメソッドを1つ呼ぶだけで導入できます。


1. フレームワークをプロジェクトに追加

GitHubリポジトリから最新リリース版 のzipをダウンロードし、解凍したフォルダ配下にある AppSocially SDK フォルダごとプロジェクトに追加します。(フォルダには AppSocially.framework と AppSocially.bundle が入っています。)


また、下記の依存フレームワークもプロジェクトに追加し、

  • Accounts.framework
  • AddressBook.framework
  • AddressBookUI.framework
  • CFNetwork.framework
  • MessageUI.framework
  • MobileCoreServices.framework
  • QuartzCore.framework
  • Security.framework
  • Social.framework
  • SystemConfiguration.framework
  • libresolv.dylib
  • libxml2.dylib
  • libiconv.dylib

Build Settings の "Other Linker Flags" に、"-ObjC" と "-all_load" を追加しておきます。


このあたりは、サードパーティ製フレームワークを導入する際にはおなじみの手順です。


2. SDKを初期化

AppDelegateでヘッダをインポートし、

#import <AppSocially/AppSocially.h>

AppSocially API Key と Facebook APP ID をセットします *2

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    [AppSocially setAPIKey:@"5acbd3940b4603f68108ff2efd02e02b"];

    [AppSocially setFacebookAppID:@"117100645022644"];

    // And you code here...

    return YES;
} 

3. 招待用アクションシート表示メソッドをコール

あとは、showInviteSheetInView: メソッドをコールするだけ。

[ASInviter showInviteSheetInView:self.view];

このメソッドにより、次のような招待用アクションシートが表示され、


f:id:shu223:20130905160756p:image


あとはSDK内でよしなにやってくれます。


※このアクションシートからの招待は、SDK に同梱されている『FirstSample』というサンプルアプリで、挙動をすぐに試すことができます。


ランディングページのカスタマイズ

AppSocially では、アプリ毎に最適化を施して招待効果を高められるよう、またクリックやインストールをトラッキングできるように、「招待毎」にランディングページを生成します。


f:id:shu223:20130905160757p:image

(facebook chat経由で届いた招待ページ)


デフォルトは上記のようなシンプルなものですが、これをダッシュボードで自由にカスタマイズできるようになっています。


Undaの事例

f:id:shu223:20130905164326j:image:w550


AppSocially SDKを導入しているビデオメッセンジャーアプリの『Unda*3 では、招待ランディングページ内に動画を埋め込み


f:id:shu223:20130905160758p:image


招待というよりは、まだ Unda を始めていない友達に Facebook chat や Twitter DM、メール、SMS でビデオメッセージを送るといった見え方になるようなかたちで招待機能が実装されています。


カスタマイズのやりかた

ページカスタマイズはダッシュボードの『Templates』メニューから行います。


f:id:shu223:20130906085232p:image:w400


プレビュー上にある "EDIT" を押すとエディタが開き、編集できるようになります。


f:id:shu223:20130906085617p:image:w500


基本的に HTML + CSS です。動的に文字列を埋め込みたい場合には、たとえば次のように書きます。

<img class="app-icon" src="{{app.icon_url}}" width="72" height="72">

このあたりのドキュメントはこちらにあります。


Undaタイプの招待画面

さきほど紹介した Unda の招待画面は、ASFriendPickerViewController というクラスを使用して実装されています。


f:id:shu223:20130906092631p:image


これは、Facebook、Twitter、アドレス帳にある情報をひとつの TableView に一覧表示し、そこから選択して招待するための UIViewController サブクラスです。


ここから複数の友達を選択しての一括招待もできるので、効果的につかえば、強力なユーザー獲得手段となりえます。


これを用いた招待機能の実装方法は、SDKに同梱されている『InviteSample』と、こちらのドキュメントが参考になります。


おわりに

これを書かないとステマになってしまうので書いておきますと、AppSocially は、僕が所属しているアメリカのスタートアップ『AppSocially』が提供しているサービスです。で、SDK は僕が開発しています。


SDKの最新バージョンは 0.7.1 で、1.0.0 に到達していないことからも汲んでいただける通り、まだまだやることが盛りだくさんです(たとえばつい先週までドキュメントは皆無でした)。*4


今回ここに書いた以外にも、AppSocially にはユーザー獲得にまつわるさまざま機能があり、SDKに同梱のサンプルコードにてご確認いただけますが、「こういうことできるの?」「どうやるの?」といったご要望やご質問は僕にメールや Twitter で(お手柔らかに)お伝えいただければ、善処させていただきます。


そんなわけで AppSocially SDK、ぜひこの土日にでもお手持ちのアプリにサクッと導入して申請していただけると幸いです!



AppSocially iOS SDKをダウンロード




*1:FacebookのPermissionまわりや、Twitterのマルチアカウント対応、API回数制限のことなど、ちゃんとやろうとすると意外とめんどくさいことがポロポロと出てきます

*2:AppSocially API Key は AppSocially のサービスにサインアップしてダッシュボードから取得する必要があるのですが、ここではすぐに試せるよう、僕がつくったキーを入れてあります。また Facebook APP ID も Facebook Developers より(本番で使う際には)作成してください。

*3:参考:LINEの次はこれかも…注目のビデオメッセンジャー『unda』を開発した徳井直生氏が、シリコンバレーで学んだこと

*4:実は yidev@渋谷勉強会 第一回 にてバージョン 0.2 か 0.3 のころに発表させていただいたのですが、いろいろあって発表スライドを公開するタイミングを逸してしまいました。

2013-09-05

『iOS Simulator failed to install the application』エラーが出る場合の対処方法

Xcodeの某バージョンをつかっていると、某7.0では動くのに、6.1のシミュレータで動かそうとすると『iOS Simulator failed to install the application』って出て困る、という事態によくなります。


そういう場合は、iOS Simulatorメニュー > Reset Content And Setting でリセットすれば治ります。(この作業でなおるのは僕の環境だけかもしれません。あしからず。。)


2009 | 08 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2012 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2013 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2014 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2015 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2016 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 11 | 12 |
2017 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2018 | 02 |