WhatsApp / stickers

This repository contains the iOS and Android sample apps and API for creating third party sticker packs for WhatsApp.
Other
2.74k stars 1.7k forks source link

AppStore rejection + Webapp solution #278

Closed c4b4d4 closed 5 years ago

c4b4d4 commented 5 years ago

I've submitted an app a few days ago to the App Store and instantly got my binary rejected because: SPAM

I decided to make the app a mini-game so it's not just a Sticker app, but a mini-game to play and unlock the stickers, but I've got the same reason "Spam". I MADE AN ENTIRE GAME FOR IT AND STILL SAY THERE ARE SIMILAR APPS THAT DO THE SAME AS MINE. I'm starting to believe Apple doesn't want WhatsApp stickers on their platforms. I submitted an appeal, but I doubt it will get accepted.

Since the protocol for sending Stickers is via whatsapp:// is it possible to make a webapp version of the framework so we could send Stickers through a website instead of a native app? I believe it's possible, anyone has a suggestion to achieve this?

Zandor300 commented 5 years ago

For your AppStore rejection, please continue that conversation over at https://github.com/WhatsApp/stickers/issues/230

JobMoll commented 5 years ago

I just found a way to do it but not sure if it's legal xD

JobMoll commented 5 years ago

I just found a way to do it but not sure if it's legal xD

Just found out it is legal kinda (i think) xD

c4b4d4 commented 5 years ago

I just found a way to do it but not sure if it's legal xD

Just found out it is legal kinda (i think) xD

What solution are you talking about?

I'm trying to do a JavaScript code in order to send Sticker Packs from the browser, but I haven't made it work. This is what I'm doing:

<script>
document.addEventListener("copy", function(e) {
  e.clipboardData.setData("net.whatsapp.third-party.sticker-pack", JSON); //JSON is the string with all the sticker info
  e.preventDefault();
});

function sendToWhatsApp() {
  var sel = document.getSelection();
  var range = document.createRange();
  range.selectNodeContents(document.body);
  sel.removeAllRanges();
  sel.addRange(range);
  document.execCommand("copy");
  window.getSelection().removeAllRanges();

  location.href = "whatsapp://stickerPack";
}
</script>
<button onclick='sendToWhatsApp()'>Send</button>

But I keep getting:

There's a problem with this sticker pack and it can't be added to WhatsApp.

Whenever it launches WhatsApp. Has anyone here tried something similar?

JobMoll commented 5 years ago

Check your email pls

Edit: https://apps.mollup.com/meme-sticker-ftw-for-whatsapp/

Can somebody test if you can download this on your device?

ranrinc commented 5 years ago

@JobMoll it wont work since all ipa need to be signed in order to install on your device. Its an ol trick that wont work. Tested and it stop after download...

JobMoll commented 5 years ago

@ranrinc Hmm that sucks...

frodfigu commented 5 years ago

I just found a way to do it but not sure if it's legal xD

Just found out it is legal kinda (i think) xD

What solution are you talking about?

I'm trying to do a JavaScript code in order to send Sticker Packs from the browser, but I haven't made it work. This is what I'm doing:

<script>
document.addEventListener("copy", function(e) {
  e.clipboardData.setData("net.whatsapp.third-party.sticker-pack", JSON); //JSON is the string with all the sticker info
  e.preventDefault();
});

function sendToWhatsApp() {
  var sel = document.getSelection();
  var range = document.createRange();
  range.selectNodeContents(document.body);
  sel.removeAllRanges();
  sel.addRange(range);
  document.execCommand("copy");
  window.getSelection().removeAllRanges();

  location.href = "whatsapp://stickerPack";
}
</script>
<button onclick='sendToWhatsApp()'>Send</button>

But I keep getting:

There's a problem with this sticker pack and it can't be added to WhatsApp.

Whenever it launches WhatsApp. Has anyone here tried something similar?

Some news about your method? Seems to be work because the app in iOS only copy the JSON converted object into whatsapp using the url scheme whatsapp://stickerPack

Are you converted your images to base64 encoding?

c4b4d4 commented 5 years ago

I just found a way to do it but not sure if it's legal xD

Just found out it is legal kinda (i think) xD

What solution are you talking about? I'm trying to do a JavaScript code in order to send Sticker Packs from the browser, but I haven't made it work. This is what I'm doing:

<script>
document.addEventListener("copy", function(e) {
  e.clipboardData.setData("net.whatsapp.third-party.sticker-pack", JSON); //JSON is the string with all the sticker info
  e.preventDefault();
});

function sendToWhatsApp() {
  var sel = document.getSelection();
  var range = document.createRange();
  range.selectNodeContents(document.body);
  sel.removeAllRanges();
  sel.addRange(range);
  document.execCommand("copy");
  window.getSelection().removeAllRanges();

  location.href = "whatsapp://stickerPack";
}
</script>
<button onclick='sendToWhatsApp()'>Send</button>

But I keep getting:

There's a problem with this sticker pack and it can't be added to WhatsApp.

Whenever it launches WhatsApp. Has anyone here tried something similar?

Some news about your method? Seems to be work because the app in iOS only copy the JSON converted object into whatsapp using the url scheme whatsapp://stickerPack

Are you converted your images to base64 encoding?

This won't work. My method does not work at all. The iOS app converts the JSON into low-level data that cannot be made but only within a native app. So we need a native app to do it.

frodfigu commented 5 years ago

Low level data? Uhm seems that this method only converts the JSON to a simple object. Like JSON.parse

Look the return value: https://developer.apple.com/documentation/foundation/jsonserialization/1413636-data

frodfigu commented 5 years ago

Look this method to parse JSON object.

https://www.w3schools.com/js/js_json_parse.asp

c4b4d4 commented 5 years ago

Low level data? Uhm seems that this method only converts the JSON to a simple object. Like JSON.parse

Look the return value: https://developer.apple.com/documentation/foundation/jsonserialization/1413636-data

As @sf-lee said in another thread (https://github.com/WhatsApp/stickers/issues/230)

WhatsApp on iOS does not read the JSON in plaintext. It reads the JSON in form of a data object after serialization. No "user land" app can create such "low-level" object so that's why you will need an app to wrap it.

But I kinda have my doubts, because I made a website that reads what the app saves in the clipboard and it's just plain text.

gbougakov commented 5 years ago

I think it IS a low-level object.

if #available(iOS 10.0, *) {
            pasteboard.setItems([[PasteboardStickerPackDataType: dataToSend]], options: [UIPasteboardOption.localOnly: true, UIPasteboardOption.expirationDate: NSDate(timeIntervalSinceNow: PasteboardExpirationSeconds)])
        }

PasteboardStickerPackDataType is that low-level class. If you paste it in the browser, it’s text, but for apps it’s a low level object

wegylexy commented 5 years ago

You still need an app of some sort like http://timtim.hk/wastickers.deprecated/

wegylexy commented 5 years ago

Copying plain text will work via PasteCoder which can coerce the UTI type (not MIME type specified in DataTransfer.setData(format, data)) to net.whatsapp.third-party.sticker-pack, as demoed at http://timtim.hk/wastickers.deprecated/ When you have the JSON in the right UTI type, opening whatsapp://stickerPack will work.

a-kao commented 5 years ago

I've submitted an app a few days ago to the App Store and instantly got my binary rejected because: SPAM

I decided to make the app a mini-game so it's not just a Sticker app, but a mini-game to play and unlock the stickers, but I've got the same reason "Spam". I MADE AN ENTIRE GAME FOR IT AND STILL SAY THERE ARE SIMILAR APPS THAT DO THE SAME AS MINE. I'm starting to believe Apple doesn't want WhatsApp stickers on their platforms. I submitted an appeal, but I doubt it will get accepted.

Since the protocol for sending Stickers is via whatsapp:// is it possible to make a webapp version of the framework so we could send Stickers through a website instead of a native app? I believe it's possible, anyone has a suggestion to achieve this?

Hey Carlos, do you mind emailing me your app's app name and application ID? It sounds like your application is unique and distinct, and this would be useful for us to bring up with Apple as we continue to engage with them. My email is akao@whatsapp.com.

H4ad commented 5 years ago

Copying plain text will work via PasteCoder which can coerce the UTI type (not MIME type specified in DataTransfer.setData(format, data)) to net.whatsapp.third-party.sticker-pack, as demoed at http://timtim.hk/wastickers.deprecated/ When you have the JSON in the right UTI type, opening whatsapp://stickerPack will work.

I followed your suggestion and created a plugin for the cordova that receives a JSON with the information of the stickers, copies to the Pasteboard and opens the URL whatsapp://stickerPack. The problem is that for now, only works with iOS, for Android I found another solution but it is not very good although it works.

wegylexy commented 5 years ago

Another example for iOS: https://shkpclubstickers.com

MarvinJWendt commented 5 years ago

Hey, This Issue seems to be inactive. To keep things organized I will close this for now. If this Issue is still relevant, don't hesitate to drop a comment and I will reopen it if necessary.

Sincerely, Marvin Wendt

piscespieces commented 2 years ago

Did anyone found a clear solution to this?

gstorelli commented 2 years ago

Copying plain text will work via PasteCoder which can coerce the UTI type (not MIME type specified in DataTransfer.setData(format, data)) to net.whatsapp.third-party.sticker-pack, as demoed at http://timtim.hk/wastickers.deprecated/ When you have the JSON in the right UTI type, opening whatsapp://stickerPack will work.

I followed your suggestion and created a plugin for the cordova that receives a JSON with the information of the stickers, copies to the Pasteboard and opens the URL whatsapp://stickerPack. The problem is that for now, only works with iOS, for Android I found another solution but it is not very good although it works.

Could you please mention the two ways you found?

H4ad commented 2 years ago

@gstorelli I created a cordova plugin, not sure if it still works, but you can read the code to get an idea of how to implement in your stack.

Repo: https://github.com/Wiseonesoft/cordova-whatsapp-sticker-plugin