আমি লক্ষ্য করেছি যে আইওএস 11 বিটা 2 তে application:didReceiveRemoteNotification:fetchCompletionHandler
অ্যাপের অবস্থা (পটভূমি / পূর্বভূমি) নির্বিশেষে নীরব বিজ্ঞপ্তি সরবরাহ করা হয় না।
আমি UIApplicationDelegete
পদ্ধতিটি বাস্তবায়ন করেছি application:didReceiveRemoteNotification:fetchCompletionHandler
এবং আমি নিম্নলিখিত নিঃশব্দ পুশটি প্রেরণ করি
{
"aps": {
"content-available": 1
},
"mydata": {
"foo": "bar"
}
}
তবে প্রতিনিধি পদ্ধতি আইওএস 11 এ কল করা হয় না।
এটি আইওএসের অন্যান্য সংস্করণ এবং ডকুমেন্টেশন বিভাগে দুর্দান্ত কাজ করে একটি সাইলেন্ট বিজ্ঞপ্তি কনফিগার করে অন্য কিছু করা উচিত তা উল্লেখ করে না।
এটি কি আইওএস 11-এ একটি বাগ বা আইওএস 11-এ নতুন কিছু মিস করেছি?
দয়া করে মনে রাখবেন যে আমি UserNotification
ফ্রেমওয়ার্কটি সম্পর্কে কথা বলছি না বা ব্যবহার করছি না যা নীরব পুশগুলি প্রেরণের প্রয়োজন হবে না।
এখানে একটি নমুনা প্রকল্প রয়েছে যা সমস্যার চিত্র তুলে ধরেছে (আপনাকে নিজের বান্ডেল আইডি সেট করতে হবে)
আপনি যখন নমুনা প্রকল্পটি লাঞ্চ করেন এবং অ্যাপটিতে উপরের পেডলোডটি প্রেরণ করেন, আপনি ম্যাকস কনসোলটি ব্যবহার করে ডিভাইসে পুশটি সঠিকভাবে সরবরাহ করা হয়েছে তা কিন্তু অ্যাপ্লিকেশনটিতে না তা দেখতে ব্যবহার করতে পারেন।
আপডেট 10.08
দেখা যাচ্ছে যে আচরণটি এলোমেলো। কখনও কখনও ডিভাইসটি পুনরায় চালু করার পরে, পে-লোডটি সঠিকভাবে সরবরাহ করা হয় তবে এটি কিছুক্ষণ পরে কাজ বন্ধ করে দেয়।
আপনি নীচের স্ক্রিনশটে দেখতে পাচ্ছেন যে, 1 হিসাবে চিহ্নিত করা পুশটি কেবলমাত্র ডিভাইসে বিতরণ করা হয় এবং ধাক্কা 2 (ডিভাইস পুনঃসূচনা করার পরে) অ্যাপ্লিকেশনেও সরবরাহ করা হয়।
14.08 আপডেট করুন - আইওএস 11 বিটা 6
এখনও একই আচরণ। আরও একটি জিনিস যা কাজ করার কথা রয়েছে তবে তা নিম্নলিখিত নয়। যখন অ্যাপ্লিকেশনটির স্কিমটি "এক্সিকিউটেবল চালু হওয়ার জন্য অপেক্ষা করুন" এ সেট করা থাকে, তখন একটি নীরব ধাক্কা অ্যাপ্লিকেশনটি জাগ্রত করে এবং এটি ব্যাকগ্রাউন্ডে শুরু করার কথা।
21.08 আপডেট করুন - আইওএস 11 বিটা 7
তবুও একই আচরণ এবং অ্যাপল থেকে ত্রুটি প্রতিবেদনে আপডেট করা হয়নি।
আপডেট 29.08 - আইওএস 11 বিটা 8
তবুও একই সমস্যা। আমি এখন ব্যবহার করি পুনরুত্পাদন করার পদক্ষেপগুলি নিম্নলিখিত:
- এক্সকোড প্রকল্প প্রকল্পে, "চালু হওয়ার জন্য নির্বাহের জন্য অপেক্ষা করুন" নির্বাচন করুন
- এর মধ্যে একটি ব্রেকপয়েন্ট যুক্ত করুন
didReceiveRemoteNotification: fetchCompletionHandler
- ডিভাইসে অ্যাপ্লিকেশনটি শুরু করুন
- উপরের নীরব পুশ পাঠান
প্রত্যাশিত : অ্যাপটি স্থগিত অবস্থা থেকে পটভূমিতে আনা হয় এবং কল didReceiveRemoteNotification: fetchCompletionHandler
করা হয়
আসল : কিছুই হয় না
আপডেট 06.09 - আইওএস 11 বিটা 10
আমি এখনও একই বগী আচরণ করছি। নিম্নলিখিত উত্তর সহ অ্যাপল থেকে টিকিট আপডেট করা হয়েছিল:
অ্যাপল বিকাশকারী সম্পর্ক সেপ্টেম্বর 6 2017, 10:42 অপরাহ্ন ইঞ্জিনিয়ারিং এই সমস্যাটির বিষয়ে নিম্নলিখিত প্রতিক্রিয়া সরবরাহ করেছে:
আমরা নমুনা অ্যাপ্লিকেশনটি চালাতে এবং আচরণটি পরীক্ষা করতে সক্ষম হয়েছি। বর্ণিত হিসাবে এটি পরীক্ষা করার সময় আমরা কোনও সমস্যা দেখিনি।
অ্যাপ্লিকেশনটি ব্যাকগ্রাউন্ডে চলাকালীন ধাক্কা দেওয়ার নিশ্চয়তা নেই, এবং এখানে লগগুলি ইঙ্গিত দেয় যে অ্যাপটি এটি চালু করতে পর্যাপ্তভাবে ব্যবহৃত হচ্ছে বলে আমরা বিশ্বাস করি না।
যখন পরিস্থিতি ভাল তখন আমরা আমাদের সময়ে সময়ে পুশ সরবরাহ করি।
আমরা বিশ্বাস করি এটি সঠিকভাবে আচরণ করছে।
আপডেট 11.09
আমার অ্যাপল বাগ প্রতিবেদনটি বন্ধ ছিল এবং এটির সদৃশ হিসাবে চিহ্নিত ছিল 33278611
যা এখনও খোলা রয়েছে
আপডেট 13.09 - আইওএস 11 জিএম
কাম 8০০ এর মন্তব্যে ধন্যবাদ (নীচে দেখুন) আমি আরও পরীক্ষা করেছি এবং সেই পর্যবেক্ষণগুলি নিয়ে এসেছি:
আইওএস 11-তে একটি নতুন ডেমন রয়েছে বলে মনে হচ্ছে dasd DuetActivitySchedulerDaemon
এটি সম্পূর্ণভাবে ডেটা পুশকে ত্যাগ করে বা ডেটা পুশ বিতরণে বিলম্ব করে:
বিতরণ স্থগিত
কনসোল লগস
default 13:11:47.177547 +0200 dasd DuetActivitySchedulerDaemon CANCELED: com.apple.pushLaunch.net.tequilaapps.daylight:C03A65 <private>! lifecycle com.apple.duetactivityscheduler
default 13:11:47.178186 +0200 dasd DuetActivitySchedulerDaemon Removing a launch request for application <private> by activity <private> default com.apple.duetactivityscheduler
default 12:49:04.426256 +0200 dasd DuetActivitySchedulerDaemon Advancing start date for <private> by 6.5 minutes to Wed Sep 13 12:55:31 2017 default com.apple.duetactivityscheduler
default 13:21:40.593012 +0200 dasd DuetActivitySchedulerDaemon Activity <private>: Optimal Score 0.6144 at <private> (Valid Until: <private>) scoring com.apple.duetactivityscheduler
default 13:21:40.594528 +0200 dasd DuetActivitySchedulerDaemon Setting timer (isWaking=1, activityRequiresWaking=0) between <private> and <private> for <private> default com.apple.duetactivityscheduler
স্থগিত বিতরণ সমস্যা
- যখন ডেটা পুশ বিতরণ স্থগিত করা হয় এবং অ্যাপ্লিকেশন চালু হয়, তখন ডেলিভারির তারিখ পৌঁছে গেলে ডেটা পুশ সরবরাহ করা হয় যা ভবিষ্যতে কয়েক মিনিট হতে পারে । এটি নতুন অ্যাপ্লিকেশনটির সামগ্রীটি পরবর্তী লঞ্চের জন্য প্রস্তুত রাখতে ডেটা পুশ করার ব্যবহারকে সম্পূর্ণভাবে পরাস্ত করে। আমি আবার এখানে অ্যাপলের ডকুমেন্টেশন উদ্ধৃত করছি:
"নীরব বিজ্ঞপ্তিগুলি আপনার অ্যাপটি আপ-টু-ডেট রাখার সাহায্যে ব্যবহারকারীর অভিজ্ঞতা উন্নত করে, এমনকি এটি চালিত না হয়ও।"
- যখন দুটি ডেটা পুশ স্থগিত অ্যাপে প্রেরণ করা হয় তখন তারা সরাসরি অ্যাপ্লিকেশন জাগ্রত করার পরিবর্তে আইওএস 11 দ্বারা স্থগিত করা হয়। প্রসবের সময় পৌঁছে গেলে কেবল শেষ ডেটা পুশ সরবরাহ করা হয়! পূর্ববর্তী পুশগুলি হারিয়ে যায় এবং ডেলিগেট পদ্ধতির মাধ্যমে সরবরাহ করা হয় না যার ফলে ডেটা ক্ষতি হয়।
বিতরণ বাতিল হয়েছে
কনসোল লগস
default 13:35:05.347078 +0200 dasd DuetActivitySchedulerDaemon com.apple.pushLaunch.net.tequilaapps.daylight:C03A65:[
{name: ApplicationPolicy, policyWeight: 50.000, response: {Decision: Must Not Proceed, Score: 0.00}}
], FinalDecision: Must Not Proceed} scoring com.apple.duetactivityscheduler
বিতরণ সংক্রান্ত সমস্যা বাতিল হয়েছে
ঠিক এই ক্ষেত্রে, ডেটা পুশ সম্পূর্ণরূপে হারিয়ে গেছে এবং আইওএস 11 এ কখনই বিতরণ করা হয়নি যখন এটি আইওএস 10 এ সঠিকভাবে সরবরাহ করা হয়েছিল।
আপডেট 19.09 - আইওএস 11 জিএম
আমি আরও লক্ষ্য করেছি যে যখন অ্যাপ্লিকেশনটি অগ্রভাগে রয়েছে এবং অ্যাপ্লিকেশনটিতে বিজ্ঞপ্তিটি সরবরাহ করা হয় না, তখন আমি কনসোলে নিম্নলিখিত লগগুলি দেখতে পাই:
default 08:28:49.354824 +0200 apsd apsd <private>: Received message for enabled topic '<private>' onInterface: NonCellular with payload '<private>' with priority 10 for device token: NO courier-oversized com.apple.apsd
fault 08:33:18.128209 +0200 dasd Foundation <NSXPCConnection: 0x151eee460> connection from pid 55: Exception caught during decoding of received message, dropping incoming message.
Exception: Exception while decoding argument 0 (#2 of invocation):
Exception: value for key 'NS.objects' was of unexpected class 'NSNull'. Allowed classes are '{(
NSArray,
NSData,
NSString,
NSNumber,
NSDictionary,
NSUUID,
_DASActivity,
NSSet,
_DASFileProtection,
NSDate,
NWParameters,
NWEndpoint
)}'. general com.apple.foundation.xpc
"content-available": 1
এবং অ্যাপটি অগ্রভাগে রয়েছে, কলব্যাকটি বরখাস্ত করা হবে না।