إعادة تعيين إعدادات إشعار الدفع للحصول على التطبيق

StackOverflow https://stackoverflow.com/questions/2438400

  •  19-09-2019
  •  | 
  •  

سؤال

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

مربع الحوار (الذي بدأه registerForRemoteNotificationTypes)، ومع ذلك، يظهر مرة واحدة فقط لكل تطبيق. كيف يمكنني إعادة تعيين ذاكرة iPhone OS الخاصة بي. حذف التطبيق وإعادة تثبيته لا يساعد.

هل كانت مفيدة؟

المحلول

ملاحظة فنية TN2265: استكشاف الأخطاء وإصلاحها

في المرة الأولى التي يسجل فيها تطبيق تطبيق دفع تدفع لإشعارات الدفع، يسأل iOS المستخدم إذا أرادوا تلقي الإخطارات لهذا التطبيق. بمجرد استجابة المستخدم لهذا التنبيه، لم يتم تقديمه مرة أخرى ما لم يتم استعادة الجهاز أو تم إلغاء تثبيت التطبيق لمدة يوم على الأقل.

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

تحديث: كما لوحظ في التعليقات أدناه، توقف هذا الحل عن العمل منذ IOS 5.1. أود أن أشجع على تقديم خطأ مع Apple حتى يتمكنوا من تحديث وثائقهم. يبدو أن الحل الحالي يؤدي إلى إعادة تعيين محتوى الجهاز والإعدادات.

تحديث: تم تحديث مذكرة التقنية بخطوات جديدة تعمل بشكل صحيح اعتبارا من IOS 7.

  1. حذف التطبيق الخاص بك من الجهاز.
  2. قم بإيقاف تشغيل الجهاز بالكامل وإيقاف تشغيله مرة أخرى.
  3. انتقل إلى الإعدادات> عامة> التاريخ والوقت وتعيين التاريخ إلى الأمام يوميا أو أكثر.
  4. قم بإيقاف تشغيل الجهاز مرة أخرى تماما وإيقاف تشغيله.

تحديث اعتبارا من iOS 9

ببساطة حذف وإعادة تثبيت التطبيق سوف إعادة تعيين حالة الإعلام notDetermined (سوف تظهر المطالبات).

بفضل إجابة Gomfucius أدناه:https://stackoverflow.com/a/33247900/704803.

نصائح أخرى

اخر فقط لاختبار الحل لهذا هو ببساطة تغيير معرف حزمة الخاص بك. فقط لا تنس تغييره مرة أخرى بمجرد الانتهاء!

على iOS 9.0.2، أحصل على تنبيه "تسجيل إشعار الدفع" في كل مرة أحذف فيها التطبيق وإعادة تثبيته. هذا صحيح بالنسبة لكل من تنزيلات إنتاج AppStore ووضع ADHOC.

تحديث: يتم تأكيد هذا يعمل من أجل iOS 9.x

كما لاحظ بالفعل نهج إعادة تعيين حالة الإعلام للحصول على تطبيق على الجهاز يتم تغيير iOS5 أحدث.

هذا يعمل بالنسبة لي على iOS6:

  • أزل التطبيق من الجهاز
  • قم بتعيين DETETIME الجهاز يومين أو أكثر
  • أعد تشغيل الجهاز
  • قم بتعيين DETETIME الجهاز يومين أو أكثر
  • أعد تشغيل الجهاز
  • تثبيت وتشغيل التطبيق مرة أخرى

ومع ذلك، سيجعل هذا فقط الفوري الأولي يظهر مرة أخرى - فلن يقوم بإزالة أي أشياء أخرى ذات صلة الحالة ذات الصلة.

المعطر: /Private/Var/Mobile/Library/Remotenotification/clients.plist

... يحتوي على العملاء المسجلين لإشعارات الدفع. إزالة إدخال التطبيق الخاص بك سوف يسبب المطالبة في إعادة الظهور

القيام بذلك يبدو برمجيا للعمل بالنسبة لي في كل مرة. لدي بناء مع السطر التالي غير مطري:

 [[UIApplication sharedApplication] unregisterForRemoteNotifications];

لقد قمت بتشغيله في كل مرة أرغب في إلغاء التسجيل من PN. قد تضطر إلى إنهاء التطبيق بشكل صريح من قائمة التكرارات والتشغيل مع مركز الإعلام في تطبيقات الإعدادات للحصول عليه بشكل صحيح.

أيضا، موجه UI مطالبة المستخدم بالتسجيل للحصول على PN. لست متأكدا إذا تم تعطيله في أي من إصدارات iOS الأخيرة.

كما قال Ianolito، فإن تحديد التاريخ يجب أن يعمل:

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

لقد لاحظت على جهازي (iPhone 4، iOS 6.1.2) إعداد ساعة النظام يوم إلى الأمام أو حتى بضعة أيام لم تنجح لي. لذلك أنا وضعت التاريخ إلى الأمام شهر ثم فعلت العمل وأظهر طلبي الإخطارات موجه مرة أخرى.

آمل أن يساعد هذا على أي شخص، يمكن أن يكون نوعا من وجوه!

وأنا أتفق مع MICMDK .. كان لدي إعداد بيئة تطوير مع إشعارات الدفع وتحتاج إلى طريقة لإعادة ضبط هاتفي لتبدو وكأنها تثبيت أولي فقط ... فقط هذه الخطوات الدقيقة التي عملت بالنسبة لي ... تتطلب إعادة تشغيل الجهاز:

من Apple Tech Doc:

إعادة تعيين تنبيه أذونات إشعارات الدفع على نظام التشغيل iOS في المرة الأولى التي يسجل فيها تطبيقات تطبيق الدفع لإعلامات الدفع، يسأل iOS المستخدم إذا أرادوا تلقي الإخطارات لهذا التطبيق. بمجرد استجابة المستخدم لهذا التنبيه، لم يتم تقديمه مرة أخرى ما لم يتم استعادة الجهاز أو تم إلغاء تثبيت التطبيق لمدة يوم على الأقل.

إذا كنت ترغب في محاكاة التشغيل لأول مرة من التطبيق الخاص بك، فيمكنك ترك التطبيق إلغاء تثبيته ليوم واحد. يمكنك تحقيق هذا الأخير دون انتظار في الواقع يوما باتباع الخطوات التالية:

  1. حذف التطبيق الخاص بك من الجهاز.

  2. قم بإيقاف تشغيل الجهاز بالكامل وإيقاف تشغيله مرة أخرى.

  3. انتقل إلى الإعدادات> عامة> التاريخ والوقت وتعيين التاريخ إلى الأمام يوميا أو أكثر.

  4. قم بإيقاف تشغيل الجهاز مرة أخرى تماما وإيقاف تشغيله.

لقد تساءلت عن هذا في الماضي وجاءت إلى استنتاج أنه لم يكن في الواقع حالة اختبار صالحة لرمزي. لا أعتقد أن رمز التطبيق الخاص بك يمكن أن يخبر الفرق في الواقع بين إخطارات شخص ما في المرة الأولى أو في وقت لاحق تعطيلها من إعدادات إخطار iPhone. صحيح أن تجربة المستخدم مختلفة ولكنها مخفية داخل المكالمة للتسجيل dremotenotificationtypes.

استدعاء Unregisterforremotenotifications لا يزيل التطبيق بالكامل من إعدادات الإخطارات - على الرغم من أنه يقوم بإزالة محتويات الإعدادات لهذا التطبيق. لذلك، لا يزال هذا لن يؤدي إلى تقديم مربع الحوار مرة ثانية للمستخدم في المرة التالية التي يعمل فيها التطبيق (على الأقل ليس على V3.1.3 الذي أختبره حاليا). ولكن كما أقول أعلاه ربما يجب ألا تقلق بشأن ذلك.

نفس علامة التكنولوجيا كما أظهرت في الإجابة المقبولة (TN2265 - استكشاف الأخطاء وإصلاحها دفع الإخطارات) منذ ذلك الحين تم تحديثها بحل iOS 5 وما فوق.

باختصار: قم بإنشاء نسخة احتياطية واستعادة منه في كل مرة.

على iOS 5 والإصدارات الأحدث، قم بإعادة تعيين تنبيه أذونات إشعارات الدفع عن طريق استعادة الجهاز من نسخة احتياطية (R. 11450187). فيما يلي خطوات القيام بذلك بكفاءة:

  1. استخدم منظم Xcode لتثبيت تطبيقك على الجهاز. المفتاح هو تثبيت التطبيق لأول مرة دون تشغيله.
  2. استخدم iTunes لعمل نسخة احتياطية من الجهاز.
  3. تشغيل التطبيق. سيتم تقديم تنبيه أذونات إخطارات الدفع.
  4. عندما ترغب في إعادة تعيين تنبيه أذونات إشعارات الدفع، قم باستعادة الجهاز من النسخة الاحتياطية التي قمت بإنشائها في الخطوة الأولى.

كما وصفت Apple Tech Note أنه يمكنك استعادة الجهاز لإعادة تعيين مربع حوار إشعار الدفع.

لا يقول أنه يمكنك أيضا استخدام الخيار "عام -> إعادة تعيين -> محو جميع المحتويات والإعدادات" على الجهاز نفسه (iOS 5.x).

بالإضافة إلى إجابة IANOLITO.

كان له نفس المشكلة مع تطبيق قمت بتنزيله قبل عام ونفى إشعار الدفع في البداية. الآن الرغبة في دفع الإخطارات مرة أخرى، هذه الخطوات عملت بالنسبة لي على iOS 7 beta. غير متأكد من النقطة (النقطة) التي أثارها بالضبط.

  • أغلق وحذف التطبيق.
  • انتقل إلى إعدادات iCloud الخاصة بك وحذف التطبيق من ICLOUD. قم بذلك على جميع الأجهزة الأخرى حيث يوجد لديك نسخة احتياطية ICLOUD للتطبيقات. بعد إلغاء تنشيط وحذف النسخ الاحتياطي الطازج. لا ينبغي إدراج التطبيق بأي شيء آخر تحت النسخ الاحتياطية. (هذا ربما لماذا توقفت المذكرة التقنية من Apple التي وصفها IANOLITO عن العمل في نظام التشغيل iOS 5، نظرا لأن ICLOUD تم تقديم ICLOUD في نظام التشغيل iOS 5 والعديد منها يحتوي العديد من النسخ الاحتياطي ICLOUD للتطبيقات.)
  • انتقل إلى إعدادات وقتك وتعيين الوقت أكثر من شهر واحد إلى الأمام.
  • قم بتشغيل إيقاف تشغيل iPhone (بدون إعادة تعيين).
  • انتظر دقيقة، قم بتشغيله مرة أخرى وتنزيل التطبيق مرة أخرى.
  • ابدأ تشغيل التطبيق وتم تقديم مربع الحوار مرة أخرى.
  • تمكين النسخ الاحتياطي التطبيق مرة أخرى، لأنه لا يزال إلغاؤه. تصحيح الوقت.

الحمد لله لم يكن لدي "محو جميع المحتويات والإعدادات". ربما سوف يساعد شخص ما.

بعد ساعات من البحث، ولا حظ في الاقتراحات أعلاه، وهذا يعمل مثل سحر ل 3.x +

override func viewDidLoad() {
        super.viewDidLoad()


            requestAuthorization()

}

func requestAuthorization() {

        if #available(iOS 10.0, *) {

            UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .sound, .badge]) { (granted, error) in
                print("Access granted: \(granted.description)")
            }

        } else {
            // Fallback on earlier versions
        }

    }
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top