Advertisement
Guest User

Untitled

a guest
Jun 24th, 2019
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.99 KB | None | 0 0
  1. [Register("AppDelegate")]
  2. public partial class AppDelegate : global::Xamarin.Forms.Platform.iOS.FormsApplicationDelegate
  3. {
  4. public override bool FinishedLaunching(UIApplication app, NSDictionary options)
  5. {
  6. global::Xamarin.Forms.Forms.Init();
  7. LoadApplication(new App("",""));
  8. RequestPushPermissionsAsync();
  9. _launchoptions = options;
  10. return base.FinishedLaunching(app, options);
  11. }
  12. NSDictionary _launchoptions;
  13. public override void OnActivated(UIApplication uiApplication)
  14. {
  15. base.OnActivated(uiApplication);
  16. if (_launchoptions != null && _launchoptions.ContainsKey(UIApplication.LaunchOptionsRemoteNotificationKey))
  17. {
  18. var notfication = _launchoptions[UIApplication.LaunchOptionsRemoteNotificationKey] as NSDictionary;
  19. PresentNotification(notfication);
  20. }
  21. _launchoptions = null;
  22. }
  23.  
  24. async Task RequestPushPermissionsAsync()
  25. {
  26. var requestResult = await UNUserNotificationCenter.Current.RequestAuthorizationAsync(
  27. UNAuthorizationOptions.Alert
  28. | UNAuthorizationOptions.Badge
  29. | UNAuthorizationOptions.Sound);
  30.  
  31. bool approved = requestResult.Item1;
  32. NSError error = requestResult.Item2;
  33. if (error == null)
  34. {
  35. if (!approved)
  36. {
  37. Console.Write("Permission to receive notification was not granted");
  38. return;
  39. }
  40.  
  41. var currentSettings = await UNUserNotificationCenter.Current.GetNotificationSettingsAsync();
  42. if (currentSettings.AuthorizationStatus != UNAuthorizationStatus.Authorized)
  43. {
  44. Console.WriteLine("Permissions were requested in the past but have been revoked (-Settings app)");
  45. return;
  46. }
  47. UIApplication.SharedApplication.RegisterForRemoteNotifications();
  48. }
  49. else
  50. {
  51. Console.Write($"Error requesting permissions: {error}.");
  52. }
  53. }
  54.  
  55. public async override void RegisteredForRemoteNotifications(UIApplication application, NSData deviceToken)
  56. {
  57. if (deviceToken == null)
  58. {
  59. return;
  60. }
  61. Console.WriteLine($"Token received: {deviceToken}");
  62. await SendRegistrationTokenToMainPRoject(deviceToken);
  63. }
  64.  
  65. async Task SendRegistrationTokenToMainPRoject(NSData deviceToken)
  66. {
  67. MessagingCenter.Send<object, string>(this, "fcmtoken", deviceToken.ToString());
  68. }
  69.  
  70. public override void FailedToRegisterForRemoteNotifications(UIApplication application, NSError error)
  71. {
  72. Console.WriteLine($"Failed to register for remote notifications: {error.Description}");
  73. }
  74.  
  75. public override void DidReceiveRemoteNotification(UIApplication application, NSDictionary userInfo,
  76. Action<UIBackgroundFetchResult> completionHandler)
  77. {
  78. PresentNotification(userInfo);
  79. completionHandler(UIBackgroundFetchResult.NoData);
  80. try
  81. {
  82. UIApplication.SharedApplication.ApplicationIconBadgeNumber = 0;
  83. NSDictionary aps = userInfo.ObjectForKey(new NSString("aps")) as NSDictionary;
  84. var message = (aps[new NSString("webContentList")] as NSString).ToString();
  85. LoadApplication(new App("", message));
  86. }
  87. catch (Exception ex)
  88. {
  89. //LogInfo.ReportErrorInfo(ex.Message, ex.StackTrace, "AppDelegate-DidReceiveRemoteNotification");
  90. }
  91. }
  92.  
  93. void PresentNotification(NSDictionary userInfo)
  94. {
  95. NSDictionary aps = userInfo.ObjectForKey(new NSString("aps")) as NSDictionary;
  96.  
  97. var msg = string.Empty;
  98.  
  99. if (aps.ContainsKey(new NSString("alert")))
  100. {
  101. msg = (aps[new NSString("alert")] as NSString).ToString();
  102. }
  103. if (string.IsNullOrEmpty(msg))
  104. {
  105. msg = "(unable to parse)";
  106. }
  107. MessagingCenter.Send<object, string>(this, App.NotificationReceivedKey, msg);
  108. }
  109. }
  110.  
  111. {
  112. "multicast_id": 8754155136812875313,
  113. "success": 0,
  114. "failure": 1,
  115. "canonical_ids": 0,
  116. "results": [
  117. {
  118. "error": "InvalidRegistration"
  119. }
  120. ]
  121. }
  122.  
  123. {
  124. "to" : "d20ad003 7473bfba 85dffc33 1534decf b4b886f1 c738878f fd7f2c60 d9dabc36",
  125. "collapse_key" : "type_a",
  126. "data" : {
  127. "body" : "Body of Your Notification in Data",
  128. "title": "Title of Your Notification in Title",
  129. "key_1" : "Value for key_1",
  130. "key_2" : "Value for key_2"
  131. },
  132. "notification" : {
  133. "body" : "Body of Your Notification",
  134. "title": "Title of Your Notification",
  135. "sound": "default",
  136. "content_available" : true
  137. }
  138. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement