forked from gilshahar7/NotifyMusic
		
	Updated for Version 1.2
-Added iOS 9 support -Added preference pane to disable the tweak on the lockscreen and displaying album name as the title of the banner -Added support to the folowing apps: SoundCloud, Saavn, VOX, Doppi and Tidal.
This commit is contained in:
		
							
								
								
									
										6
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								Makefile
									
									
									
									
									
								
							@ -1,14 +1,16 @@
 | 
			
		||||
ARCHS = armv7 arm64
 | 
			
		||||
VALID_ARCHS = armv7 armv7s arm64
 | 
			
		||||
 | 
			
		||||
include theos/makefiles/common.mk
 | 
			
		||||
include $(THEOS)/makefiles/common.mk
 | 
			
		||||
 | 
			
		||||
TWEAK_NAME = NotifyMusic
 | 
			
		||||
NotifyMusic_FILES = Tweak.xm
 | 
			
		||||
NotifyMusic_FRAMEWORKS = UIKit
 | 
			
		||||
NotifyMusic_FRAMEWORKS = UIKit MediaPlayer
 | 
			
		||||
NotifyMusic_LIBRARIES = bulletin
 | 
			
		||||
 | 
			
		||||
include $(THEOS_MAKE_PATH)/tweak.mk
 | 
			
		||||
 | 
			
		||||
after-install::
 | 
			
		||||
	install.exec "killall -9 SpringBoard"
 | 
			
		||||
SUBPROJECTS += notifymusicprefs
 | 
			
		||||
include $(THEOS_MAKE_PATH)/aggregate.mk
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										46
									
								
								Tweak.xm
									
									
									
									
									
								
							
							
						
						
									
										46
									
								
								Tweak.xm
									
									
									
									
									
								
							@ -1,8 +1,22 @@
 | 
			
		||||
#import <UIKit/UIKit.h>
 | 
			
		||||
 | 
			
		||||
@interface SBApplication
 | 
			
		||||
@end
 | 
			
		||||
 | 
			
		||||
@interface SpringBoard
 | 
			
		||||
+(SpringBoard *)sharedApplication;
 | 
			
		||||
-(SBApplication *)_accessibilityFrontMostApplication;
 | 
			
		||||
@end
 | 
			
		||||
 | 
			
		||||
@interface SBLockScreenManager
 | 
			
		||||
+(SBLockScreenManager *)sharedInstance;
 | 
			
		||||
-(BOOL)isUILocked;
 | 
			
		||||
@end
 | 
			
		||||
 | 
			
		||||
@interface MPUNowPlayingMetadata
 | 
			
		||||
	@property (nonatomic,readonly) NSString * title; 
 | 
			
		||||
	@property (nonatomic,readonly) NSString * artist;
 | 
			
		||||
	@property (nonatomic,readonly) NSString * album;
 | 
			
		||||
@end
 | 
			
		||||
 | 
			
		||||
@interface MPUNowPlayingController
 | 
			
		||||
@ -10,6 +24,7 @@
 | 
			
		||||
	@property (nonatomic,readonly) NSString * nowPlayingAppDisplayID;
 | 
			
		||||
	@property (nonatomic,readonly) MPUNowPlayingMetadata * currentNowPlayingMetadata;
 | 
			
		||||
	@property (nonatomic,readonly) UIImage * currentNowPlayingArtwork;
 | 
			
		||||
	@property (nonatomic,readonly) NSDictionary * currentNowPlayingInfo;
 | 
			
		||||
@end
 | 
			
		||||
 | 
			
		||||
@interface JBBulletinManager : NSObject
 | 
			
		||||
@ -26,22 +41,31 @@
 | 
			
		||||
%hook MPUNowPlayingController
 | 
			
		||||
	static NSString *cachedTitle;
 | 
			
		||||
	static NSString *artist;
 | 
			
		||||
	static NSString *album;
 | 
			
		||||
	-(void)_updateCurrentNowPlaying{
 | 
			
		||||
		%orig;
 | 
			
		||||
		NSString *settingsPath = @"/var/mobile/Library/Preferences/com.gilshahar7.notifymusicprefs.plist";
 | 
			
		||||
		NSMutableDictionary *prefs = [[NSMutableDictionary alloc] initWithContentsOfFile:settingsPath];
 | 
			
		||||
		BOOL enablewhilelocked = [[prefs objectForKey:@"enablewhilelocked"] boolValue];
 | 
			
		||||
		BOOL showalbumname = [[prefs objectForKey:@"showalbumname"] boolValue];
 | 
			
		||||
		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];
 | 
			
		||||
				if([self.currentNowPlayingMetadata.artist length] > 1){
 | 
			
		||||
					artist = [NSString stringWithFormat: @"\nBy: %@", self.currentNowPlayingMetadata.artist];
 | 
			
		||||
				}else{
 | 
			
		||||
					artist = @"";
 | 
			
		||||
				}
 | 
			
		||||
				if(self.currentNowPlayingArtwork != nil){
 | 
			
		||||
					[[objc_getClass("JBBulletinManager") sharedInstance] showBulletinWithTitle:@"Now Playing" message:[NSString stringWithFormat: @"%@%@", self.currentNowPlayingMetadata.title, artist] bundleID:self.nowPlayingAppDisplayID hasSound:false soundID:0 vibrateMode:0 soundPath:@"" attachmentImage:self.currentNowPlayingArtwork overrideBundleImage:nil];
 | 
			
		||||
				}else{
 | 
			
		||||
					[[objc_getClass("JBBulletinManager") sharedInstance] showBulletinWithTitle:@"Now Playing" message:[NSString stringWithFormat: @"%@%@", self.currentNowPlayingMetadata.title, artist] bundleID:self.nowPlayingAppDisplayID];
 | 
			
		||||
			if(![cachedTitle isEqualToString:self.currentNowPlayingInfo[@"kMRMediaRemoteNowPlayingInfoTitle"]]){
 | 
			
		||||
				cachedTitle = [self.currentNowPlayingInfo[@"kMRMediaRemoteNowPlayingInfoTitle"] copy];
 | 
			
		||||
				if((enablewhilelocked || (![[%c(SBLockScreenManager) sharedInstance] isUILocked])) && self.isPlaying && ([self.nowPlayingAppDisplayID isEqualToString:@"com.aspiro.TIDAL"] || [self.nowPlayingAppDisplayID isEqualToString:@"com.ondalabs.doppi"] || [self.nowPlayingAppDisplayID isEqualToString:@"com.coppertino.VoxMobile"] || [self.nowPlayingAppDisplayID isEqualToString:@"com.soundcloud.TouchApp"] || [self.nowPlayingAppDisplayID isEqualToString:@"com.Saavn.Saavn"] || [self.nowPlayingAppDisplayID isEqualToString:@"com.apple.Music"] || [self.nowPlayingAppDisplayID isEqualToString:@"com.spotify.client"] || [self.nowPlayingAppDisplayID isEqualToString:@"com.pandora"] || [self.nowPlayingAppDisplayID isEqualToString:@"com.rhapsody.iphone.Rhapsody3"] || [self.nowPlayingAppDisplayID isEqualToString:@"com.google.PlayMusic"] || [self.nowPlayingAppDisplayID isEqualToString:@"com.deezer.Deezer"] || [self.nowPlayingAppDisplayID isEqualToString:@"com.michaelclay.Cesium"])){
 | 
			
		||||
					artist = [NSString stringWithFormat: @"\n%@", self.currentNowPlayingInfo[@"kMRMediaRemoteNowPlayingInfoArtist"]];
 | 
			
		||||
					
 | 
			
		||||
					if([self.currentNowPlayingInfo[@"kMRMediaRemoteNowPlayingInfoAlbum"] length] > 1 && showalbumname){
 | 
			
		||||
							album = self.currentNowPlayingInfo[@"kMRMediaRemoteNowPlayingInfoAlbum"];
 | 
			
		||||
					}else{
 | 
			
		||||
							album = @"Now Playing";
 | 
			
		||||
					}
 | 
			
		||||
					if(self.currentNowPlayingArtwork != nil){
 | 
			
		||||
						[[objc_getClass("JBBulletinManager") sharedInstance] showBulletinWithTitle:album message:[NSString stringWithFormat: @"%@%@", self.currentNowPlayingInfo[@"kMRMediaRemoteNowPlayingInfoTitle"], artist] bundleID:self.nowPlayingAppDisplayID hasSound:false soundID:0 vibrateMode:0 soundPath:@"" attachmentImage:self.currentNowPlayingArtwork overrideBundleImage:nil];
 | 
			
		||||
					}else{
 | 
			
		||||
						[[objc_getClass("JBBulletinManager") sharedInstance] showBulletinWithTitle:album message:[NSString stringWithFormat: @"%@%@", self.currentNowPlayingInfo[@"kMRMediaRemoteNowPlayingInfoTitle"], artist] bundleID:self.nowPlayingAppDisplayID];
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		});
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										2
									
								
								control
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								control
									
									
									
									
									
								
							@ -1,7 +1,7 @@
 | 
			
		||||
Package: com.gilshahar7.notifymusic
 | 
			
		||||
Name: NotifyMusic
 | 
			
		||||
Depends: mobilesubstrate, net.limneos.libbulletin
 | 
			
		||||
Version: 1.0
 | 
			
		||||
Version: 1.2
 | 
			
		||||
Architecture: iphoneos-arm
 | 
			
		||||
Description: Creates a banner notification with song metadata when song is changed.
 | 
			
		||||
Maintainer: gilshahar7
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										14
									
								
								notifymusicprefs/Makefile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								notifymusicprefs/Makefile
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,14 @@
 | 
			
		||||
ARCHS = armv7 arm64
 | 
			
		||||
include $(THEOS)/makefiles/common.mk
 | 
			
		||||
 | 
			
		||||
BUNDLE_NAME = notifymusicprefs
 | 
			
		||||
notifymusicprefs_FILES = nmpRootListController.m
 | 
			
		||||
notifymusicprefs_INSTALL_PATH = /Library/PreferenceBundles
 | 
			
		||||
notifymusicprefs_FRAMEWORKS = UIKit
 | 
			
		||||
notifymusicprefs_PRIVATE_FRAMEWORKS = Preferences
 | 
			
		||||
 | 
			
		||||
include $(THEOS_MAKE_PATH)/bundle.mk
 | 
			
		||||
 | 
			
		||||
internal-stage::
 | 
			
		||||
	$(ECHO_NOTHING)mkdir -p $(THEOS_STAGING_DIR)/Library/PreferenceLoader/Preferences$(ECHO_END)
 | 
			
		||||
	$(ECHO_NOTHING)cp entry.plist $(THEOS_STAGING_DIR)/Library/PreferenceLoader/Preferences/notifymusicprefs.plist$(ECHO_END)
 | 
			
		||||
							
								
								
									
										24
									
								
								notifymusicprefs/Resources/Info.plist
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								notifymusicprefs/Resources/Info.plist
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,24 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
 | 
			
		||||
<plist version="1.0">
 | 
			
		||||
<dict>
 | 
			
		||||
	<key>CFBundleDevelopmentRegion</key>
 | 
			
		||||
	<string>English</string>
 | 
			
		||||
	<key>CFBundleExecutable</key>
 | 
			
		||||
	<string>notifymusicprefs</string>
 | 
			
		||||
	<key>CFBundleIdentifier</key>
 | 
			
		||||
	<string>com.gilshahar7.notifymusicprefs</string>
 | 
			
		||||
	<key>CFBundleInfoDictionaryVersion</key>
 | 
			
		||||
	<string>6.0</string>
 | 
			
		||||
	<key>CFBundlePackageType</key>
 | 
			
		||||
	<string>BNDL</string>
 | 
			
		||||
	<key>CFBundleShortVersionString</key>
 | 
			
		||||
	<string>1.0.0</string>
 | 
			
		||||
	<key>CFBundleSignature</key>
 | 
			
		||||
	<string>????</string>
 | 
			
		||||
	<key>CFBundleVersion</key>
 | 
			
		||||
	<string>1.0</string>
 | 
			
		||||
	<key>NSPrincipalClass</key>
 | 
			
		||||
	<string>nmpRootListController</string>
 | 
			
		||||
</dict>
 | 
			
		||||
</plist>
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								notifymusicprefs/Resources/NotifyMusic@2x.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								notifymusicprefs/Resources/NotifyMusic@2x.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 5.3 KiB  | 
							
								
								
									
										41
									
								
								notifymusicprefs/Resources/Root.plist
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								notifymusicprefs/Resources/Root.plist
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,41 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
 | 
			
		||||
<plist version="1.0">
 | 
			
		||||
<dict>
 | 
			
		||||
	<key>items</key>
 | 
			
		||||
	<array>
 | 
			
		||||
		<dict>
 | 
			
		||||
			<key>cell</key>
 | 
			
		||||
			<string>PSGroupCell</string>
 | 
			
		||||
			<key>label</key>
 | 
			
		||||
			<string>NotifyMusic</string>
 | 
			
		||||
		</dict>
 | 
			
		||||
		<dict>
 | 
			
		||||
			<key>cell</key>
 | 
			
		||||
			<string>PSSwitchCell</string>
 | 
			
		||||
			<key>default</key>
 | 
			
		||||
			<false/>
 | 
			
		||||
			<key>defaults</key>
 | 
			
		||||
			<string>com.gilshahar7.notifymusicprefs</string>
 | 
			
		||||
			<key>key</key>
 | 
			
		||||
			<string>enablewhilelocked</string>
 | 
			
		||||
			<key>label</key>
 | 
			
		||||
			<string>Enable while locked</string>
 | 
			
		||||
		</dict>
 | 
			
		||||
		<dict>
 | 
			
		||||
			<key>cell</key>
 | 
			
		||||
			<string>PSSwitchCell</string>
 | 
			
		||||
			<key>default</key>
 | 
			
		||||
			<false/>
 | 
			
		||||
			<key>defaults</key>
 | 
			
		||||
			<string>com.gilshahar7.notifymusicprefs</string>
 | 
			
		||||
			<key>key</key>
 | 
			
		||||
			<string>showalbumname</string>
 | 
			
		||||
			<key>label</key>
 | 
			
		||||
			<string>Show album name in title</string>
 | 
			
		||||
		</dict>
 | 
			
		||||
	</array>
 | 
			
		||||
	<key>title</key>
 | 
			
		||||
	<string>NotifyMusic</string>
 | 
			
		||||
</dict>
 | 
			
		||||
</plist>
 | 
			
		||||
							
								
								
									
										21
									
								
								notifymusicprefs/entry.plist
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								notifymusicprefs/entry.plist
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,21 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
 | 
			
		||||
<plist version="1.0">
 | 
			
		||||
<dict>
 | 
			
		||||
	<key>entry</key>
 | 
			
		||||
	<dict>
 | 
			
		||||
		<key>bundle</key>
 | 
			
		||||
		<string>notifymusicprefs</string>
 | 
			
		||||
		<key>cell</key>
 | 
			
		||||
		<string>PSLinkCell</string>
 | 
			
		||||
		<key>detail</key>
 | 
			
		||||
		<string>nmpRootListController</string>
 | 
			
		||||
		<key>icon</key>
 | 
			
		||||
		<string>NotifyMusic.png</string>
 | 
			
		||||
		<key>isController</key>
 | 
			
		||||
		<true/>
 | 
			
		||||
		<key>label</key>
 | 
			
		||||
		<string>NotifyMusic</string>
 | 
			
		||||
	</dict>
 | 
			
		||||
</dict>
 | 
			
		||||
</plist>
 | 
			
		||||
							
								
								
									
										5
									
								
								notifymusicprefs/nmpRootListController.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								notifymusicprefs/nmpRootListController.h
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,5 @@
 | 
			
		||||
#import <Preferences/PSListController.h>
 | 
			
		||||
 | 
			
		||||
@interface nmpRootListController : PSListController
 | 
			
		||||
 | 
			
		||||
@end
 | 
			
		||||
							
								
								
									
										13
									
								
								notifymusicprefs/nmpRootListController.m
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								notifymusicprefs/nmpRootListController.m
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,13 @@
 | 
			
		||||
#include "nmpRootListController.h"
 | 
			
		||||
 | 
			
		||||
@implementation nmpRootListController
 | 
			
		||||
 | 
			
		||||
- (NSArray *)specifiers {
 | 
			
		||||
	if (!_specifiers) {
 | 
			
		||||
		_specifiers = [[self loadSpecifiersFromPlistName:@"Root" target:self] retain];
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return _specifiers;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@end
 | 
			
		||||
		Reference in New Issue
	
	Block a user