Atualmente, é possível obter o ID de usuário / playerid do OneSignal atual como este no iOS? https://documentation.onesignal.com/docs/ios-sdk-api#section -idsavailable.
Eu preciso enviar uma notificação específica para um usuário específico.
Boa ideia.
Você agora tem:
OneSignal.idsAvailable((idsAvailable) => {
console.log(idsAvailable.playerId);
console.log(idsAvailable.pushToken);
});
no pacote mais recente.
Essa é uma resposta rápida incrível! Obrigado!
Deixe-me saber se funciona ou se você tiver algum problema.
Do contrário, fecharei este problema ...
Obrigado!
@avishayil Parece que está funcionando no iOS. Obrigado!
De nada!
Problema de fechamento.
como isso funciona para iOS / Swift?
@alejandrorbradford e qualquer outra pessoa que chegar aqui após uma pesquisa no Google aqui é por Swift:
OneSignal.idsAvailable { (pushID, pushToken) in
print(pushID)
print(pushToken)
}
para as pessoas que virão aqui em 2017:
Deprecations and Major Changes
March 21, 2017: Removed getRegistrationId() from documentation. getUserId() should always be used instead.
March 15, 2016: Deprecated getIdsAvailable() in favor of getUserId() and getRegistrationId(). Deprecated idsAvailableCallback in favor of subscriptionChange event.
Não consigo obter o playerId.
Tentei com OneSignal.idsAvailable
mas não é uma função. Também tentei com OneSignal.getUserId
e mostra o erro "não é uma função".
Como posso obter a identificação do jogador? Instalei a versão 3.0.7.
Desde já, obrigado!
Aparentemente, agora mudou. De acordo com os documentos, você deve adicionar um ouvinte de evento:
`` ``
componentWillMount () {
OneSignal.addEventListener ('ids', this.onIds);
}
componentWillUnmount () {
OneSignal.removeEventListener ('ids', this.onIds);
}
onIds (dispositivo) {
console.log ('Informações do dispositivo:', dispositivo);
}
`` ``
Sim, mas essa nova função onIds nunca é acionada.
E quanto ao Web push? É possível "enviar notificações para um usuário específico"?
@bhgames @jpmazza você poderia encontrar uma maneira de obter o playerID atual?
Então, usando a versão mais recente (3.2.2)
componentWillMount () {
OneSignal.init (Config (). PushId, {kOSSettingsKeyAutoPrompt: true});
OneSignal.addEventListener('ids', this.updatePushId.bind(this));
OneSignal.configure()
}
async updatePushId (dispositivo) {
postJSON (UPDATE_PUSHID_URL,
{
user_id: this.props.user.id,
push_id: device.userId
},
{'Autorização': this.props.authentication_token}
);
};
Isso funcionou para mim.
@bhgames funcionou. obrigado.
OneSignal.configure () fez o truque. porque não há nada sobre isso em documentos: |
Porque você precisava saber disso. É por isso. : O desenvolvimento P React Native é o pior desenvolvimento.
https://documentation.onesignal.com/docs/ios-native-sdk#section --getpermissionsubscriptionstate-
let userId = OneSignal.getPermissionSubscriptionState().subscriptionStatus.userId
print("your userID:",userId!)
O objetivo era receber PlayerID de Onesignal no lançamento do aplicativo.
Então no App.js para mim funcionou o seguinte código:
let userID;
componentWillMount() {
OneSignal.init(ONESIGNAL_APP_ID, {
kOSSettingsKeyAutoPrompt: true,
});
OneSignal.getPermissionSubscriptionState( (status) => {
userID = status.userId;
alert(userID);
});
}
Alguém desvendou isso? Como posso obter o Player ID de um dispositivo específico? Eu preciso disso para poder enviar notificações push para meus usuários. Grupos e filtros são inúteis em meu aplicativo. A única coisa que preciso é o ID do jogador e não consigo encontrar nada sobre como obter isso em qualquer documentação. Alguém pode ajudar por favor? Meu aplicativo é integrado ao Ionic V3.
Eu tenho o mesmo problema, a documentação não é clara
import React from "react";
import { AsyncStorage } from "react-native";
import { createRootNavigator } from "./router";
import { isSignedIn } from "./auth";
import { YellowBox } from "react-native";
import OneSignal from "react-native-onesignal"; // Import package from node modules
//import { Provider } from 'react-redux';
//import { store } from '../app/redux/app-reducer';
YellowBox.ignoreWarnings([
"Warning: isMounted(...) is deprecated",
"Module RCTImageLoader"
]);
export default class App extends React.Component {
constructor(props) {
super(props);
this.state = {
signedIn: false,
checkedSignIn: false
};
}
componentWillMount() {
OneSignal.init("my app id");
OneSignal.addEventListener("received", this.onReceived);
OneSignal.addEventListener("opened", this.onOpened);
OneSignal.addEventListener("ids", this.onIds);
}
componentWillUnmount() {
OneSignal.removeEventListener("received", this.onReceived);
OneSignal.removeEventListener("opened", this.onOpened);
OneSignal.removeEventListener("ids", this.onIds);
}
onReceived(notification) {
console.log("Notification received: ", notification);
}
onOpened(openResult) {
console.log("Message: ", openResult.notification.payload.body);
console.log("Data: ", openResult.notification.payload.additionalData);
console.log("isActive: ", openResult.notification.isAppInFocus);
console.log("openResult: ", openResult);
}
onIds(device) {
console.log("Device info: ", device);
}
componentDidMount() {
// status = AsyncStorage.getItem('loggedIn');
// if(status === 'success'){
// this.setState({checkedSignIn: true});
// }
isSignedIn()
.then(res => this.setState({ signedIn: res, checkedSignIn: true }))
.catch(err => alert("An error occurred"));
}
render() {
const { checkedSignIn, signedIn } = this.state;
// If we haven't checked AsyncStorage yet, don't render anything (better ways to do this)
if (!checkedSignIn) {
return null;
}
const Layout = createRootNavigator(signedIn);
return (
//<Provider store={store}>
<Layout />
// </Provider>
);
}
}
este é o meu código e me foi dito em outro tópico que eu deveria usar OneSignal.getPermissionSubscriptionState (callback), mas onde? e como ? e como vou passar o playerID? por favor alguem ajude
@davekedar Consegui fazer isso funcionar chamando-o em meu ionViewDidLoad ()
window["plugins"].OneSignal.getIds(function(ids) {
//alert(JSON.stringify(ids['userId']));
let playerID = ids['userId'];
//alert(playerID);
});
Isso está funcionando para mim; dê uma chance.
Obrigado @kenef
Basta invocar OneSignal.configure()
para que um evento seja emitido no ouvinte 'ids'
.
Por exemplo:
componentWillMount() {
OneSignal.init("APP ID GOES HERE", {kOSSettingsKeyAutoPrompt : true});
OneSignal.addEventListener('received', this.onReceived);
OneSignal.addEventListener('opened', this.onOpened);
OneSignal.addEventListener('ids', this.onIds);
OneSignal.configure(); // <-- add this line
}
componentWillUnmount() {
OneSignal.removeEventListener('received', this.onReceived);
OneSignal.removeEventListener('opened', this.onOpened);
OneSignal.removeEventListener('ids', this.onIds);
}
onReceived(notification) {
console.log("Notification received: ", notification);
}
onOpened(openResult) {
console.log('Message: ', openResult.notification.payload.body);
console.log('Data: ', openResult.notification.payload.additionalData);
console.log('isActive: ', openResult.notification.isAppInFocus);
console.log('openResult: ', openResult);
}
onIds(device) {
console.log('Device info: ', device);
}
Para ajudar aqueles que ainda estão tendo problemas para obter player_id
.
onIds(device) {
console.log('Device info: ', device);
}
O device
retorna um objeto. Então, para realmente obter o player_id
você está procurando, você deve fazer algo como device.userId
Como faço para que isso funcione em Córdoba?
@luizmagao qual é o seu ambiente?
Olá, tenho Quickblox dialogid, como obtenho o Quickblox userid usando este dialogid
Basta invocar
OneSignal.configure()
para que um evento seja emitido no ouvinte'ids'
.Por exemplo:
componentWillMount() { OneSignal.init("APP ID GOES HERE", {kOSSettingsKeyAutoPrompt : true}); OneSignal.addEventListener('received', this.onReceived); OneSignal.addEventListener('opened', this.onOpened); OneSignal.addEventListener('ids', this.onIds); OneSignal.configure(); // <-- add this line } componentWillUnmount() { OneSignal.removeEventListener('received', this.onReceived); OneSignal.removeEventListener('opened', this.onOpened); OneSignal.removeEventListener('ids', this.onIds); } onReceived(notification) { console.log("Notification received: ", notification); } onOpened(openResult) { console.log('Message: ', openResult.notification.payload.body); console.log('Data: ', openResult.notification.payload.additionalData); console.log('isActive: ', openResult.notification.isAppInFocus); console.log('openResult: ', openResult); } onIds(device) { console.log('Device info: ', device); }
Então, como você pode extrair o ID? Você poderia explicar mais?
Obtenha todos os playerid / userid usando jquery e outros. Por favor, deixe-me saber se é possível ou não
Comentários muito úteis
O objetivo era receber PlayerID de Onesignal no lançamento do aplicativo.
Então no App.js para mim funcionou o seguinte código: