Lock Screen Hack

2,645 views

Published on

Conference With Developers2 の LT で話した資料

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,645
On SlideShare
0
From Embeds
0
Number of Embeds
754
Actions
Shares
0
Downloads
2
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Lock Screen Hack

  1. 1. ロック画面ハック してみた 田村 航弥 @tamotamago
  2. 2. 田村 航弥 @tamotamago 2014年 02 月 株式会社ミクシィを退職しました mixi for iPhone PoPolly
  3. 3. 初級∼中級者向け 電子書籍 only 2 月発売予定
  4. 4. ロックスクリーンハック
 on Android youtube 動画 PoPolly for Android
  5. 5. iOS でごりってみた youtube 動画
  6. 6. iOS でごりってみた BackGround で
 動きましょう 音楽ボタンのイベント を拾いましょう アートワークを
 いじりましょう
  7. 7. BackGround で
 動きましょう 音楽ボタンのイベント を拾いましょう アートワークを いじりましょう
  8. 8. Background Modes
  9. 9. Background Modes
  10. 10. MPMoviePlayerController
  11. 11. MPMoviePlayerController • 無音 MP3 をエンドレスループ _moviePlayerController = [[MPMoviePlayerController alloc] initWithContentURL:[[NSBundle mainBundle] URLForResource:@"Silent3sec" withExtension:@“mp3"]]; ! _moviePlayerController.repeatMode = MPMovieRepeatModeOne;
  12. 12. AVAudioSession
  13. 13. AVAudioSession • バックグラウンドに移ったときの振る舞いを設 定 [[AVAudioSession sharedInstance] setDelegate: self]; NSError *error; // Initialize the AVAudioSession here. if (![[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:&error]) { // Handle the error here. NSLog(@"Audio Session error %@, %@", error, [error userInfo]); } AVAudioSessionCategoryPlayback : ロックスクリーンに行っても出力の みし続ける
  14. 14. BackGround 動きましょう 音楽ボタンのイベント を拾いましょう アートワークを いじりましょう
  15. 15. RemoteControlEvents
  16. 16. RemoteControlEvents これ
  17. 17. RemoteControlEvents • イベント受け取ります宣言 [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
  18. 18. RemoteControlEvents • イベント受け取り - (void)remoteControlReceivedWithEvent:(UIEvent *)event { switch (event.subtype) { case UIEventSubtypeRemoteControlPlay: case UIEventSubtypeRemoteControlPause: case UIEventSubtypeRemoteControlStop: case UIEventSubtypeRemoteControlTogglePlayPause: NSLog(@"pushed center button"); break; case UIEventSubtypeRemoteControlNextTrack: NSLog(@"pushed right button"); break; case UIEventSubtypeRemoteControlPreviousTrack: NSLog(@"pushed left button"); break; default: break; } }
  19. 19. RemoteControlEvents // for UIEventTypeRemoteControl, available in iOS UIEventSubtypeRemoteControlPlay = UIEventSubtypeRemoteControlPause = UIEventSubtypeRemoteControlStop = UIEventSubtypeRemoteControlTogglePlayPause = UIEventSubtypeRemoteControlNextTrack = UIEventSubtypeRemoteControlPreviousTrack = UIEventSubtypeRemoteControlBeginSeekingBackward = UIEventSubtypeRemoteControlEndSeekingBackward = UIEventSubtypeRemoteControlBeginSeekingForward = UIEventSubtypeRemoteControlEndSeekingForward = 4.0 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
  20. 20. BackGround 動きましょう 音楽ボタンのイベント を拾いましょう アートワークを
 いじりましょう
  21. 21. MPNowPlayingInfoCenter
  22. 22. MPNowPlayingInfoCenter • Now Playing な Information をセットできる MPMediaItemArtwork *artwork = [[MPMediaItemArtwork alloc] initWithImage:[UIImage imageNamed:@"question"]]; // set NowPlaying. Class playingInfoCenter = NSClassFromString(@"MPNowPlayingInfoCenter"); if (playingInfoCenter) { MPNowPlayingInfoCenter *center = [MPNowPlayingInfoCenter defaultCenter]; center.nowPlayingInfo = @{}; ! } NSDictionary *songInfo = @{MPMediaItemPropertyTitle:@"どっちがすき?", MPMediaItemPropertyArtwork:artwork, MPMediaItemPropertyPlaybackDuration:[NSNumber numberWithDouble:20.0], MPNowPlayingInfoPropertyElapsedPlaybackTime:[NSNumber numberWithDouble:0.0], MPNowPlayingInfoPropertyPlaybackRate:[NSNumber numberWithDouble:1.0] }; center.nowPlayingInfo = songInfo; userInfo の key はMPNowPlayingInfoCenter.h に書いてあります
  23. 23. ボタンが押されたら
 アートワークを変更する
  24. 24. みなさん何か忘れていませんか?
  25. 25. Apple Review Guideline
  26. 26. Apple Review Guideline • 2.16 Multitasking Apps may only use background services for their intended purposes: VoIP, audio playback, location, task completion, local notifications, etc.
  27. 27. 結び
  28. 28. 結び 作る前に(レビューガイドラインを)読む!

×