सामग्री पर जाएं

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

1. Android और iOS दोनों प्रोजेक्ट्स में Pushwoosh.DotNet Nuget पैकेज जोड़ें:

2. यदि आवश्यक हो तो ट्रांजिटिव Android डिपेंडेंसी के लिए लाइसेंस स्वीकार करें:

3. अपने प्रोजेक्ट को Firebase Console में कॉन्फ़िगर करें।

4. अपनी Android प्लेटफ़ॉर्म डायरेक्टरी के रूट में google-services.json जोड़ें। इस फ़ाइल के लिए GoogleServicesJson बिल्ड एक्शन सेट करें:

5. अपनी MainApplication.cs में नेमस्पेस घोषित करने से पहले निम्नलिखित लाइन जोड़ें (XXXXX-XXXXX यहाँ आपका Pushwoosh एप्लिकेशन कोड है):

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

6. अपनी 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 होगा।

7. अपने AndroidManifest.xml में, निम्नलिखित जोड़ें:

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

महत्वपूर्ण: सुनिश्चित करें कि डिवाइस एपीआई टोकन के पास आपके Pushwoosh कंट्रोल पैनल में सही एप्लिकेशन तक पहुंच है। और जानें

8. 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 और पुश नोटिफिकेशन सक्षम वाली प्रोविज़निंग प्रोफ़ाइल की आवश्यकता होती है।

9. अपनी प्रोजेक्ट फ़ाइल (.csproj) में, iOS टारगेट को entitlements फ़ाइल की ओर इंगित करें:

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

10. अपने 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);
}

11. इन मेथड्स को 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);
}

12. Info.plist में, Pushwoosh_APPID मान को अपने Pushwoosh एप्लिकेशन कोड में बदलें। आप इसे अपने कंट्रोल पैनल में पा सकते हैं:

Xcode में Info.plist, जिसमें Pushwoosh_APPID कुंजी एप्लिकेशन कोड पर सेट है

13. Info.plist में, Pushwoosh_API_TOKEN की को अपने Pushwoosh डिवाइस एपीआई टोकन पर सेट करें।

महत्वपूर्ण: सुनिश्चित करें कि टोकन को आपके Pushwoosh कंट्रोल पैनल में सही ऐप तक पहुंच प्रदान की गई है। और जानें

14. 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 पर, चरण 6 की तरह 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 पर, यदि आपके ऐप में अभी तक चरण 8 और 9 का aps-environment entitlement नहीं है, तो उसे जोड़ें।
  • iOS टारगेट के लिए SupportedOSPlatformVersion को 15.0 तक बढ़ाएँ, जैसा कि आवश्यकताएँ में दिखाया गया है। MAUI 8 प्रोजेक्ट टेम्पलेट 11.0 सेट करता है।
  • यदि आपका ऐप Geozones का उपयोग करता है, तो Pushwoosh.DotNet.Geozones को Pushwoosh.DotNet के साथ 2.1.0 में अपडेट करें। Geozones 2.0.x के साथ, बिल्ड error PW0002 के साथ रुक जाता है।
  • iOS पर PWInlineInAppView को [Obsolete] के रूप में चिह्नित किया गया है और यह कुछ नहीं दिखाता, क्योंकि नेटिव iOS SDK 7.x में इनलाइन इन-ऐप संदेश नहीं हैं। इसे अपने लेआउट से हटा दें।

विंडोज उपयोगकर्ताओं के लिए ध्यान दें: बिल्ड करते समय आपको फ़ाइल पाथ की लंबाई से संबंधित समस्या का सामना करना पड़ सकता है। यह विजुअल स्टूडियो द्वारा उपयोग की जाने वाली डायरेक्टरी की संयुक्त लंबाई और Pushwoosh SDK के भीतर फ़ाइल पाथ के विंडोज की 260 वर्णों की अधिकतम पाथ लंबाई सीमा से अधिक होने के कारण है। इस समस्या को हल करने के लिए, विंडोज रजिस्ट्री में LongPathsEnabled सेटिंग को सक्षम करें।

अपनी प्रतिक्रिया हमारे साथ साझा करें

Anchor link to

आपकी प्रतिक्रिया हमें एक बेहतर अनुभव बनाने में मदद करती है, इसलिए यदि आपको SDK इंटीग्रेशन प्रक्रिया के दौरान कोई समस्या आती है तो हम आपसे सुनना पसंद करेंगे। यदि आपको कोई कठिनाई आती है, तो कृपया इस फॉर्म के माध्यम से अपने विचार हमारे साथ साझा करने में संकोच न करें।