From c57a48dd769f3041213a0f15092719109d68dc2e Mon Sep 17 00:00:00 2001 From: gilshahar7 Date: Sat, 18 Feb 2017 12:44:10 +0200 Subject: [PATCH] Initial realease will add a preference pane before submitting to cydia. --- Makefile | 14 +++++ NotifyMusic.plist | 1 + Tweak.xm | 52 ++++++++++++++++++ ...har7.notifymusic_0.0.1-29_iphoneos-arm.deb | Bin 0 -> 4864 bytes control | 9 +++ 5 files changed, 76 insertions(+) create mode 100644 Makefile create mode 100644 NotifyMusic.plist create mode 100644 Tweak.xm create mode 100644 com.gilshahar7.notifymusic_0.0.1-29_iphoneos-arm.deb create mode 100644 control diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..d9cd4ac --- /dev/null +++ b/Makefile @@ -0,0 +1,14 @@ +ARCHS = armv7 arm64 +VALID_ARCHS = armv7 armv7s arm64 + +include theos/makefiles/common.mk + +TWEAK_NAME = NotifyMusic +NotifyMusic_FILES = Tweak.xm +NotifyMusic_FRAMEWORKS = CoreTelephony AudioToolbox UIKit +NotifyMusic_LIBRARIES = bulletin + +include $(THEOS_MAKE_PATH)/tweak.mk + +after-install:: + install.exec "killall -9 SpringBoard" diff --git a/NotifyMusic.plist b/NotifyMusic.plist new file mode 100644 index 0000000..10dc654 --- /dev/null +++ b/NotifyMusic.plist @@ -0,0 +1 @@ +{ Filter = { Bundles = ( "com.apple.springboard" ); }; } diff --git a/Tweak.xm b/Tweak.xm new file mode 100644 index 0000000..85df270 --- /dev/null +++ b/Tweak.xm @@ -0,0 +1,52 @@ +#import +#import +#import + +@interface MPUNowPlayingMetadata +@property (nonatomic,readonly) NSString * title; +@property (nonatomic,readonly) NSString * artist; +@end + +@interface MPUNowPlayingController +@property bool isPlaying; +@property (nonatomic,readonly) NSString * nowPlayingAppDisplayID; +@property (nonatomic,readonly) MPUNowPlayingMetadata * currentNowPlayingMetadata; +@end + + +@interface JBBulletinManager : NSObject ++(id)sharedInstance; +-(id)showBulletinWithTitle:(NSString *)title message:(NSString *)message bundleID:(NSString *)bundleID; +-(id)showBulletinWithTitle:(NSString *)title message:(NSString *)message bundleID:(NSString *)bundleID soundPath:(NSString *)soundPath; +-(id)showBulletinWithTitle:(NSString *)title message:(NSString *)message bundleID:(NSString *)bundleID soundID:(int)inSoundID; +-(id)showBulletinWithTitle:(NSString *)title message:(NSString *)message overrideBundleImage:(UIImage *)overridBundleImage; +-(id)showBulletinWithTitle:(NSString *)title message:(NSString *)message overrideBundleImage:(UIImage *)overridBundleImage soundPath:(NSString *)soundPath; +-(id)showBulletinWithTitle:(NSString *)title message:(NSString *)message overridBundleImage:(UIImage *)overridBundleImage soundID:(int)inSoundID; +-(id)showBulletinWithTitle:(NSString *)title message:(NSString *)message bundleID:(NSString *)bundleID hasSound:(BOOL)hasSound soundID:(int)soundID vibrateMode:(int)vibrate soundPath:(NSString *)soundPath attachmentImage:(UIImage *)attachmentImage overrideBundleImage:(UIImage *)overrideBundleImage; +@end + + + +%hook MPUNowPlayingController +static NSString *cachedTitle; +-(void)_updateCurrentNowPlaying{ +%orig; + + +double delayInSeconds = 0.5; +dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC)); +dispatch_after(popTime, dispatch_get_main_queue(), ^(void){ + +if(self.isPlaying && ([self.nowPlayingAppDisplayID isEqualToString:@"com.apple.Music"] || [self.nowPlayingAppDisplayID isEqualToString:@"com.spotify.client"]) && ![cachedTitle isEqualToString:self.currentNowPlayingMetadata.title]){ + +cachedTitle = [self.currentNowPlayingMetadata.title copy]; + + +[[objc_getClass("JBBulletinManager") sharedInstance] showBulletinWithTitle:self.currentNowPlayingMetadata.title message:self.currentNowPlayingMetadata.artist bundleID:self.nowPlayingAppDisplayID]; + + +} + +}); +} +%end diff --git a/com.gilshahar7.notifymusic_0.0.1-29_iphoneos-arm.deb b/com.gilshahar7.notifymusic_0.0.1-29_iphoneos-arm.deb new file mode 100644 index 0000000000000000000000000000000000000000..e329d3fc7c38c486c9d306a0db1fe9c6e2517c3e GIT binary patch literal 4864 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