フォトシェア
このチュートリアルでは、フォトシェアについて学びます。 command.cgi の フォトシェアモードの有効化 と フォトシェアモードの解除 を使用します。 このチュートリアルは別項の iOS Tutorial 7: FlashAirへのアップロード に基づいています。**
概要
フォトシェアとは、FlashAirの指定したフォルダと日付の画像だけを、公開できるようにする機能です。
メモ: フォトシェアを行う際には、フォトシェア専用のSSIDに変更することをおすすめします。 フォトシェアを解除した瞬間に全ての画像の閲覧が可能になりますが、直後に元のSSIDに戻すことで、強制的に共有状態を解除するためです。 SSIDの変更の詳細は iOS Tutorial 6: SSIDとパスワードの変更 を参考にしてください。
画面レイアウトの作成
レイアウトはこのように作ります。
iOS Tutorial 7: FlashAirへのアップロード に、画面5:フォトシェア実行中画面を追加します。
画面4:操作画面に PhotoShare ボタンを追加します。
PhotoShare ボタンがタップされると画面5:フォトシェア実行中画面を表示します。
コードの作成
画面4:操作画面の作成
iOS Tutorial 7: FlashAirへのアップロードの状態に、PhotoShare ボタンをタップした際の処理を追加します。
フォトシェアの有効化
フォトシェアを行うためには、以下のコマンドを使用します。
- フォトシェアは、
command.cgi
にop=200
とフォルダパス、日付を指定することで設定できます。- コマンド:
http://flashair/command.cgi?op=200&DIR=/DCIM/100__TSB&DATE=17153
- コマンドが返す情報:
OK
フォトシェアの有効化に成功400 Bad Request
フォトシェアの有効化に失敗
- コマンド:
では、フォトシェアを設定します。
FSMemoEditViewController.m (1)
- (IBAction) photoshareButton:(id)sender {
NSError *error = nil;
// Set photoshare
// Make url
NSString *urlStr = [@"http://flashair/command.cgi?op=200&DIR="
stringByAppendingString:self.path ];
urlStr = [urlStr stringByAppendingString:@"&DATE="];
urlStr = [urlStr stringByAppendingString: [self getDate16: self.date]];
NSURL *url = [NSURL URLWithString:urlStr];
//Run cgi
NSString *rtnStr = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding
error:&error];
if ([error.domain isEqualToString:NSCocoaErrorDomain]) {
NSLog(@"command.cgi %@\n", error);
} else {
if ([rtnStr isEqualToString:@"OK"]) {
// Segue
[self performSegueWithIdentifier:@"toPhotoshare" sender:self];
} else {
NSLog(@"%@", rtnStr);
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"PhotoShare" message:@"
command.cgi failed" delegate:nil cancelButtonTitle:nil otherButtonTitles:@"OK", nil];
[alert show];
return;
}
}
}
-
6-13行目
フォトシェアを設定しています。 -
17-19行目
フォトシェアを設定した結果が成功であった場合は、フォトシェア実行中画面へ遷移するように設定しています。
FSMemoEditViewController.m (2)
- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
// Pass next View the Data
if ([segue.identifier isEqualToString:@"toImageView"]) {
FSImageViewController *imageViewController = segue.destinationViewController;
imageViewController.fileInfo = rowdata;
}
if ([segue.identifier isEqualToString:@"toPhotoshare"]) {
FSPhotoShareViewController *photoShareViewController = segue.destinationViewController;
photoShareViewController.path = [self.path stringByAppendingString:@"/"];
photoShareViewController.date = self.date;
}
}
- 7-11行目
フォトシェア実行中画面に、現在対象となっているフォルダと日付を渡します。
画面5:フォトシェア実行中画面の作成
フォトシェア設定後に遷移する画面を作成します。 Back ボタン がタップされた際には、メッセージを表示した後、フォトシェアを解除します。
フォトシェア解除
フォトシェアの解除を行うためには、以下のコマンドを使用します。
- フォトシェアは、
command.cgi
にop=201
を指定することで解除できます。- コマンド:
http://flashair/command.cgi?op=201
- コマンドが返す情報:
OK
フォトシェアの解除に成功400 Bad Request
フォトシェアの解除に失敗
- コマンド:
FSPhotoShareViewController.m(1)
- (IBAction)backButton:(id)sender {
// back button was pressed.
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"PhotoShare" message:
@"Do you disable PhotoShare?" delegate:self cancelButtonTitle:@"Cancel"
otherButtonTitles:@"OK", nil];
[alert show];
}
- (void) disablePhotoShare {
// Disable photoshare
// Make url
NSError *error;
NSString *urlStr = @"http://flashair/command.cgi?op=201";
NSURL *url = [NSURL URLWithString:urlStr];
//Run cgi
NSString *rtnStr = [NSString stringWithContentsOfURL:url encoding:
NSUTF8StringEncoding error:&error];
if ([error.domain isEqualToString:NSCocoaErrorDomain]) {
NSLog(@"command.cgi %@\n", error);
} else {
if ([rtnStr isEqualToString:@"OK"]) {
[self.navigationController popViewControllerAnimated:YES];
} else {
NSLog(@"%@", rtnStr);
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"PhotoShare"
message:@"command.cgi failed" delegate:nil cancelButtonTitle:nil
otherButtonTitles:@"OK", nil];
[alert show];
return;
}
}
}
-(void)alertView:(UIAlertView*)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
switch (buttonIndex) {
case 1:
[self disablePhotoShare];
break;
default:
break;
}
}
-
13-17行目
フォトシェアを解除しています。 -
21-22行目
フォトシェアを解除した結果が成功であった場合は、前の画面へ戻します。
実行結果
フォトシェアを設定してみます。
その前に、フォトシェアを解除しておきます。
Date List ボタンをタップします。
2013/03/03を選択してみます。
PhotoShare ボタンをタップし、フォトシェアを設定します。
成功し、フォトシェア実行中画面に遷移しました。
フォトシェアが設定されているか、確認してみます。 指定したフォルダと日付の画像だけが表示されました。
サンプルコード
ios_tutorial_08.zip (63KB)
このサイトのサンプルコードは二条項BSDライセンスで提供されています。