Возможно ли в настоящее время получить текущий идентификатор пользователя / идентификатор игрока OneSignal, подобный этому, на iOS? https://documentation.onesignal.com/docs/ios-sdk-api#section -idsavailable.
Мне он нужен, чтобы отправить конкретное уведомление конкретному пользователю.
Отличная идея.
Теперь у вас есть:
OneSignal.idsAvailable((idsAvailable) => {
console.log(idsAvailable.playerId);
console.log(idsAvailable.pushToken);
});
на последнем пакете.
Это потрясающе быстрый ответ! Спасибо!
Сообщите мне, если это сработает или у вас возникнут проблемы.
Если нет, закрою этот вопрос ...
Спасибо!
@avishayil Похоже, он работает на iOS. Спасибо!
Пожалуйста!
Заключительный выпуск.
как это работает для iOS / Swift?
@alejandrorbradford и все, кто попадает сюда после поиска в Google, это для Swift:
OneSignal.idsAvailable { (pushID, pushToken) in
print(pushID)
print(pushToken)
}
для людей, приезжающих сюда в 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.
Я не могу получить playerId.
Я пробовал с OneSignal.idsAvailable
но это не функция. Также пробовал с OneSignal.getUserId
и он отображает ошибку "не является функцией".
Как я могу получить идентификатор игрока? У меня установлена версия 3.0.7.
Заранее спасибо!
Видимо сейчас изменилось. Согласно документам вы должны добавить прослушиватель событий:
`` ''
componentWillMount () {
OneSignal.addEventListener ('ids', this.onIds);
}
componentWillUnmount () {
OneSignal.removeEventListener ('ids', this.onIds);
}
onIds (устройство) {
console.log ('Информация об устройстве:', устройство);
}
`` ''
Да, но эта новая функция onIds никогда не запускается.
А как насчет Web push? Можно ли «отправлять уведомления конкретному пользователю»?
@bhgames @jpmazza не могли бы вы найти способ узнать текущий playerID?
Итак, используя последнюю версию (3.2.2)
componentWillMount () {
OneSignal.init (Config (). PushId, {kOSSettingsKeyAutoPrompt: true});
OneSignal.addEventListener('ids', this.updatePushId.bind(this));
OneSignal.configure()
}
async updatePushId (устройство) {
postJSON (UPDATE_PUSHID_URL,
{
user_id: this.props.user.id,
push_id: device.userId
},
{'Авторизация': this.props.authentication_token}
);
};
Это сработало для меня.
@bhgames это сработало. Благодарю.
OneSignal.configure () сделал свое дело. почему в документах ничего об этом нет: |
Потому что тебе нужно было это знать. Вот почему. : P Разработка React Native - худшая разработка.
https://documentation.onesignal.com/docs/ios-native-sdk#section --getpermissionsubscriptionstate-
let userId = OneSignal.getPermissionSubscriptionState().subscriptionStatus.userId
print("your userID:",userId!)
Целью было получить PlayerID от Onesignal при запуске приложения.
Итак, в App.js у меня работал следующий код:
let userID;
componentWillMount() {
OneSignal.init(ONESIGNAL_APP_ID, {
kOSSettingsKeyAutoPrompt: true,
});
OneSignal.getPermissionSubscriptionState( (status) => {
userID = status.userId;
alert(userID);
});
}
Кто-нибудь в этом разобрался? Как я могу получить идентификатор игрока для определенного устройства? Мне это нужно для отправки push-уведомлений моим пользователям. Группы и фильтры в моем приложении бесполезны. Единственное, что мне нужно, это идентификатор игрока, и я не могу найти ничего о том, как его получить, ни в одной документации. Может кто-нибудь помочь? Мое приложение построено на Ionic V3.
У меня такая же проблема, неясно, как обстоят дела с документацией
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>
);
}
}
это мой код, и в другом потоке мне сказали, что я должен использовать OneSignal.getPermissionSubscriptionState (обратный вызов), но где? и как ? и как передать playerID? пожалуйста, помогите кому-нибудь
@davekedar Мне удалось заставить это работать, вызвав его в моем ionViewDidLoad ()
window["plugins"].OneSignal.getIds(function(ids) {
//alert(JSON.stringify(ids['userId']));
let playerID = ids['userId'];
//alert(playerID);
});
Это работает для меня; дать ему шанс.
Спасибо @kenef
Простого вызова OneSignal.configure()
было достаточно, чтобы на слушателе 'ids'
было сгенерировано событие.
Например:
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);
}
Чтобы помочь тем, у кого все еще есть проблемы с получением player_id
.
onIds(device) {
console.log('Device info: ', device);
}
device
возвращает объект. Итак, чтобы действительно получить player_id
которые вы ищете, вы должны сделать что-то вроде device.userId
Как мне заставить это работать в Кордове?
@luizmagao какова ваша среда?
привет, у меня есть quickblox dialogid, как я получаю идентификатор пользователя quickblox с помощью этого dialogid
Простого вызова
OneSignal.configure()
было достаточно, чтобы на слушателе'ids'
было сгенерировано событие.Например:
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); }
Итак, как вы можете извлечь идентификатор? Не могли бы вы объяснить это поподробнее?
Получите все playerid / userid с помощью jquery и др. Пожалуйста, дайте мне знать, это возможно или нет
Самый полезный комментарий
Целью было получить PlayerID от Onesignal при запуске приложения.
Итак, в App.js у меня работал следующий код: