Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Bug] Ads in app #422

Open
3 tasks done
Exit24 opened this issue Oct 2, 2024 · 13 comments
Open
3 tasks done

[Bug] Ads in app #422

Exit24 opened this issue Oct 2, 2024 · 13 comments
Labels
bug Something isn't working

Comments

@Exit24
Copy link

Exit24 commented Oct 2, 2024

Is this issue appropriate?

  • I have read the document in its entirety

Is this issue unique to EeveeSpotify?

  • I was unable to reproduce my issue using the stock Spotify app

Have you searched the existing issues?

  • This is a unique issue

Describe the bug.

Is anyone else getting an advertisement on the main screen in the app now? I can easily close it by hitting the X button, but it comes back every time I open the app.

Example:
https://imgur.com/a/n96W4HO

@Exit24 Exit24 added the bug Something isn't working label Oct 2, 2024
@whoeevee
Copy link
Owner

whoeevee commented Oct 2, 2024

i believe closing the ad after app launch is not a big problem
you can also try enabling overwrite configuration

@whoeevee whoeevee closed this as completed Oct 2, 2024
@ChipSkylark37
Copy link

Isn't the point of this application not to have Ads? Amongst other features of course.

Yes it's not a big issue if you can X out of it, but how can we help to diagnose /why/ they are there and maybe we can figure out how to block them better as there's a number of other 'closed' issues reporting the same thing.

Simply closing the issue doesnt seem right.

@whoeevee
Copy link
Owner

whoeevee commented Oct 3, 2024

yeah, the main point of EeveeSpotify is to make the app think you have a premium subscription and unlock some features like shuffle, free listening, etc. it also disables ads — you can listen to tracks freely. however, some users may see an ads banner on the homepage occasionally. this banner is easily closable, and I believe it’s not something that really needs to be fixed or causes much inconvenience. you can try enabling overwrite configuration option, which may help as it replaces the remote configuration from server (containing many UI/UX parameters) with the dumped premium one

however, to fully resolve this issue, i would need to investigate spotify ad logic, see exactly how the app determines to show ads, etc., which i’m not currently doing. i don’t even get these banners myself — definitely not on app launch. might see one once every few months, which I just close

i think I’ll leave the issue open; maybe someday someone will open a pull request with a fix for these ads if interested. i hope you understand my point of view regarding this

@whoeevee whoeevee reopened this Oct 3, 2024
@ChipSkylark37
Copy link

Understood - I can imagine its very difficult to troubleshoot a 'bug' that only displays every few months, or more frequently for others, and sporadically at that. For

Is there anything we can do to help diagnose? I don't have any real coding experience, but if we can replicate it and see what IP it's reaching out to (maybe a specific 'ad server') that can help to block it?

Personally, I run Pi-Hole at home which would log what IPs the device is reaching out to.

@asdfzxcvbn
Copy link
Collaborator

asdfzxcvbn commented Oct 17, 2024

eevee is right. all eeveespotify does is make spotify think you have premium (and add some features), and you can tell it works with features like unlimited skips and such. a minor banner ad that doesn't even show up for him often isn't too big of a deal, simply close the ad

also duplicate of #270

@asdfzxcvbn asdfzxcvbn closed this as not planned Won't fix, can't repro, duplicate, stale Oct 17, 2024
@whoeevee
Copy link
Owner

some updates: recently i started constantly getting ads on the home page, so looked into it. turned out that spotify has very complicated ads logic, most of which is disabled if the ads value is false in product state. ads on the home screen were still shown and somewhat broken due to layout, which is received dynamically from the server. therefore, I need to remove them in a similar way to how I enabled liked songs. however, the ads are gone now. I’ll probably implement this solution as soon as they start appearing again

@whoeevee whoeevee pinned this issue Nov 26, 2024
@ERROR4051987
Copy link

I haven't gotten ads for a week but now they're back on the home screen in full force. i'm on v5.8.2

@ChipSkylark37
Copy link

I've also recently (last night) had ads playing in between songs when casting to a Google Home Max.

I know sometimes when casting it does a "handoff" to that device and that device streams direct from the service which could introduce ads. I'm unsure if that's the case or not.

@asdfzxcvbn
Copy link
Collaborator

basically, the ad is delivered to the client via a protobuf response. the client sets up the UI for the ad (UICollectionView) and there's no effective way to hide it. it's all implemented in swift too, which is known for being extremely difficult if not downright impossible to hook. a theoretical solution would be deserializing the protobuf response, modifying it, then replacing the response. however it's too much effort and likely won't be implemented any time soon. will leave open for now

@asdfzxcvbn asdfzxcvbn reopened this Dec 12, 2024
@whoeevee
Copy link
Owner

yeah, the ads are delivered to the client alongside the entire home screen layout, it’s DAC (probably representing Dynamic App Component). unlike HUB components, which are used on the artist page, the home screen layout uses protobuf and more complicated logic, with almost everything written in swift, which is very difficult to hook and play with

it’s UIKit, though. DACComponentsImpl.HomePageCollectionView is a UICollectionView with layout and dataSource, implementing all the UIKit stuff. you can’t just remove or hide the ad, since there are a lot of components that have calculated frame/size/etc., and it would result in an empty, undismissable space instead of ads. the components deserialization, layout preparation, interactions, services, etc., are all written in swift, happening with swift methods and swift objects as instance variables. i’ve tried to hook some, remove the ad component, but didn’t succeed much, and it would require a lot of effort if it’s even possible

another option would be modifying the server response, but it seems unrealistic, since you would have to recreate all the protobuf structures, like hundreds, in order to deserialize/remove them, and it would break any time spotify decides to add a new component or change something

so, the only solution so far is to simply close the ad. yeah, it’ll appear again when the layout reloads (every ios-feature-homepagedacpage.min_seconds_away_from_home_before_reload, 300 by default), but it’s still temporary. i started getting the ad constantly yesterday, and during testing for a few hours, it just disappeared, and i don’t have it today

@ChipSkylark37
Copy link

Forgive me because this is way over my head, but just curious if it is even remotely possible:

  • The 'Hide Distracting Content' option inside of Safari works to hide certain elements on a persistent basis for web pages. Nothing like this could be used inside Spotify, right? Assuming that works entirely different than this.

@asdfzxcvbn
Copy link
Collaborator

Forgive me because this is way over my head, but just curious if it is even remotely possible:

  • The 'Hide Distracting Content' option inside of Safari works to hide certain elements on a persistent basis for web pages. Nothing like this could be used inside Spotify, right? Assuming that works entirely different than this.

nope

@Richard-NDC
Copy link
Contributor

i have a premium account so maybe your team can fix it?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

6 participants