FC2ブログ

頭と尻尾はくれてやる!

パソコンおやじのiPhoneアプリ・サイト作成・運営日記


NHK筋トレ動画を頭出しするアプリを作った

少し前に話題になったNHKの筋トレ番組「みんなで筋肉体操」。
1回やるのに5分もかからないので、日替わりで順次1つずつだけど毎日やってる!

公式より、腕立て、腹筋、背筋、スクワットの4種類のビデオがYouTubeに公開されてる。
いざやる時にはiPhoneのYouTubeアプリを起動、NHK 筋トレ で検索して、今日はどれだったかなー?と考え1つのビデオを選んで、やり方はもうわかっているので最初の方はスキップしてようやく、武田真治さんらと一緒に筋トレを始めるわけだ。

この過程が面倒なので、今日の筋トレメニュー動画がすっと出てくる自分専用のiOSアプリを作った。

噂には聞いていたけどUIWebViewは使うべからず、ってことらしいのでWebKitのWKWebViewを使う。
意味わからないんだが、どうもこいつはStoryboardでオブジェクト生成ができないらしい(試したが確かに挙動不審であった)。
なのでコードで書く必要がある。
それに付随してレイアウト指定もコードで書かないとだめっぽいのだが、、、謎仕様だ。

ともかく。
@import WebKit;

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    // (1)
    WKWebViewConfiguration *configuration = [WKWebViewConfiguration new];
    WKWebView *webView = [[WKWebView alloc] initWithFrame:self.view.bounds configuration:configuration];
    [self.view addSubview:webView];
    
    // (2)
    [webView setTranslatesAutoresizingMaskIntoConstraints:NO];
    [self.view addConstraints:[self makeConstraintsForView:webView]];

    // (3)
    NSURL *targetUrl = [self getTodaysURL];
    NSURLRequest* request = [NSURLRequest requestWithURL:targetUrl];
    [webView loadRequest:request];
}
↑ざっとした流れだけど。
(1)あたりでWKWebViewオブジェクトを生成。
(2)はレイアウトの指定。でもなぜか動画を再生するとワーニング出まくりになってしまう。まあ俺専用だからスルーだ。それにしてもコードで書くのって面倒なのね、、、
(3)で欲しい動画のURLをWKWebViewオブジェクトに渡すんだけど、このあたりはUIWebViewと同じだな。

ちなみに動画選択部分はこんなの↓
-(NSURL *)getTodaysURL
{
    // (4)
    NSString *urlStr1 = @"https://www.youtube.com/watch?v=WndOChZSjTk&t=65s";//腕立て
    NSString *urlStr2 = @"https://www.youtube.com/watch?v=1GanGLmDt2I&t=97s";//腹筋
    NSString *urlStr3 = @"https://www.youtube.com/watch?v=IHYOhDe4FB8&t=81s";//背筋
    NSString *urlStr4 = @"https://www.youtube.com/watch?v=PyJOEt2nsGQ&t=81s";//スクワット
    
    // (5)
    NSTimeInterval timeInterval = NSDate.timeIntervalSinceReferenceDate;
    NSUInteger days = timeInterval/3600.0/24.0;
    
    NSString *urlStr = nil;
    NSUInteger amari = days % 4;
    if (amari == 0) {
        urlStr = urlStr1;
    } else if (amari == 1) {
        urlStr = urlStr2;
    } else if (amari == 2) {
        urlStr = urlStr3;
    } else if(amari == 3) {
        urlStr = urlStr4;
    } else {
        NSLog(@"error! wrong amari %lu",(unsigned long)amari);
        exit(0);
    }
    
    NSURL *url = [NSURL URLWithString:urlStr];
    
    return url;
}
アプリ開始時のスクショ

↑アプリスタート時はサムネ表示になる。
残念ながらここで動画再生ボタンを押す必要がある。勝手に再生して欲しいがさすがにこれはどうしようもないだろう。

(4)にあるようにYouTubeへのリンクでt=65sなどとするとビデオの開始時間を指定できる。これだと65秒から開始するので

開始画面のスクショ

↑動画再生ボタンをタップするとここから始められる。4本ともここからスタートするのですぐに筋トレできる。

(5)現在時刻の'タイムスタンプ'から今が何日目かを得ている。4で割った余りでビデオの種類を変えてるわけだが、これだと日本時間じゃないので、ビデオ切り替わりが朝9時くらいになる。まあいつも夜に筋トレするから問題ないが。


筋肉は裏切らない!

<< 倒立振子にDueling Networkを適用してみた  TopPage  IFTTTでボールルームへようこそのツイート更新を通知で得る >>

コメント


管理者にだけ表示を許可する
 

トラックバック

トラックバックURL
http://ringsbell.blog117.fc2.com/tb.php/1203-845117e9




Copyright ©頭と尻尾はくれてやる!. Powered by FC2 Blog. Template by eriraha.

FC2Ad