[Source] Spotify hack for iOS (Mobile Substrate)

I no longer develop my own spotify hack called SpotiHack so i share my source code

FULL SOURCE CODE DOWNLOAD NOW AVALIABLE!:
You can use my source code to update the tweak, compile it and install it. don't forget to go to settings and enable the hacks:)

Source code preview:
tweak.xm

#import <Foundation/Foundation.h>
#define PLIST_PATH @"/var/mobile/Library/Preferences/spotihacks.plist"

inline bool GetPrefBool(NSString *key)
{
return [[[NSDictionary dictionaryWithContentsOfFile:PLIST_PATH] valueForKey:key] boolValue];
}

//---------- Allow seeking ----------//
%hook SPTPlayerRestrictions
-(bool)disallowSeeking
{
        if(GetPrefBool(@"kSeeking")) //1 seeking
        {
               return false;
        }
        return %orig;
}

-(id)disallowSeekingReasons
{
        return NULL;
}

//---------- Allow skipping ----------//
-(id)disallowSkippingToNextTrackReasons
{
        if(GetPrefBool(@"kSkipping")) //2 skipping
        {
               return NULL;
        }
        return %orig;
}

-(id)disallowSkippingToPreviousTrackReasons
{
        if(GetPrefBool(@"kSkipping")) //2 skipping
        {
               return NULL;
        }
        return %orig;
}

-(void)setDisallowSkippingToPreviousTrackReasons:(id)fp8
{
        if(GetPrefBool(@"kSkipping")) //2 skipping
        {
               fp8 = NULL;
        }
        %orig(fp8);
}

//---------- Allow peeking ----------//
-(bool)disallowPeekingAtNextTrack
{
        if(GetPrefBool(@"kPeeking")) //5 Peeking
        {
               return false;
        }
        return %orig;
}

-(id)disallowPeekingAtNextTrackReasons
{
        if(GetPrefBool(@"kPeeking")) //5 Peeking
        {
               return NULL;
        }
        return %orig;
}

//---------- Allow TogglingShuffle ----------//
-(bool)disallowTogglingShuffle
{
        if(GetPrefBool(@"kTogglingShuffle")) //3 TogglingShuffle
        {
               return false;
        }
        return %orig;
}

-(id)disallowTogglingShuffleReasons
{
        if(GetPrefBool(@"kTogglingShuffle")) //3 TogglingShuffle
        {
               return NULL;
        }
        return %orig;
}
%end

%hook SPTNowPlayingModel
-(bool)disallowTogglingShuffle
{
        if(GetPrefBool(@"kTogglingShuffle")) //3 TogglingShuffle
        {
               return false;
        }
        return %orig;
}
       
//---------- Allow peeking ----------//
-(bool)disallowPeekingAtNextTrack
{
        if(GetPrefBool(@"kPeeking")) //5 Peeking
        {
               return false;
        }
        return %orig;
}
%end

//---------- Allow seeking 2 ----------//
%hook SPTNowPlayingTrackPosition
-(bool)disallowSeeking
{
        if(GetPrefBool(@"kSeeking")) //1 seeking
        {
               return false;
        }
        return %orig;
}
%end

//---------- Disable Shuffle ----------//
%hook ShuffleFeatureImplementation
-(id)baseUI
{
        if(GetPrefBool(@"kNoShuffle")) //4 NoShuffle
        {
               return NULL;
        }
        return %orig;
}
%end

%hook SPTActionButton
-(void)setFrame:(CGRect)fp8
{
        if(GetPrefBool(@"kNoShuffle")) //4 NoShuffle
        {
              
        }
        %orig;
}
%end

//---------- No ads ----------//
%hook FBAdView
-(void)setFrame:(CGRect)fp8
{
}
%end

%hook AdController
-(void)playAdFromLink:(id)fp8
{
        fp8 = NULL;
        %orig(fp8);
}
%end

%hook SPTAdsManager
-(void)adsViewModel:(id)arg1 shouldPlayAds:(bool)arg2
{
        arg1 = NULL;
        arg2 = false;
}
%end

//---------- No jailbreak detection ----------//
%hook MATTracker
-(bool)shouldDetectJailbroken
{
        return false;
}
%end

%hook CSComScore
+(bool)isJailbroken
{
        return false;
}
%end

%hook CSCore
+(bool)isJailBroken
{
        return false;
}
%end

%hook GADDevice
+(bool)isJailbroken
{
        return false;
}
%end

info.plist

<?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>cell</key>
               <string>PSLinkCell</string>
               <key>icon</key>
               <string>icon.png</string>
               <key>label</key>
               <string>SpotiHacks (Spotify 2.2.0)</string>
        </dict>
        <key>items</key>
        <array>
        <dict>
                       <key>cell</key>
                       <string>PSGroupCell</string>
                       <key>label</key>
                       <string>Allow you to seeking</string>   
               </dict>
               <dict>
                       <key>cell</key>
                       <string>PSSwitchCell</string>
                       <key>default</key>
                       <false/>
                       <key>defaults</key>
                       <string>spotihacks</string>      
                       <key>key</key>
                       <string>kSeeking</string>     
                       <key>label</key>
                       <string>Enable seeking</string>      
               </dict>
               <dict>
                       <key>cell</key>
                       <string>PSGroupCell</string>
                       <key>label</key>
                       <string>Skip music</string>   
               </dict>
               <dict>
                       <key>cell</key>
                       <string>PSSwitchCell</string>
                       <key>default</key>
                       <false/>
                       <key>defaults</key>
                       <string>spotihacks</string>      
                       <key>key</key>
                       <string>kSkipping</string>     
                       <key>label</key>
                       <string>Enable skipping</string>      
               </dict>
               <dict>
                       <key>cell</key>
                       <string>PSGroupCell</string>
                       <key>label</key>
                       <string>Can Toggling Shuffle</string>   
               </dict>
               <dict>
                       <key>cell</key>
                       <string>PSSwitchCell</string>
                       <key>default</key>
                       <false/>
                       <key>defaults</key>
                       <string>spotihacks</string>      
                       <key>key</key>
                       <string>kTogglingShuffle</string>     
                       <key>label</key>
                       <string>Enable Toggling Shuffle</string>      
               </dict>
               <dict>
                       <key>cell</key>
                       <string>PSGroupCell</string>
                       <key>label</key>
                       <string>Disable Shuffle if you don't like it</string>   
               </dict>
               <dict>
                       <key>cell</key>
                       <string>PSSwitchCell</string>
                       <key>default</key>
                       <false/>
                       <key>defaults</key>
                       <string>spotihacks</string>      
                       <key>key</key>
                       <string>kNoShuffle</string>     
                       <key>label</key>
                       <string>No Shuffle</string>      
               </dict>
               <dict>
                       <key>cell</key>
                       <string>PSGroupCell</string>
                       <key>label</key>
                       <string>Allow you to peeking</string>   
               </dict>
               <dict>
                       <key>cell</key>
                       <string>PSSwitchCell</string>
                       <key>default</key>
                       <false/>
                       <key>defaults</key>
                       <string>spotihacks</string>      
                       <key>key</key>
                       <string>kPeeking</string>     
                       <key>label</key>
                       <string>Enable peeking</string>      
               </dict>
               <dict>
                       <key>cell</key>
                       <string>PSGroupCell</string>
                       <key>label</key>
                       <string>After you apply settings, please respring your device.</string>   
               </dict>
               <dict>
        <key>cell</key>
        <string>PSButtonCell</string>
        <key>label</key>
        <string>Respring</string>
        <key>action</key>
        <string>respring</string>
               </dict>
               <dict>
                       <key>action</key>
                       <string>link</string>
                       <key>cell</key>
                       <string>PSButtonCell</string>
                       <key>icon</key>
                       <string>iOSGods.png</string>
                       <key>label</key>
                       <string>Visit iOSgods</string>
               </dict>
               <dict>
                       <key>cell</key>
                       <string>PSGroupCell</string>
                       <key>footerText</key>
                       <string>Brought to you by evildog1 - iosgods.com</string>
               </dict>
              
        </array>
        <key>title</key>
        <string>SpotiHacks (Spotify 2.2.0)</string>
</dict>
</plist>


Comments

Popular Posts

VMOS Pro - FREE Custom ROMs without VIP | GMS, ROOT, Xposed | Android 4.4.4, 5.1.1, 7.1.2, 9.0 ROMs

List of Android Virtual Machine apps for Android devices