رفتن به مطلب
  • 0

پوش نوتیفیکیشن FCM


fun_code

سوال

سلام

بنده در کنسول فایربیس گوگل پروژه رو ایجاد کردم.

به درستی در همان کنسول میتونم به گوشی هایی که اپ رو نصب کردن نوتیفیکیشن ارسال کنم.

اما وقتی در PHP با توکن و کدهای موجود برای یک شخص میخوام از طریق android ID نوتیفیکیشن ارسال کنم، خطای زیر را نمایش میده.

{"multicast_id":8753434402794544918,"success":0,"failure":2,"canonical_ids":0,"results":[{"error":"InvalidRegistration"}]}

چه دلیلی میتونه داشته باشه ؟

باید سمت کاتلین کار خاصی رو انجام بدم ؟

قبلا درست بود و پروژه رو از جاوا به کاتلین تغییر دادم ، از اون به بعد نمیتونم بصورت تکی پوش ارسال کنم.

خطا اینه :

{"multicast_id":8753434402794544918,"success":0,"failure":1,"canonical_ids":0,"results":[{"error":"InvalidRegistration"}]}

لینک ارسال
به اشتراک گذاری در سایت های دیگر

10 پاسخ به این سوال تاکنون داده شده است

ارسال‌های توصیه شده

در ۱۴۰۰/۹/۲۴ در ۰۱:۵۰، محمدرضا شاهپیری گفته است:

مراحل زیر رو انجام بدید و نتیجه رو اعلام کنید.(من تست کردم و مشکلی نداشته.)

اول تو فایل build.gradle که مال کل پروژه اس کد زیر رو اضافه کنید.

سلام استاد

بابت راهنمایی کاملتون بینهایت سپاسگزارم.

دقیقا بدون مشکل پاسخ داد و مشکلم برطرف شد.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در ۱۴۰۰/۹/۲۲ در ۱۰:۳۸، محمدرضا شاهپیری گفته است:

تو هر تاپیک مسايل مربوط به همون تاپیک رو مطرح کنید لطفا. واینکه چه تاپیکی تبلیغ هست و چه تاپیکی نیست رو بزارید به عهده خودمون.  yes

 

ببینید عزیز اینجوری نباید بگیرید توکن رو. این روش منسوخ شده.روش درستش اینه که یه کلاس بسازید و اونو از FirebaseMessagingService ارث ببرید. متد onNewToken رو بازنویسی کنید و توکن رو از ورودیش بگیرید. همینجا توکن رو بغرستید سرور و ذخیره کنید برا ارسال پیام. 

استاد من تازه با کاتلین آشنا شدم

طبق سورس لینکی که در انتها قرار دادم پیش رفتم ، اما

getInstance()

رو قرمز میکنه و نمیشناسه ، چون متدی با نام getInstance اصلا تعریف نشده ... جالبه مثال میزنن و متد رو نداره اما تیک حل شده رو میزنن.

کلا بیخیالش شدم.

https://stackoverflow.com/questions/60676790/android-kotlin-firebasemessagingservice-get-token

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در ۱۴۰۰/۹/۲۳ در 16:41، fun_code گفته است:

استاد من تازه با کاتلین آشنا شدم

مراحل زیر رو انجام بدید و نتیجه رو اعلام کنید.(من تست کردم و مشکلی نداشته.)

اول تو فایل build.gradle که مال کل پروژه اس کد زیر رو اضافه کنید.

dependencies {
    // ...

    // Add the following line:
    classpath 'com.google.gms:google-services:4.3.10'  // Google Services plugin
  }

تو فایل build.gradle که مربوط به app هست کد زیر رو اضافه کنید.

// Add the following line:
apply plugin: 'com.google.gms.google-services'  // Google Services plugin

.
.
.
dependencies {
    implementation platform('com.google.firebase:firebase-bom:29.0.2')
    implementation 'com.google.firebase:firebase-messaging-ktx'
    implementation 'com.google.firebase:firebase-analytics-ktx'
}

تو منیفست سرویس رو اضافه کنید.

<service
    android:name="....MyFirebaseMessagingService"
    android:exported="false">
    <intent-filter>
        <action android:name="com.google.firebase.MESSAGING_EVENT" />
    </intent-filter>
</service>

حالا یه بار پروژه رو سینک کنید و حتما حتما هم از یه قند شکن خوب استفاده کنید. حالا به صورت زیر باید بتونید توکن رو بگیرید.

FirebaseMessaging.getInstance().token.addOnCompleteListener(OnCompleteListener { task ->
    if (!task.isSuccessful) {
        Log.w(TAG, "Fetching FCM registration token failed", task.exception)
        return@OnCompleteListener
    }
    val token = task.result
    Toast.makeText(baseContext, token, Toast.LENGTH_SHORT).show()
})

البته فرض بر اینه که اینکه اپ تو فایربیس ثبت شده و فایل جیسون به پروژه اضافه شده

لینک ارسال
به اشتراک گذاری در سایت های دیگر

اهان

الان در خود کنسول نگاه کردم ، گویا باید توکن FCM دستگاه رو در سرور ذخیره کنم و نه آی دی اندروید دستگاه رو

لینک ارسال
به اشتراک گذاری در سایت های دیگر

4 ساعته درگیرشم.

سورس قبلی رو خوندم اون هم اندروید آی دی رو در سرور ذخیره میکرده و پوش براش ارسال میشده !

عجیبه که در کنسول فایربیس بخوایم برای یک دستگاه پوشبفرستیم توکن دستگاه رو میخواد و اندروید آی دی دادم ارسال نشد !

جریان چیه واقعا !

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام و درود. شما باید توکن کاربر و همینطور کلید برنامه رو توی ریکوئست بزارید

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در ۱۴۰۰/۹/۲۱ در ۲۳:۲۱، محمدرضا شاهپیری گفته است:

سلام و درود. شما باید توکن کاربر و همینطور کلید برنامه رو توی ریکوئست بزارید

سلام استاد

در دریافت توکن کاربر در کاتلین دچار مشکل شدم

کد جاوا سورس قبلی رو در سورسکاتلین کپی میکنم و خودش convert میکنه اما متغیر FirebaseAnalytics رو نمیشناسه

        mFirebaseAnalytics = FirebaseAnalytics.getInstance(this);
        FirebaseMessaging.getInstance().getToken()
                .addOnCompleteListener(new OnCompleteListener<String>() {
                    @Override
                    public void onComplete(@NonNull Task<String> task) {
                        if (!task.isSuccessful()) {
                            return;
                        }
                        // Get new FCM registration token
                        token = task.getResult();
                        prefManager.edfirebase_token.putString("firebase_token", token);
                        prefManager.edfirebase_token.commit();
                    }
                });

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در ۱۴۰۰/۹/۲۱ در 23:46، fun_code گفته است:

سلام استاد

در دریافت توکن کاربر در کاتلین دچار مشکل شدم

کد جاوا سورس قبلی رو در سورسکاتلین کپی میکنم و خودش convert میکنه اما متغیر FirebaseAnalytics رو نمیشناسه

        mFirebaseAnalytics = FirebaseAnalytics.getInstance(this);
        FirebaseMessaging.getInstance().getToken()
                .addOnCompleteListener(new OnCompleteListener<String>() {
                    @Override
                    public void onComplete(@NonNull Task<String> task) {
                        if (!task.isSuccessful()) {
                            return;
                        }
                        // Get new FCM registration token
                        token = task.getResult();
                        prefManager.edfirebase_token.putString("firebase_token", token);
                        prefManager.edfirebase_token.commit();
                    }
                });

 

سلام زبان برنامه نویسی کاتلین رو تبلیغ نکنید ، آقای شاهپیری امتیاز هشدار میدن بهتون

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در ۱۴۰۰/۹/۲۲ در ۰۰:۰۰، YareGomnam گفته است:

سلام زبان برنامه نویسی کاتلین رو تبلیغ نکنید ، آقای شاهپیری امتیاز هشدار میدن بهتون

سلام

متوجه منظورتون نشدم !

در بخش پرسش و پاسخ کاتلین سوال پرسیدم.

خب مشکل دارم نباید در بخش مربوطه سوال بپرسم !

چه پیام عجیبی دادید.

 

مثلا الان کتابخانه زیر رو ایمپورت کردم و نمیشناسه

import com.google.firebase.analytics.FirebaseAnalytics

و متغیر زیر رو به همین دلیل خطا میبینه باید نپرسم ؟

private var mFirebaseAnalytics: FirebaseAnalytics? = null
لینک ارسال
به اشتراک گذاری در سایت های دیگر

در ۱۴۰۰/۹/۲۲ در 00:07، YareGomnam گفته است:

 

تو هر تاپیک مسايل مربوط به همون تاپیک رو مطرح کنید لطفا. واینکه چه تاپیکی تبلیغ هست و چه تاپیکی نیست رو بزارید به عهده خودمون.  yes

در ۱۴۰۰/۹/۲۲ در 00:03، fun_code گفته است:

 

ببینید عزیز اینجوری نباید بگیرید توکن رو. این روش منسوخ شده.روش درستش اینه که یه کلاس بسازید و اونو از FirebaseMessagingService ارث ببرید. متد onNewToken رو بازنویسی کنید و توکن رو از ورودیش بگیرید. همینجا توکن رو بغرستید سرور و ذخیره کنید برا ارسال پیام. 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بایگانی شده

این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
×
  • اضافه کردن...