বিষয়বস্তুতে যান

MAUI Dotnet

প্রয়োজনীয়তা

Anchor link to

SDK ইন্টিগ্রেট করতে, আপনার MAUI প্রকল্পে নিম্নলিখিত প্যাকেজ সংস্করণ, টার্গেট ফ্রেমওয়ার্ক এবং ন্যূনতম OS সংস্করণ প্রয়োজন:

  • Pushwoosh.DotNet 2.1.0 বা তার পরের সংস্করণ। প্যাকেজটিতে .NET 8 এবং .NET 10-এর জন্য বিল্ড রয়েছে (net10.0-android36.0 এবং net10.0-ios26.0)।

  • Android: টার্গেট ফ্রেমওয়ার্ক net8.0-android34.0 বা তার বেশি, API 23 বা তার পরের ডিভাইস। .NET 8 SDK-তে সাধারণ net8.0-android android34.0-এ রিজলভ হয়।

  • iOS: iOS 15.0 বা তার পরের ডিভাইস। আপনার প্রকল্প ফাইলে ন্যূনতম সংস্করণ সেট করুন:

    <SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'ios'">15.0</SupportedOSPlatformVersion>

    এর চেয়ে কম মান দিলে, বিল্ড error PW0001 দিয়ে থেমে যায়।

SDK ইন্টিগ্রেশন

Anchor link to

১. Android এবং iOS উভয় প্রকল্পে Pushwoosh.DotNet Nuget প্যাকেজ যোগ করুন:

২. প্রয়োজন হলে ট্রানজিটিভ Android নির্ভরতার জন্য লাইসেন্স গ্রহণ করুন:

৩. Firebase Console এ আপনার প্রকল্প কনফিগার করুন।

৪. আপনার Android প্ল্যাটফর্ম ডিরেক্টরির রুটে google-services.json যোগ করুন। এই ফাইলের জন্য GoogleServicesJson বিল্ড অ্যাকশন সেট করুন:

৫. আপনার MainApplication.cs এ নেমস্পেস ঘোষণা করার আগে নিম্নলিখিত লাইনটি যোগ করুন (XXXXX-XXXXX এখানে আপনার Pushwoosh অ্যাপ্লিকেশন কোড):

[assembly: MetaData("com.pushwoosh.appid", Value = "XXXXX-XXXXX")]

৬. আপনার MainApplication.cs এ OnCreate() ওভাররাইড করুন এবং base.OnCreate(); এর আগে PushManager.Init(); কল করুন:

using Android.App;
using Android.Runtime;
using Pushwoosh.Android;
...
[Application]
public class MainApplication : MauiApplication
{
public MainApplication(IntPtr handle, JniHandleOwnership ownership)
: base(handle, ownership)
{
}
public override void OnCreate()
{
PushManager.Init();
base.OnCreate();
}
protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp();
}

base.OnCreate() MAUI অ্যাপ তৈরি করে এবং App গঠন করে, যা ইতিমধ্যে PushManager.Instance ব্যবহার করে। MainActivity.OnCreate থেকে PushManager.Init() কল করবেন না। Activity App-এর পরে তৈরি হয়, তাই App-এর যখন PushManager.Instance প্রয়োজন হবে তখনও এটি null থাকবে।

৭. আপনার AndroidManifest.xml এ, নিম্নলিখিত যোগ করুন:

<meta-data android:name="com.pushwoosh.apitoken" android:value="__YOUR_DEVICE_TYPE_API_TOKEN" />

গুরুত্বপূর্ণ: নিশ্চিত করুন যে ডিভাইস API টোকেন আপনার Pushwoosh কন্ট্রোল প্যানেলে সঠিক অ্যাপ্লিকেশনে অ্যাক্সেস আছে। আরও জানুন

৮. iOS প্ল্যাটফর্ম ফোল্ডারে, aps-environment কী সহ Platforms/iOS/Entitlements.plist তৈরি করুন:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>aps-environment</key>
<string>development</string>
</dict>
</plist>

এই entitlement ছাড়া iOS কোনো APNs ডিভাইস টোকেন ইস্যু করে না, তাই Register() সবসময় ব্যর্থ হয়। ডিবাগ বিল্ডের জন্য development ব্যবহার করুন। একটি ডিস্ট্রিবিউশন বিল্ডের জন্য production এবং পুশ নোটিফিকেশন সক্রিয় করা একটি provisioning profile প্রয়োজন।

৯. আপনার প্রকল্প ফাইলে (.csproj), iOS টার্গেটকে entitlements ফাইলের দিকে নির্দেশ করুন:

<PropertyGroup Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'ios'">
<CodesignEntitlements>Platforms/iOS/Entitlements.plist</CodesignEntitlements>
</PropertyGroup>

১০. আপনার iOS প্রকল্পের AppDelegate.cs এ, FinishedLaunching মেথডের শুরুতে PushManager.Init(); কল করুন:

using Foundation;
using UIKit;
using Pushwoosh.iOS;
...
public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
{
PushManager.Init();
return base.FinishedLaunching(application, launchOptions);
}

১১. এই মেথডগুলো AppDelegate এ যোগ করুন। MauiUIApplicationDelegate ক্লাস ডিফল্টভাবে এগুলো এক্সপোর্ট করে না, তাই এগুলো ম্যানুয়ালি যোগ করুন:

[Export("application:didReceiveRemoteNotification:fetchCompletionHandler:")]
public void DidReceiveRemoteNotification(UIKit.UIApplication application, NSDictionary userInfo, Action<UIKit.UIBackgroundFetchResult> completionHandler)
{
PushManager.Instance.ReceivedRemoteNotification(userInfo);
}
[Export("application:didRegisterForRemoteNotificationsWithDeviceToken:")]
public void RegisteredForRemoteNotifications(UIKit.UIApplication application, NSData deviceToken)
{
PushManager.Instance.RegisteredForRemoteNotifications(deviceToken);
}
[Export("application:didFailToRegisterForRemoteNotificationsWithError:")]
public void FailedToRegisterForRemoteNotifications(UIKit.UIApplication application, NSError error)
{
PushManager.Instance.FailedToRegisterForRemoteNotifications(error);
}

১২. Info.plist এ, Pushwoosh_APPID এর মান আপনার Pushwoosh অ্যাপ্লিকেশন কোডে পরিবর্তন করুন। আপনি এটি আপনার কন্ট্রোল প্যানেলে খুঁজে পেতে পারেন:

Xcode-এ Info.plist, যেখানে Pushwoosh_APPID কী-তে অ্যাপ্লিকেশন কোড সেট করা আছে

১৩. Info.plist এ, Pushwoosh_API_TOKEN কী আপনার Pushwoosh ডিভাইস API টোকেন এ সেট করুন।

গুরুত্বপূর্ণ: নিশ্চিত করুন যে টোকেনটি আপনার Pushwoosh কন্ট্রোল প্যানেলে সঠিক অ্যাপে অ্যাক্সেস পেয়েছে। আরও জানুন

১৪. App.xaml.cs এর ক্রস-প্ল্যাটফর্ম অংশে, OnStart মেথডে Register() কল করুন। এটি ব্যবহারকারীর কাছে নোটিফিকেশনের অনুমতি চায় এবং পুশ নোটিফিকেশনের জন্য ডিভাইসটি রেজিস্টার করে:

using PushwooshSDK.DotNet.Core;
...
public partial class App : Application
{
...
protected override void OnStart()
{
base.OnStart();
PushManager.Instance.Register();
}
}

2.0.x থেকে 2.1.0-এ আপগ্রেড

Anchor link to

যদি আপনার অ্যাপ এই গাইডের আগের সংস্করণ অনুযায়ী সেট আপ করা হয়ে থাকে, তাহলে 2.1.0-এ আপডেট করার সময় এই পরিবর্তনগুলি করুন:

  • Android-এ, PushManager.Init()-কে MainActivity.OnCreate থেকে MainApplication.OnCreate-এ, base.OnCreate()-এর আগে সরান, যেমন ধাপ ৬-এ দেখানো হয়েছে। আপনি Geozones ব্যবহার করলে, LocationManager.Init()-ও সেখানে সরান, PushManager.Init()-এর ঠিক পরে।
  • com.pushwoosh.senderid মেটাডেটা লাইন এবং Resources/values/strings.xml থেকে fcm_sender_id স্ট্রিং মুছে ফেলুন। SDK এগুলো পড়ে না।
  • iOS-এ, আপনার অ্যাপে যদি এখনও না থাকে, ধাপ ৮ এবং ৯ থেকে aps-environment entitlement যোগ করুন।
  • iOS টার্গেটের জন্য SupportedOSPlatformVersion 15.0-এ বাড়ান, যেমন প্রয়োজনীয়তা-এ দেখানো হয়েছে। MAUI 8 প্রকল্প টেমপ্লেট 11.0 সেট করে।
  • যদি আপনার অ্যাপ Geozones ব্যবহার করে, তাহলে Pushwoosh.DotNet-এর সাথে একসাথে Pushwoosh.DotNet.Geozones 2.1.0-এ আপডেট করুন। Geozones 2.0.x-এর সাথে বিল্ড error PW0002 দিয়ে থেমে যায়।
  • iOS-এ PWInlineInAppView [Obsolete] হিসাবে চিহ্নিত এবং কিছুই দেখায় না, কারণ নেটিভ iOS SDK 7.x-এ ইনলাইন In-App বার্তা নেই। আপনার লেআউট থেকে এটি সরিয়ে ফেলুন।

উইন্ডোজ ব্যবহারকারীদের জন্য দ্রষ্টব্য: বিল্ড করার সময় আপনি ফাইলের পাথের দৈর্ঘ্য সম্পর্কিত একটি সমস্যার সম্মুখীন হতে পারেন। এর কারণ হল Visual Studio দ্বারা ব্যবহৃত ডিরেক্টরিগুলির সম্মিলিত দৈর্ঘ্য এবং Pushwoosh SDK-এর মধ্যে থাকা ফাইলের পাথগুলি উইন্ডোজের ২৬০ অক্ষরের সর্বোচ্চ পাথ দৈর্ঘ্যের সীমাবদ্ধতা অতিক্রম করে। এই সমস্যাটি সমাধান করতে, উইন্ডোজ রেজিস্ট্রি-তে LongPathsEnabled সেটিংটি সক্রিয় করুন।

আমাদের সাথে আপনার মতামত শেয়ার করুন

Anchor link to

আপনার মতামত আমাদের একটি উন্নত অভিজ্ঞতা তৈরি করতে সাহায্য করে, তাই SDK ইন্টিগ্রেশন প্রক্রিয়ার সময় আপনার কোনো সমস্যা হলে আমরা আপনার কাছ থেকে শুনতে চাই। যদি আপনি কোনো অসুবিধার সম্মুখীন হন, অনুগ্রহ করে আমাদের সাথে আপনার মতামত শেয়ার করতে দ্বিধা করবেন না এই ফর্মের মাধ্যমে।