Xcode Push Notification: APNS server for production mode - xcode

I'm realizing my first app with push notification. I've done all the debugging following the Ray Wanderlich Tutorial
and everything works.
Now that I'm about to proceed with the submission I would like to know what parameters I have to insert for the "live" server in production mode instead of
gateway.sandbox.push.apple.com 2195
Hope to be clear

I think the port is the same, only the host is different, it's gateway.push.apple.com.
The binary interface of the production environment is available through gateway.push.apple.com, port 2195; the binary interface of the development environment is available through gateway.sandbox.push.apple.com, port 2195.
Source

Related

How to disable quarkus dev mode?

After a CLI application exits, on prod profile, i'd like it to go back to the shell instead of re-prompting the dev mode ("Press [space] to restart, [e] to edit command line args...")
Also would not need the "Press [h] for more options>" on startup.
Would it be possible to get quarkus "dev mode" totally out of the way in prod?
Description:
Add a configuration value/switch to disable the GRPC server in dev mode
At the moment there is no way to disable starting of the GRPC server in dev mode. For instance if only the client is used it is weird to have to assign a random port to the GRPC server to solve port collision for instance from a real GRPC server. So I don't really know if this is an actual feature request or a small bug.
Implementation ideas:
Have a configuration value which disables the starting of the server, e.g.:
quarkus.grpc.server.enable

Cannot connect to NSMachBootstrapServer from plugin

I'm fairly new to macOS development. I decided to create a CoreMedia DAL plugin to try to create a virtual camera and learn more about the Objective C ecosystem.
There are two components to the application:
The bundle plugin that gets installed into the /Library/CoreMediaIO/Plug-Ins/DAL/ directory and emulates a hardware device
A simple server that serves video frames from an actual hardware device to the plugin. The idea is that this server will apply filtering/compositing to the frame data before forwarding it onto the virtual camera.
I have successfully created a virtual device that just serves a static image. But to communicate from the plugin → server to get the dynamics frames, I'm using Mach ports (I know they're deprecated).
The server is running an NSMachBootstrapServer instance which has registered a service "com.vcamera.server". The plugin is referencing this service as it runs with the following code.
NSPort * port = [NSMachBootstrapServer sharedInstance] portForName:#"com.vcamera.server";
Problem
When I start an application that uses the virtual camera plugin (e.g. OBS in my case), the plugin prints that it successfully finds the registered server Mach port (the server port is not nil) but it cannot actually send data to it. The NSPortMessage instance sendBeforeDate fails with a timeout. For the life of me, I can't figure out why the Mach IPC doesn't transfer data when it processes that a service has registered on the port.
What I've tried
To isolate the issue, I created two distinct client and server applications that are NOT plugins by compiling directly with GCC. I was able to reproduce the timeout from the client to the server when I did not codesign the binaries, but once I did a simple codesign using my Apple developer account the two binaries were able to communicate.
But what's strange is that the OBS application that loads the virtual camera plugin is clearly codesigned but the connection from the plugin to the server does not complete successfully. Also, I read online that any application that loads virtual camera plugins needs to have the "Disable Library Validation" entitlement, but I confirmed that it was available in the application property list with this command.
codesign -d --entitlements :- /Applications/OBS.app
A few questions:
Is there anything obvious that's sticking out that I'm doing wrong?
Am I fundamentally misunderstanding the permissioning that's necessary to do Mach IPC?
Do bundle plugins need to be signed somehow or does the application (OBS in this case) itself need to have its code signature changed to match my developer ID?
I'd really appreciate any assistance that you can give! More than happy to give more information.

Mac app: How to test mac app push notifications on production server?

Currently, I have a server that sends notifications to my Mac App. However, before I release the app I would like to be able to send push notifications to my app using the production key instead of the development (sandbox) key and use the production server. This way I can make sure everything will work fine on the App Store. I know iPhone has adhoc that allows this, but mac doesn't seem to have this option. There is a development profile, but it only works in a development (sandbox) environment. Any way to test mac app push notification in production mode?
Yes, there are ways to test APN with the Apple Push Notification service SSL (Production) certificate, although your app will then be using the production environment instead, and the entitlement will need to be changed:
com.apple.developer.aps-environment from developer to production.
Many push notification servers do not handle error responses or
dropped connections robustly. An easy way to check this is to
intentionally send a notification to a sandbox environment device
token, assuming your server is communicating with the production push
environment. Doing that should return an invalid token response and
drop the connection. To learn more about checking error responses from
the push service, please see Push Notification Throughput and Error Checking
Having two environments allows wiggle room for mishaps while you are building your app. If confident with the way in which the server sends and the app receives APN's in the sandbox then create the production certificate and send yourself a notification to ensure it's working.
Note: There is a separate persistent connection to the push service
for each environment. The operating system establishes a persistent
connection to the sandbox environment for development builds, while ad
hoc and distribution builds connect to the production environment.

Configure APNS on Parse Server

I'm trying to migrate from Parse.com service to a self-hosted Parse Server, and it's been a bit difficult.
Basically I set up my server like this:
Run $ npm install -g parse-server
Set env vars (PARSE_SERVER_DATABASE_URI, PARSE_SERVER_MASTER_KEY, PARSE_SERVER_APPLICATION_ID)
Run $ parse-server
Everything is up and running, and I also setup a machine running parse-dashboard in a very similar way.
I had already synced the database and had no problems with it.
The problem is that when I try to send a push notification, I get the message:
Missing push configuration
I believe that's connected to the APNS settings. In Parse.com dashboard we can add the APNS certificates, but on the self hosted dashboard there is no such option (or I couldn't find it).
What am I missing? How do I set theses things up?
I believe that running parse-server without the recommended Express wrapper does not give me full control of everything I needed to configure the application.
I created an Express app, started the serving using the guide #thailey01 suggested and now it works.

Subversion installation troubles on Windows 8

After successfully running subversion for years on a Windows 2008 server, I recently moved to Windows 8.1, mainly because the machine does also serve videos to my home network (works fine) and because Windows 8 provides better energy saving on my platform than Windows 2008 server did. So far, so good.
Then I tried to re-install Subversion. I intend to use the built-in server application svnserve.exe. I downloaded the latest windows package, installed it (success), and configured a service (svnserve --service ...) which I can successfully start using the Windows Service Management Console. Port 80 is already taken by a different application, so I let subversion pick 3690, which is fine for me. I used netstat to confirm that svnserve.exe is bound to port TCP:3690, which is listed OK. Just to clear one potential roadblock I also disabled the Windows firewall.
Then I created a sample repository named "test" using svnadmin locally, success as well, a subversion file structure appeared on the harddisk.
Problems arise when I try to access the repository using my local browser (Firefox), an attempt to connect to URLs
http://127.0.0.1:3690[/svn|/svn/test]
all three give me the same cryptical response:
( success ( 2 2 ( ) ( edit-pipeline svndiff1 absent-entries commit-revprops depth log-revprops atomic-revprops partial-replay inherited-props ephemeral-txnprops file-revs-reverse ) ) )
Somehow I have expected a subversion GUI instead.
Connecting from a remote machine via browser reveals the same useless line of text.
Connecting from a remote machine using my usual Tortoise client gives the message:
Unable to connect to a repository at URL 'http://xxx.xxx.xxx.xxx:3690/svn/test
Error running context: The server unexpectedly closed the connection
I tried to add the --log-file option to svnserve, and indeed a log file appears once I start the service, but it is empty and it remains empty.
Trying to use svnserve -X instead of running it as a service reveals the exact same behavior.
Seems I am stuck. Anyone who has an idea what I can do to get that thing working?
Just to help out another beginner running into the same problem ... I finally found the problem: I simply used the wrong client, svnserve does not support web browsers. Using the Tortoise client, and providing the correct prefix (svn:127.0.0.1/...) was all I had to do.
The long version:
If one wants to work with the simple, reliable, fast, but plain-text and proprietary protocol based) svnserve service, he needs to use a proprietary client, like Tortoise, and the svn: prefix instead of http/https:, and no port, like
svn://mysvnserver/testrepo
If needed, one may even reconfigure svnservice to use authentication and encryption later. svnserve isn't supporting web browsers, if one tries to access svnserve using a web browser like I did he gehts the internals of the svn protocol dumped to the screen.
If one wants to use his web browser, http/https protocol, and niceties, like a user friendly browser based interface and some remote administration capabilities, he must not use svnserve, but install a web server service (like apache) and configure if for use with subversion.
So in the end my problem had nothing to do with Windows 8. It just has slipped from my mind that years ago I went the apache path, while now I decided that the built-in svnserve service was good enough for my needs.
Armin.

Resources