Revision: 2594
http://sourceforge.net/p/swingme/code/2594
Author: yuranet
Date: 2021-11-24 18:59:06 +0000 (Wed, 24 Nov 2021)
Log Message:
-----------
getToken method split out
Modified Paths:
--------------
iOSME/src/javax/microedition/midlet/MIDlet.java
iOSME/src/net/yura/ios/SwingMEiOSApplication.java
iOSME/src/net/yura/ios/iOSNotifications.java
Modified: iOSME/src/javax/microedition/midlet/MIDlet.java
===================================================================
--- iOSME/src/javax/microedition/midlet/MIDlet.java 2021-11-18 18:45:47 UTC (rev 2593)
+++ iOSME/src/javax/microedition/midlet/MIDlet.java 2021-11-24 18:59:06 UTC (rev 2594)
@@ -115,6 +115,14 @@
else if (url.startsWith(PROTOCOL_NOTIFY + "//requestAuthorization")) {
iOSNotifications.requestNotificationAuthorization();
}
+ else if (url.startsWith(PROTOCOL_NOTIFY + "//getToken")) {
+ callOnMainThread(new Runnable() {
+ @Override
+ public void run() {
+ iOSNotifications.getToken();
+ }
+ });
+ }
else if (url.startsWith(PROTOCOL_NOTIFY)) {
Map<String, String> options = Url.toHashtable(nsUrl.query());
String title = options.remove("title");
Modified: iOSME/src/net/yura/ios/SwingMEiOSApplication.java
===================================================================
--- iOSME/src/net/yura/ios/SwingMEiOSApplication.java 2021-11-18 18:45:47 UTC (rev 2593)
+++ iOSME/src/net/yura/ios/SwingMEiOSApplication.java 2021-11-24 18:59:06 UTC (rev 2594)
@@ -205,7 +205,9 @@
@Override
public void applicationDidRegisterForRemoteNotificationsWithDeviceToken(UIApplication application, NSData deviceToken) {
byte[] bytes = iOSUtil.toBytes(deviceToken);
- String tokenString = IntegralToString.bytesToHexString(bytes, true);
+ // https://help.pushwoosh.com/hc/en-us/articles/360000364923-What-is-a-Device-token-
+ // says that the token should be lower case
+ String tokenString = IntegralToString.bytesToHexString(bytes, false);
MIDlet.DEFAULT_MIDLET.pushNotificationsToken(tokenString);
}
Modified: iOSME/src/net/yura/ios/iOSNotifications.java
===================================================================
--- iOSME/src/net/yura/ios/iOSNotifications.java 2021-11-18 18:45:47 UTC (rev 2593)
+++ iOSME/src/net/yura/ios/iOSNotifications.java 2021-11-24 18:59:06 UTC (rev 2594)
@@ -56,6 +56,16 @@
UIApplication.sharedApplication().setApplicationIconBadgeNumber(0);
}
+ /**
+ * token can change at any time, so app needs to keep asking for it on launch or some other time
+ * https://developer.apple.com/library/archive/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/HandlingRemoteNotifications.html#//apple_ref/doc/uid/TP40008194-CH6-SW3
+ * this method MUST be called on the main UI Thread
+ */
+ public static void getToken() {
+ UIApplication app = UIApplication.sharedApplication();
+ app.registerForRemoteNotifications();
+ }
+
public static void requestNotificationAuthorization() {
UNUserNotificationCenter notificationCenter = UNUserNotificationCenter.currentNotificationCenter();
notificationCenter.requestAuthorizationWithOptionsCompletionHandler(UNAuthorizationOptions.Alert | UNAuthorizationOptions.Sound | UNAuthorizationOptions.Badge,
@@ -63,17 +73,11 @@
@Override
public void call_requestAuthorizationWithOptionsCompletionHandler(boolean granted, NSError error) {
System.out.println("notificationCenter.requestAuthorization " + granted + " " + error);
-
- UIApplication app = UIApplication.sharedApplication();
- app.registerForRemoteNotifications();
}
});
}
public static void showNotification(String title, String message, int num, Map<?,?> extras) {
- //requestNotificationAuthorization();
- //checkNotificationAuthorization();
-
UNUserNotificationCenter notificationCenter = UNUserNotificationCenter.currentNotificationCenter();
UNMutableNotificationContent content = UNMutableNotificationContent.alloc().init();
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|