レストランアプリを開発しています。アプリでOne Signalを使用して通知を送信しています。ここで、注文を行う際に、「ご注文は正常に完了しました。進行中です。お待ちください」という通知を受け取るために、特定のユーザーに1つのシグナルの一意のIDを送信する必要があります。そのためには、ユーザーのOne SignalユーザーIDが必要です。どうすれば入手できますか?私はOne Signalの初心者です。私を助けてください。
OneSignalの公式サイトにある次のコードを使用して、OneSignalの一意のIDを取得します。
OneSignal.idsAvailable(new OneSignal.IdsAvailableHandler() {
@Override
public void idsAvailable(String userId, String registrationId) {
Log.d("debug", "User:" + userId);
if (registrationId != null)
Log.d("debug", "registrationId:" + registrationId);
}
});
参照:
上記のAndroidのソリューションは非推奨です使用:
OSPermissionSubscriptionState status = OneSignal.getPermissionSubscriptionState();
status.getSubscriptionStatus().getUserId();
Androidの場合、getPermissionSubscriptionStateメソッドとaddSubscriptionObserverを使用して、ネイティブのAndroid SDKの3.5.0以降のバージョンで始まるユーザーID、つまりplayerIDを取得できます。
GetPermissionSubscriptionStateの使用の詳細については、以下を参照してください: https://documentation.onesignal.com/docs/Android-native-sdk#section--getpermissionsubscriptionstate-
サブスクリプションオブザーバーの追加については、以下を参照してください: https://documentation.onesignal.com/docs/Android-native-sdk#section--addsubscriptionobserver-
GithubにはネイティブAndroidの例: https://github.com/OneSignal/OneSignal-Android-SDK
AndroidStudioというラベルが付いたサンプルフォルダーにあります
IOSの場合、getPermissionSubscriptionStateメソッドとaddSubscriptionObserverを使用して、ネイティブiOS SDKの2.5.0バージョンからplayerIDを取得できます。
GetPermissionSubscriptionStateの使用の詳細については、 https://documentation.onesignal.com/docs/ios-native-sdk#section--getpermissionsubscriptionstate- を参照してください。
サブスクリプションオブザーバーの追加については、以下を参照してください: https://documentation.onesignal.com/docs/ios-native-sdk#section--addsubscriptionobserver-
GithubのSwiftにiOSのサンプルプロジェクトがありますが、これは何らかの助けになるかもしれません: https://github.com/OneSignal/OneSignal-iOS-SDK/tree/master/例
iOS:
let status: OSPermissionSubscriptionState = OneSignal.getPermissionSubscriptionState()
if let id = status.subscriptionStatus.userId {
oneSignalPlayer_ID = id
print("\nOneSignal UserId:", id)
}
なかむら
iOSでは、次のようにできます。
OSPermissionSubscriptionState* status = [OneSignal getPermissionSubscriptionState];
status.permissionStatus.hasPrompted
status.permissionStatus.status
// <- OneSignal idsAvailable is deprecated.it's the alternative
status.subscriptionStatus.subscribed
status.subscriptionStatus.userSubscriptionSetting
status.subscriptionStatus.userId
status.subscriptionStatus.pushToken
NSLog(@"Push Token - %@",status.subscriptionStatus.pushToken);
NSLog(@"Push User ID - %@",status.subscriptionStatus.userId);