React-native-onesignal: (v3.2.1) (iOS) pushToken فارغ على جهاز حقيقي

تم إنشاؤها على ١٤ مايو ٢٠١٨  ·  36تعليقات  ·  مصدر: OneSignal/react-native-onesignal

وصف:
لا يمكن الحصول على pushToken ، لا أحد من مستخدمي ios على لوحة القيادة ، أحاول أي شيء ، أقوم بإعادة إنشاء الشهادات ، والمفاتيح ، واستخدام أدوات التوفير ، وجرب على أجهزة حقيقية مختلفة.

يعمل كل شيء على نظام Android مثل السحر.

بيئة

  1. ما هو إصدار OneSignal React-Native SDK الذي تستخدمه: latest 3.2.1
  2. كيف أضفت SDK إلى مشروعك (على سبيل المثال npm) npm i --save react-native-onesignal
  3. رد فعل- [email protected]
  4. Xcode Version 9.3 (9E145)
  5. Node.js 8.4.0

مجموعتي. json

package json rbtse 2018-05-14 11-59-05

خطوات إعادة إنتاج المشكلة:

  1. اتبع جميع المتغيرات الممكنة في التطفل على موقع onesignal.com
  2. أضف كود js من مثال المجلد في هذا الريبو
  3. اختبار على أجهزة حقيقية (iPhone X مع iOS 11 و iPhone 6s مع iOS 10)

شبيبة كود

export default class App extends Component {
  componentWillMount() {
    OneSignal.setLogLevel(7, 0);
    OneSignal.init('here my ONESIGNAL APP ID - I checked it twenty times', { kOSSettingsKeyAutoPrompt: true });
    OneSignal.setSubscription(true);
    OneSignal.enableSound(true);
    OneSignal.enableVibrate(true);
    OneSignal.inFocusDisplaying(2);

    OneSignal.getPermissionSubscriptionState((response) => {
      console.log('Received permission subscription state: ', response);
    });
  }

تلقيت استجابة من getPermissionSubscriptionState :

{
  emailAddress:null
  emailSubscribed:false
  emailUserId:null
  hasPrompted:true
  notificationsEnabled:true
  pushToken:null
  subscriptionEnabled:false
  userId:null
  userSubscriptionEnabled:true
}

بالطبع لا يوجد مستخدم iOS واحد على لوحة القيادة.

إضافية أرى سجلات في xcode

Called init with app ID: (null)
2018-05-14 11:21:03.636571+0300 rbtse[15320:6135130] Called init with app ID: xxxxxx-ea78-4b29-8b91-xxxxxxxxx (I changed app id)
2018-05-14 11:21:03.636758+0300 rbtse[15320:6135130] DEBUG: Downloading iOS parameters for this application
2018-05-14 11:21:03.642023+0300 rbtse[15320:6135181] VERBOSE: getNotificationTypes:mSubscriptionStatus: -1
2018-05-14 11:21:03.643531+0300 rbtse[15320:6135130] VERBOSE: registerForPushNotifications Called:waitingForApnsResponse: 1
2018-05-14 11:21:03.690752+0300 rbtse[15320:6135130] VERBOSE: oneSignalApplicationWillResignActive
2018-05-14 11:21:03.986984+0300 rbtse[15320:6135181] VERBOSE: network response (OSRequestGetIosParams): {
    fba = 1;
}
2018-05-14 11:21:05.778574+0300 rbtse[15320:6135130] VERBOSE: oneSignalApplicationDidBecomeActive
2018-05-14 11:21:05.778918+0300 rbtse[15320:6135130] VERBOSE: getNotificationTypes:mSubscriptionStatus: -1
2018-05-14 11:21:05.792324+0300 rbtse[15320:6135130] VERBOSE: updateNotificationTypes called: 15
2018-05-14 11:21:05.792388+0300 rbtse[15320:6135130] VERBOSE: startedRegister: 1

التعليق الأكثر فائدة

مرحبا الجميعdooboolabhhunaid @ 408dev @ EL-lsan @ neo125874 @ متنافر-سمنر

تم إصدار التحديث الجديد (3.2.3) ويجب إصلاح هذه المشكلة. لا تتردد في إخباري إذا رأيت هذه المشكلة (أو مشكلات أخرى) مرة أخرى وسيسعدني التحقيق في الأمر.

ال 36 كومينتر

لقد وجدت نفس المشكلة https://github.com/geektimecoil/react-native-onesignal/issues/502
لذلك أحاول الرجوع إلى https://github.com/geektimecoil/react-native-onesignal/tree/3.1.4 - اتبع جميع الخطوات وهي تعمل الآن!

react native debugger - connected port 8081 2018-05-14 12-24-59

users rbtse onesignal 2018-05-14 12-27-59

لذا فإن الإصدار الأخير لا يعمل

مرحبًا ، عند تثبيت أحدث إصدار من رد فعل-أصلية-إشارة واحدة (3.2.2) وتشغيل react-native link react-native-onesignal ، هل يمكنك فتح مشروع Xcode والتحقق من ظهور RCTOneSignal بشكل صحيح كاعتماد في مشروعك مثل هذا؟

alt text

pushToken و userId خالية بالنسبة لي على الأجهزة الحقيقية أيضًا (في وضع الإصدار)
image

[email protected]:
  version "3.2.2"
  resolved "https://registry.yarnpkg.com/react-native-onesignal/-/react-native-onesignal-3.2.2.tgz#d1ae1e95cc301b940120de29a29ae90f478c9a97"
  dependencies:
    invariant "^2.2.2"

(ليس في ملفي هذه المرة)

@ Jarred-Sumner حاول إلغاء تثبيت التطبيق من جهازك ، ثم إعادة تثبيته ، هل يطالبك بقبول أذونات التنبيه؟

أيضًا ، للتحقق فقط ، لقد قمت بتمكين قدرة الإخطارات الفورية في إعدادات المشروع> القدرات ، أليس كذلك؟

@ Jarred-Sumner حاول إلغاء تثبيت التطبيق من جهازك ، ثم إعادة تثبيته ، هل يطالبك بقبول أذونات التنبيه؟

نعم

أيضًا ، للتحقق فقط ، لقد قمت بتمكين قدرة الإخطارات الفورية في إعدادات المشروع> القدرات ، أليس كذلك؟

نعم
image
image

رجعت إلى v3.1.4 والآن أرسل pushToken و userId

@ Jarred-Sumner فقط لفهم هذه المشكلة بشكل أفضل قليلاً ، فإن المعرفات فارغة ، ولكن هل تنجح الإشعارات الفورية بالفعل؟ لا ينبغي لهم ذلك ، لكنني أردت التحقق مرة أخرى.

يمكنك أيضًا محاولة التحديث إلى 3.2.2 ، والتهيئة باستخدام JS ، والاتصال بـ OneSignal.setLogLevel(6, 0) قبل استدعاء init. هل يمكن أن تخبرني إذا رأيت أي أخطاء مطبوعة على وحدة التحكم؟

استمرت المشكلة في 3.2.2.
إعداد مستوى السجل يطبع بعد الإخراج

تم استدعاء init مع معرف التطبيق: (فارغ)
(ثم ​​في مكان ما أدناه في السجلات)
تم استدعاء init مع معرف التطبيق: (my-app-id)

لكن معرف المستخدم لا يزال فارغًا. لقد قمت بتضمين المكتبة باستخدام CocoaPods إذا كان ذلك يساعد

hunaid ، من المتوقع أن يكون معرف التطبيق فارغًا في المرة الأولى (ربما يتعين علينا إزالة بيان السجل الأول لتجنب الالتباس).

من المتوقع أيضًا أن يكون معرف المستخدم فارغًا حتى يقبل المستخدم إذن الدفع على جهاز iOS حقيقي. هل يمكنك تأكيد هذا هو الحال؟ إذا كان الأمر كذلك ، يمكنك نشر ارتباط لمدة 15 ثانية على الأقل من إخراج السجل من Xcode بمستوى السجل هذا (تأكد من استدعاء setLogLevel قبل استدعاء init)

@ Nightsd01 ليس مجرد بيان LOG. يوجد بالفعل استدعاء لمُهيئ OneSignal مع معرف appId فارغ. لقد تحققت للتو من أنه إذا قمت بإزالة هذا السطر الأولي في طريقة initOneSignal فكل شيء يعمل.

hunaid نعم ، من المتوقع أن تكون المكالمة الأولى

لاستبعاد التغييرات الأخرى التي قد تكون أجريتها ، هل يمكنك إلغاء التعليق initOneSignal مرة أخرى للتحقق من توقفها عن العمل ...؟

هل يمكنك نشر package.json حتى أتمكن من رؤية التبعيات التي تستخدمها؟

لقد جربت تشغيل وإيقاف مع جزء من الكود المذكور وبدونه ، ويمكنني الآن أن أقول بكل ثقة إنه بالفعل الجاني. على الأقل في تطبيقي.
إزالته يعطيني playerId صالح ويظهر جهازي على لوحة معلومات OneSignal. الذي لم يكن يحدث من قبل.

كذلك هنا. PushToken فارغ دائمًا. سوف ألصق لقطة الشاشة أدناه.
screen shot 2018-05-16 at 3 55 07 am

الحزمة الخاصة بي. json على النحو التالي.

    "abortcontroller-polyfill": "^1.1.9",
    "immutability-helper": "^2.7.0",
    "mobx": "^4.2.1",
    "mobx-react": "^5.1.2",
    "moment": "^2.22.1",
    "react": "^16.3.2",
    "react-native": "^0.55.4",
    "react-native-amplitude-analytics": "^0.1.15",
    "react-native-animatable": "^1.2.4",
    "react-native-audio-recorder-player": "^1.0.15",
    "react-native-iap": "^1.0.1",
    "react-native-image-picker": "^0.26.10",
    "react-native-linear-gradient": "^2.4.0",
    "react-native-loading-spinner-overlay": "^0.5.2",
    "react-native-localization": "^1.0.7",
    "react-native-marquee": "^0.3.1",
    "react-native-modalbox": "^1.4.2",
    "react-native-onesignal": "^3.2.2",
    "react-native-permissions": "^1.1.1",
    "react-native-pinch-zoom-view": "^0.1.6",
    "react-native-sentry": "^0.36.0",
    "react-native-status-bar-height": "^2.0.0",
    "react-native-swiper": "^1.5.13",
    "react-navigation": "^2.0.1",
    "serializr": "^1.2.0"

dooboolab أنت تستخدم تهيئة JS ، صحيح؟

هل يمكن أن تخبرني أين تتصل في مشروعك بـ OneSignal.init() ؟

بالنسبة لحياتي ، لا يمكنني إعادة إنتاج هذه المشكلة. إذا تمكن شخص ما من إعادة إنتاج هذه المشكلة في مشروع تجريبي ونشرها ، فسنكون قادرين على إصلاح هذه المشكلة _بالكثير _ بشكل أسرع.

tavriaforever مرحبًا ، فهل

نفس المشكلة هنا ، أي حل؟

    "react": "16.3.1",
    "react-native": "0.55.3",
    "react-native-onesignal": "^3.2.0",

تضمين التغريدة
أنا أتصل بجذر index.tsx حيث يلتف RootStackNavigator.

class App extends React.Component {
  public componentDidMount() {
    OneSignal.init('****');
    OneSignal.addEventListener('received', this.onReceived);
    OneSignal.addEventListener('opened', this.onOpened);
    OneSignal.addEventListener('ids', this.onIds);
    OneSignal.enableVibrate(true);
    OneSignal.enableSound(true);

.....
public render() {
    return (
      <Provider
        store={ appStore }
        user={ userStore }
        player={ playerStore }
      >
        <View style={styles.container}>
          <RootStackNavigator />
        </View>
      </Provider>
    );

لا تزال تعاني من الحصول على رمز فارغ.

@ Nightsd01 بالمثل هنا.
ساعدت إزالة init باستخدام appId: لا شيء في RCTOneSignal.m

@ Nightsd01 لقد حاولت للتو على android ، ولدى android نفس المشكلة.

أعتقد أن تهيئة جانب JS لم تكن فكرة رائعة.
أدرك أنه يسهل على مطوري الويب أو الأشخاص الذين ليس لديهم خلفية أصلية استخدام المكتبة بسهولة.

hunaid يبدو وكأنني يجب أن أقل؟

dooboolab @ 408dev نعم ، أوصي إذا كنت تواجه هذه المشكلة ، فقم بالرجوع إلى الإصدار 3.1.4 في الوقت الحالي حتى نقوم بحل هذه المشكلة. اعتذارات. ضع في اعتبارك أن JS init لم تكن مدعومة في 3.1.4 ، لذا ستحتاج إلى اتباع الدليل لإضافة رمز التهيئة الأصلي إلى مشروعك.

hunaid إنه بالفعل يجعل الأمور أسهل بالنسبة للمطورين للتفاعل.

كتحديث ، تمكنا من إعادة إنتاج هذه المشكلة وتحديد السبب ، وسنطرح تحديثًا لحلها قريبًا.

مرحباً بالجميع - تم حل هذه المشكلة في علاقات عامة جديدة (# 512). نتوقع أن يتم دمج هذا وإصدار تحديث جديد في غضون ساعة أو ساعتين قادمتين. شكرا لصبرك!

مرحبا الجميعdooboolabhhunaid @ 408dev @ EL-lsan @ neo125874 @ متنافر-سمنر

تم إصدار التحديث الجديد (3.2.3) ويجب إصلاح هذه المشكلة. لا تتردد في إخباري إذا رأيت هذه المشكلة (أو مشكلات أخرى) مرة أخرى وسيسعدني التحقيق في الأمر.

تضمين التغريدة
أنا استخدم

  "react": "16.3.1",
  "react-native": "0.55.3",
  "react-native-onesignal": "^3.2.3",

على الجهاز الحقيقي ، كل شيء يعمل بشكل جيد كما هو متوقع ، لكنني ما زلت أتلقى null userId عشوائيًا على simulators ولا أرى أي جهاز يتم إضافته إلى قائمة اللاعبين! (لقد اختبرت حتى الآن مثل> 50 مرة وعملت مرتين فقط!)
حاولت تنظيف التطبيق وإعادة إنشائه بالإضافة إلى rm -rf node_modules/ && yarn cache clean && yarn install && yarn start -- --reset-cache ولكن ما زلت لا أحصل على الحالة المتوقعة من OneSignal.getPermissionSubscriptionState

{ userSubscriptionEnabled: true,
  subscriptionEnabled: false,
  pushToken: null,
  emailAddress: null,
  userId: null,
  hasPrompted: true,
  notificationsEnabled: true,
  emailUserId: null,
  emailSubscribed: false }

@ el-lsan المتوقع. إنها قيود Apple ، وليس قيودنا. لا يمكن لمحاكيات iOS تلقي إشعارات الدفع. لن يحصلوا على رمز دفع APNS ولن يتم تسجيلهم في OneSignal.

إذا كنت تختبر دفع الإشعارات ، فعليك القيام بذلك على جهاز iOS حقيقي ، سواء كنت تستخدم OneSignal أم لا.

تضمين التغريدة
آسف ، مشاركتي الأخيرة لم تكن واضحة. لم أقصد تلقي الدفع على أجهزة المحاكاة ولكن الحصول على جهاز المحاكاة مدرج.
لذلك بعد OneSignal.init('ONESIGNAL_APP_ID'); أتوقع أن يتم إدراج جهاز المحاكاة في المستخدمين المشتركين لدي مع تسمية Ios Simulator Unsupported كما ترى في لقطة الشاشة التالية:

image

إليك رد OneSignal.getPermissionSubscriptionState للمحاكي المُدرج:

image

ولكن في معظم الأحيان تفشل التهيئة على أجهزة المحاكاة ولا أراها أقل من https://onesignal.com/apps/ONESIGNAL_APP_ID/players

@ el-lsan عندي نفس المشكلة لاغية ، هل وجدت الحل؟

adirzoari بعد التحديث إلى "react-native-onesignal": "^3.2.3" ، تم إصلاح المشكلة للأجهزة الحقيقية ، إذا كنت تقصد الحصول على رمز فارغ للمحاكاة ، أعتقد أن هذا هو ما يفترض أن يكون.

من ناحية أخرى ، أتوقع أن يتم تعيين userId لأجهزة المحاكاة ولكن لسبب غريب يفشل في معظم الأوقات ويعود فارغًا!

أنا أستخدم جهازًا حقيقيًا وأحصل على رمز فارغ

تضمين التغريدة حاول مسح ذاكرة التخزين المؤقت rm -rf node_modules/ && yarn cache clean && yarn install && yarn start -- --reset-cache وتحقق مرة أخرى من الخطوات

@ el-lsan pushToken فارغ ولكن في معرف المستخدم له سلسلة فريدة. في واحد أحصل عليه
خطأ في مكتبة خدمات Google Play

واجهت نفس المشكلة مع 3.2.7 (أجهزة محاكاة - أجهزة جيدة / حقيقية - NOK) ولكن تنظيف ذاكرة التخزين المؤقت كما اقترحه @ el-lsan جعلها تعمل دون أي مشكلة

@ Nightsd01 بالمثل هنا.
ساعدت إزالة init باستخدام appId: لا شيء في RCTOneSignal.m

مرحبًا ، هل من فضلك أضف صورة التغيير التالي.

adirzoari بعد التحديث إلى "react-native-onesignal": "^3.2.3" ، تم إصلاح المشكلة للأجهزة الحقيقية ، إذا كنت تقصد الحصول على رمز فارغ للمحاكاة ، أعتقد أن هذا هو ما يفترض أن يكون.

من ناحية أخرى ، أتوقع أن يتم تعيين userId لأجهزة المحاكاة ولكن لسبب غريب يفشل في معظم الأوقات ويعود فارغًا!

مرحبًا ، أتلقى pushToken: null في المحاكاة ، وأحصل فقط على معرف المستخدم الخاص بالمحاكي.
هل سأحصل على pushToken للجهاز الحقيقي ، يرجى التأكيد ، (سواء كان علي القلق بشأن مشكلة pushToken null في المحاكاة أم لا؟).

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات