Closed somefakeuser closed 9 years ago
Não posso fazer testes agora, mas pode ser um BUG sim. Você enviou a notificação indicando um "largeIcon"?
No link abaixo tem uma discussão sobre algo semelhante ao seu problema: http://stackoverflow.com/questions/13847297/notificationcompat-4-1-setsmallicon-and-setlargeicon
Meu módulo utiliza o icone do app "appicon" como sendo o ícone pequeno para notificações.
Se descobrir algo novo me retorne. Obrigado!
Em anexo segue uma nova versão do meu módulo. Agora você pode enviar uma notificação push Android e especificar um "smallIcon" para garantir o resultado esperado.
Também consta nesta versão a compatibilidade com o Titanium SDK 3.4 para iOS, inclusão de recursos para notificações interativas do iOS8, além de pequenas correções.
Esta nova versão estará disponível em breve na loja de módulos da Appcelerator.
Espero que atenda suas necessidades.
Obrigado!
[ attachment removed ]
Olá Arley,
Muito obrigado!
Será muito útil.
Só ficará faltando personalizar o tempo da piscada da luz e a cor do Led.
Estava quase desistindo do recurso de notificação do módulo. Estava usando só para registrar e administrar as mensagens.
Cheguei até a olhar os xmls do modulo para tentar ver quais eram os nomes dos serviços (intents)
Vou voltar a usar suas notificações. Bem mais simples.
Mais uma vez, muito obrigado.
Abs
Olá Arley,
Estou desenvolvendo um app multiplataforma, portanto, agora estou focando IOS. Depois de muitos testes, descobri que seu módulo só está compilando no Android. Quando tento fazer um teste com o módulo no iPhone (device e simulator) dá um erro.
Para te ajudar, abri o xcode e tentei compilar. O erro que retornou foi este:
Abs,
Esta mensagem de erro de compilação é devida a um BUG do Titanium Studio. A forma de contornar este problema está documentada em meu código de exemplo.
//Workaround to Titanium Mobile issue #17030
//https://jira.appcelerator.org/browse/TIMOB-17030
if (!OS_ANDROID) {
var issue17030 = Ti.Network.registerForPushNotifications;
var issue17030iOS8 = Ti.App.iOS.registerUserNotificationSettings;
}
Basta incluir este trecho de código em qualquer parte do seu projeto.
Arley,
Funcionou. Eu só tinha a primeira linha.
Muito obrigado.
Abs.
Olá Arley,
Tudo bem?
Seguinte, quando fui publicar para a loja do android deu um problema de incompatibilidade de pakage. Reclama que o pacote do google play services do seu módulo 1.6 está diferente do ti.map 2.2.2. Ele sugere copiar o google play services de um diretório para o outro. Fiz isso mas dá erro na compilação
Sabe como posso contornar isso?
Abs.
Desculpe pela demora no retorno. Pretendo liberar uma versão corrigida ainda hoje.
Entro em contato.
Muito Obrigado Arley!
O problema foi resolvido finalmente! Pode utilizar a versão do módulo PushClient em anexo. Lembre de fazer um "clean" em seu projeto antes de compilar novamente (após atualizar o módulo).
Qualquer dúvida ou problema me retorne.
Obrigado!
Arley
[ attachment removed ]
Olá Arley,
Funcionou perfeitamente!
Muito obrigado.
Existe alguma previsão de colocar o tempo e cor da luz que pisca no Android? A piscada está rápida demais.
Exemplo:
notification.ledARGB = Color.BLUE;
notification.ledOnMS = 1000;
notification.ledOffMS = 300;
E quando tento fazer acho que o seu sobrescreve. Parece besteira, mas é importante.
Mais uma vez, muito obrigado pelo suporte.
Abs.
Experimente esta nova versão em anexo. Fiz a inclusão das configurações para a cor e brilho da luz de notificação conforme solicitado.
Me retorne se estiver funcionando como o esperado.
Atenciosamente,
Arley
[ attachment removed ]
Perfeito Arley! Quais são os campos? Mesmos nomes que te passei? Abs.
Sim, mesmos nomes. Essa informação dos nomes foi incluída no código de exemplo do Android.
Funcionou para você?
Olá Arley,
Estava testando para ver se era algum problema meu, mas não consegui.
Meu payload (PHP):
'alert' => $message,
"title" => $title,
"smallIcon" => "alert_icon",
"lights" => true,
"vibrate" => true,
"notificationId" => 1,
"ledARGB" => hexdec("FFff0000"),
"ledOnMS" => 2000,
"ledOffMS" => 2000
Ví na documentação que o ledARGB tem umas constantes. Não sei se é este o problema. A piscada da luz também continua a mesma. Meu payload está errado?
Abs.
Para o atributo "ledARGB" você não precisa de nada especial... pode usar desde "red" (nome das cores), até string com "#ffff0000".
Para os atributos "ledOnMS" e "ledOffMS" é realmente apenas um valor inteiro representando o tempo em milissegundos como você fez.
Vou fazer mais alguns testes aqui também. Qualquer novidade me retorne.
Obrigado!
Fala Arley,
Comentei da cor porque ví um exemplo usando "Color.Blue". Troquei o parametro para "red" e mesmo assim não funcionou.
As variáveis estão chegando no aplicativo.
eventCallback:{"type":"PushClient_Callback","source":{"bubbleParent":true,"apiName":"Ti.Module","invocationAPIs":[],"_events":{"PushClient_Success":{},"PushClient_Error":{},"PushClient_Callback":{}}},"data":{"notificationId":"1","title":"\"teste de titulo\"","smallIcon":"alert_icon","collapse_key":"do_not_collapse","alert":"\"teste de mensagem\"","gcm":{"handlerId":0,"messageType":"gcm"},"ledOnMS":"2000","vibrate":"true","from":"1076905688673","ledARGB":"red","ledOffMS":"2000"},"mode":3,"bubbles":false,"success":true,"code":0,"cancelBubble":false}
Abs.
Encontrei um bug. Segue em anexo uma nova versão que funciona como o esperado.
[ attachment removed ]
Olá Arley,
Não deu certo. Coloquei este payload:
'alert' => $message,
"title" => $title,
"sound" => "default",
"smallIcon" => "alert_icon",
"lights" => true,
"vibrate" => true,
"notificationId" => 1,
"ledARGB" => "#ffff0000",
Confira se o módulo foi atualizado com o último e-mail que enviei e experimente informar a cor de formas diferentes.
Em meus testes eu consegui fazer funcionar (acabei de repetir os testes) utilizando tanto o nome da cor, como a cor em hexa, como os exemplos abaixo:
{"alert":"verde","ledARGB":"green","ledOnMS":2000,"ledOffMS":2000}
{"alert":"vermelho","ledARGB":"red","ledOnMS":2000,"ledOffMS":2000}
ou
{"alert":"vermelho","ledARGB":"#ff0000","ledOnMS":2000,"ledOffMS":2000}
{"alert":"verde","ledARGB":"#00ff00","ledOnMS":2000,"ledOffMS":2000}
ou
{"alert":"vermelho","ledARGB":"#ffff0000","ledOnMS":2000,"ledOffMS":2000}
{"alert":"verde","ledARGB":"#ff00ff00","ledOnMS":2000,"ledOffMS":2000}
Aguardo seu retorno.
Tô testando tanto hex e cor e não está funcionando. Reinstalei o módulo duas vezes. Tem certeza que me mandou o módulo atualizado?
Agora apaguei os modulos do Titanium, baixei denovo e instalei. Mesmo assim não funciona. Teria como mandar uma outra versão? Tipo 1.7.1.
1.7.1 é ruim, mas é só para teste :p
Hehehe...
Segue em anexo, desta vez sem utilizar o download do Google Drive, de uma versão (ainda 1.7) porém que acabo de recompilar para ter certeza de que estava correto.
Você está mantendo o seu dispositivo com a tela desligada (black screen - locked) ao enviar a notificação push? As luzes no Android somente são exibidas neste cenário... e não é uma opção da aplicação.
Tente novamente e me retorne.
[ attachment removed ]
Baixei e continua não fazendo. Muito estranho. Sim, estou mantendo o dispositivo assim mesmo. Eu tenho um aplicativo de terceiro que pisca azul e a piscada é demorada. Teria como me mandar um exemplo de um aplicativo que esteja funcionando? Pode ser algum problema de configuração.
Abs.
Eu estou olhando os logs e percebi que as variáveis do payload chegam como String:
eventCallback:{"type":"PushClient_Callback","source":{"bubbleParent":true,"apiName":"Ti.Module","invocationAPIs":[],"_events":{"PushClient_Success":{},"PushClient_Error":{},"PushClient_Callback":{}}},"data":{"lights":"true","notificationId":"1","title":"\"teste de titulo\"","smallIcon":"alert_icon","collapse_key":"do_not_collapse","ledARGB":"red","sound":"default","alert":"\"teste de mensagem\"","gcm":{"handlerId":0,"messageType":"gcm"},"ledOnMS":"2000","vibrate":"true","from":"1076905688673","ledOffMS":"2000"},"mode":3,"bubbles":false,"success":true,"code":0,"cancelBubble":false}
Isso pode dar algum problema?
Não tem problema os valores inteiros estarem sendo recebidos no formato string. Isso é normal... Também não existe nenhum tipo de configuração especial...
Porém acho que encontrei o problema:
Copiei o conteúdo do seu atributo "data" (conteúdo enviado pelo provedor) e descobri que o problema está no atributo "lights" que não deve ser enviado junto com os atributos de "ledXXXX".
Pelo que pude entender, ao enviar o atributo "lights" ele ativa o "modo padrão" ao invés de utilizar o "modo customizado".
Com apenas esta mudança eu consegui receber uma notificação com luz vermelha e como o esperado.
Veja se funciona para você também.
Aguardo retorno.
AEEEEEEEE Funcionou!
Muito obrigado Arley!
Olá Arley,
Quanto tempo :D
Seguinte,
Os eventos do callback não estão funcionando para o IOS (mode_click, mode_foreground, etc..). Só funciona para android?
Abs.
Com certeza funciona muito bem para iOS!
Possivelmente não é que não esteja disparando os eventos de callback, mas sim que você não está recebendo as notificações push.
Você está utilizando a última versão do meu módulo? Está utilizando qual provedor push? Gerou e está utilizando corretamente o certificado da Apple de desenvolvimento e/ou produção?
Revise as questões básicas: identificador do app igual ao registrado na Apple; uso do certificado correto; notificações push ativadas na Apple para seu app; uso de um dispositivo e não de um emulador; etc...
É isso...
Dê notícias.
Fala Arley. Tô usando a versão que vc me mandou. A 17. Acho que é a última. Por incrível que pareça, eu recebo as informações da notificação no app. Som, badge, etc... Os eventos não disparam mesmo assim. Montei um servidor de envio na mão e tô enviando. Configurei o payload e funciona tudo. A mensagem aparece, a notificação aparece, o badge do ícone muda para o número que mandei, etc... A notificação chega, mas não chama o callback dentro do app. Muito estranho. Como posso fazer para debugar ou mandar alguma informação para vc?
Abs
Vou tentar simular este problema. Me conte qual a versão do Titanium SDK, do Titanium Studio e qual dispositivo está utilizando e versão do iOS. Pode também alterar o nível de log do Titanium para TRACE e me enviar todo o log desde a compilação, inicialização e recebimento de uma notificação no dispositivo.
Tô usando 3.4.1 e o 3.5.0. Já procurei bastante e não achei o lugar que altera o log level.
Onde está isso?
Abs.
Arley,
Acabei de perceber uma coisa.
No IOS o latest version é 1.6 No Android o latest version é 1.7
Está certo?
Bom,
Só pra vc saber.
Baixei do site do market place e instalou o 1.7. O problema persiste.
Abs.
Arley,
Descobri o problema.
Exemplo:
var gl_pc = require('br.com.arlsoft.pushclient');
A variável "gl_pc" que carrega seu módulo precisa ser global. Eu estava mandando um require e instanciando local. Provavelmente ele acessa essa váriavel nos callbacks.
gl_pc.EVENT_SUCCESS
gl_pc.EVENT_ERROR
gl_pc.EVENT_CALLBACK
Abs!
Vou acabar enchendo sua caixa de e-mail. o MODE_BACKGROUND funciona no IOS?
Abs.
Estive ausente ontem e não pude manter contato. Que bom que descobriu o problema!!
Sim, o MODE_BACKGROUND funciona para iOS, porém você deve utilizar a opção de "remote-notification" para UIBackgroundModes.
Inclua em seu arquivo tiapp.xml
<ios>
<plist>
<dict>
.....
<key>UIBackgroundModes</key>
<array>
<string>remote-notification</string>
</array>
.....
Envie uma notificação com o atributo "content-available" (Int).
Um abraço,
Arley
Esse content avaiable é o tamanho total do payload ou da mensagem?
Não tem um sentido definido. É algo que pode ter sentido para seu app. Para funcionar como "background" a Apple define que basta que exista e com valor diferente de zero.
Olá Arley,
Eu denovo. A notificação não aparece enquanto o app está aberto. não sei se vc entendeu o que estou dizendo. o whatsapp, por exemplo exibe notificação enquanto está aberto.
Entendeu o que quis dizer?
Grande abs.
Exatamente. Não é exibida a mensagem push na central de notificações quando o app está em foreground, no entanto o evento "callback" é acionado normalmente para que você possa tratá-lo como desejar... inclusive, se for sua necessidade, pode criar uma "local notification".
Este comportamento é um padrão (não opcional) para notificações push no iOS e repetido por mim como padrão para o Android.
Um abraço,
Arley
Fala Arley,
Teria como eu chamar alguma função da sua biblioteca para realizar essa notificação local?
Abs.
Não existe esta opção.
Ola Arley,
Dei uma pesquisada e ví que pra usar o largeicon que existe no seu push, teria que fazer um hack ou um módulo para Titanium. Eu comprei o seu para evitar isso e poupar tempo. Você conhece algum módulo de localnotification que possa indicar?
Obrigado.
Entendo seu problema e realmente você estaria limitado no Android com o que tem disponível no mercado e na própria SDK do Titanium.
Segue em anexo uma nova versão do módulo, atualizada apenas para Android, onde você conseguirá gerar notificações locais com exatamente as mesmas opções disponíveis para as notificações remotas.
Para iOS você continua tendo que utilizar o que tem disponível na SDK do Titanium ou qualquer outro módulo.
Utilize da seguinte forma:
var eventCallback = function(event) {
...
if (event.mode == PushClient.MODE_FOREGROUND) {
if (OS_ANDROID) {
PushClient.showLocalNotification(event.data);
}
}
...
};
Qualquer dúvida me retorne.
Um abraço,
Arley
[ attachment removed ]
Obrigado,
Vou testar. Só ví sua mensagem agora.
De qualquer forma, vou ter que fazer um tratamento, porque precisa funcionar para IOS tb. Estou estudando a fundo o Titanium e já comecei a desenvolver o módulo. Depois de quebrar bastante a cabeça com o JAVA do Android, resolvi todos os problemas e estou partindo para o desenvolvimento do IOS, mesmo assim, ainda prefiro usar seu módulo, pois não seria legal um app com 2 serviços etc....
Não pra fazer uma função igual para IOS?
Agora que já meteu a mão, só uma chamada pública para o IOS :D
Muito Obrigado pela ajuda!
Grande Abs.
Se fosse simples assim, pode ter certeza de que eu teria feito.
Para o iOS o meu módulo, em nenhum momento gera a notificação que é exibida. Quem toma conta disso é o próprio iOS. Por este motivo, se eu fosse implementar esse recurso, eu teria que gerar várias "linhas de código" e ainda tratar a compatibilidade de diferentes versões do iOS. Enfim, não vale a pena para mim.
Para o iOS você pode facilmente utilizar os recursos da Titanium SDK, que não tem nenhuma limitação.
Um abraço,
Arley
Blz Arley. obrigado!
Olá Arley,
A imagem da notificação está com zoom. Isto é um bug ou estou fazendo algo errado?
Seguem os screenshots.
Essa primeira imagem está com o tamanho da icone normal.
Aqui na segunda mostra que no momento da notificação, a imagem fica com um zoom.
Obrigado.