iOS XMPP Framework blocking/privacy options? - ios

I am developing a XMPP based chat client for iOS. One of the requirements is the ability to "block" users. The XMPP specifications have a few options (XEP-0016, XEP-0191) however I have yet to be able to find any extensions for the XMPP Framework that are already available? It seems like this would be a pretty basic feature? I could always go the easy route and just save a list of blocked JIDs locally and filter out incoming messages, however it will not transfer between devices this way. The other option is to write an extension, which might be out of the budget/time frame requirements. Am I missing something here? Is there a built in way to do this or an extension already out there?

It may be a basic feature, but no one that has needed it has contributed an implementation to the project.

Related

Inviting event attendees programatically on iOS 10

I've been using Stackoverflow for about 5 years now, and haven't felt the need to ask a single question yet, I've always found the answer i needed through previous threads. That just changed and I have a question that I really can't figure out. And it sounds so easy to do.
So the question is; how do you invite attendees, or reply/decline to calendar events on iOS under iOS 10? And please, no we don't want to bring up an EKEventViewController. We'd like to do this in our own UI. Under iOS 9 this was possible through just forcing EKAttendees objects in to the EKParticipants array with setValueForKey:. But under iOS 10 this produces an error saying 'Attendees can't be modified'.
I have used a Technical Support credit with Apple and got the reply that this was not possible. It is not possible using their APIs.
The closest to an answer i've got is to use IMIP (https://www.rfc-editor.org/rfc/rfc6047#section-2.2.1). If that's the way to go, could someone help me along on how to actually set that up? I'm not well versed in back-end development, I'm all front-end so I wouldn't really know where to start.
There also seems to be some CalDav servers on GitHub (https://github.com/mozilla-b2g/caldav) but I'm not sure how good they are, or exactly what you need to set one up.
So basically, is there anyone who could give a childs explanation to just how the heck we can send nice invites to calendar events. And if there are different solutions for Google, Apple accounts (obviously under the hood, but implementation-wise) that would be very helpful to know to.
Is this something that requires a ton of implementation on our own servers or is there some reliable service to use? That would be ideal. Maybe you should build one and you got at least one customer here :-)
Appreciate any help!
You cannot modify attendees using EventKit, but Apple already told you that:
I have used a Technical Support credit with Apple and got the reply that this was not possible. It is not possible using their APIs.
The hack with accessing the internal objects using KVC was, well, a hack and not documented API. No surprise they killed that.
So how do calendar invites work. That in itself is a very complex topic (consider delegation, resource booking like rooms, etc etc). There is a whole consortium which works on that (CalConnect), they also have a broad overview: Introduction to Internet Calendaring and Scheduling.
If you are serious into scheduling/calendaring software, it may make a lot of sense to join CalConnect for their interop events etc.
But you wanted a 'childs explanation'. I can't give that, but a short overview.
iTIP
iTIP is a standard which defines how scheduling messages flow, e.g. that you send a message to your attendee, your attendee responds back with accept/decline, what happens if a meeting is cancelled and all that.
It does NOT however specify how those messages are transferred. It is just a model on how the message flow works between the organiser and the participants.
Most 'big' calendaring systems (Exchange, Google, CalDAV servers like iCloud) use iTIP or at least something very similar.
iMIP
iMIP is a standard which defines on how to exchange iTIP messages using email. Say if you invite someone using iMIP, you'll send him a special email message with the iCalendar payload containing the invite. If your attendee accepts, his client will send back another iCalendar payload via email containing that.
iMIP is supported by a lot of systems and was, for a long time, pretty much the only way to exchange invitations between different systems (say Outlook and Lotus Notes).
However: the iOS email client does NOT support iMIP (unlike macOS or Outlook). So if someone sends you an iMIP invite to your iOS device, you won't be able to respond to that. (reality is more complex, but basically it is like that)
CalDAV
CalDAV is a set of standards around calendars stored on a server. Many many servers support CalDAV. E.g. iCloud uses CalDAV. Yahoo, Google, etc all support CalDAV. The important exception is Exchange, which doesn't support it.
In its basic setup CalDAV just acts as a store. You can use HTTP to store (PUT) and retrieve (GET, etc) events and todos using the iCalendar format.
In addition many CalDAV servers (e.g. iCloud) do 'server side scheduling'. That is, if you store an event to the server which is a meeting (has attendee properties), the server will fan out the invitations. Either internally if the attendees live on the same server, or again using iMIP.
Exchange
Exchange supports iMIP but not CalDAV. You usually access it using one of its own web service APIs, e.g. ActiveSync or Exchange Web Services. I'm no expert on them, but I'm sure that they allow you to create invites. Exchange&Outlook have an iTIP like invite flow.
etc
Is this something that requires a ton of implementation on our own servers or is there some reliable service to use?
This really depends on your requirements and needs. Do you need to process replies or just send out generic events?
If you want to host a calendar store, it probably makes sense to use an existing CalDAV server.
Calendar invitations are a very complex topic and you need to be very specific on your actual requirements to find a solution. In general interoperable invitations in 2017 are still, lets say 'difficult'.
P.S.: Since you've been using StackOverflow for about 5 years now, you should know that this question is too broad for this thing.

Can a Meteor web app serve data to an iOS app?

Pretty straight forward question i think. I have created a web app in meteor and its using mongoDB storage. I have UI to update the data in the backend through the web app.
The question then becomes, I have designed an iOS app that i would really love for it to read the data being served to the web app from the mongoDB. As it stands, the app takes a url to a JSON file that i update regularly and serializes it accordingly. I want to pass on the tasks of updating the backend but exposing company employees to the potential mess of JSON backend, where missing/deleting a bracket / brace causes the app to break is out of the question.
My question is, since the meteor web app stores data as JSON documents, is there a way i can access the same JSON from the iOS app? It would really help because then, the person updating the backend only deals with UI, not code. I know this is a pretty broad question, but any pointers would be fantastic. Links, tutorials, frameworks to learn... anything. I've been googling around but can't seem to find anything solid.
Thanks!
You'll want to look into using one of the many iOS based DDP clients, like this one. With these libraries you can connect native iOS apps to the backend of any deployed Meteor app.
As far as I understand, you are looking for a way to get/update the data of your meteor server from the IOS app.
To do that, you can expose an API, like a REST one. Basically, your IOS app will call your Meteor server via HTTP and send/receive JSON data. Like that, you can get your collections, update, add, delete their items as well. There is a lot of literature around REST.
I used a very old one that I do not recommend because it is not maintained anymore, I will put the link anyway Old Rest API.
I invite you to have a look at atmosphere, the meteor package library: Atmosphere. I did a quick search on it and I found this package that looks promising: Simple Rest.
Have a look at the packages on Atmosphere, you can use 'rest' as keyword and pick the one that fits your needs. I am especially thinking of security ;).

Use Remind101 in iOS app

Is it possible to embed Remind101 within another app? I have googled and haven't had any luck finding any SDKs but thought maybe some here may have had some success with perhaps deeply buried github projects?
This is Natalie from Remind. We don't currently have a public API / SDK available, but are considering offering something in the future. Definitely shoot us an email at contact#remind.com and we'll follow up with you once it's possible to interface with our API, etc. Excited to hear from you! (Note: We do have a widget available that streams a user's sent Remind messages to his/her website or class page.)
It looks like it might be possible to interface with Remind, but it's not entirely clear. There is a ruby gem for communicating with a Remind API (JSON, it seems), but I am unable to find documentation for the API itself. In addition, the ruby gem project seems to have been removed from Remind's Github account, so take that as you will. You might want to reach out to Remind support to ask if it is still possible to communicate with Remind in this way.
If you do wish to attempt communication via the API, I would begin by playing with the Remind101 gem in ruby on your desktop OS X machine first. If you're able to successfully communicate, then you can set about building a native iOS SDK to make the same network calls.
Good luck!

Using Parse to make an iOS Social Network App?

I want to make an iOS Scocial Network, almost like Facebook. But I only do it to test my Objective C programming skills so it wont be massive like Facebook (though it will have all features that Facebook has).
What I want to ask is:
Can I only use my Objective C knowledge to build my front-end app and use Parse Services (Parse.com) to build my back-end? Or I need some tools, knowledge etc...?
Again, I do not make a very very big iOS Social Network app like Facebook but I do a smaller one that has all features Facebook has.
Any advice would be appreciated.
Yes, you can use Objective-C to create the app and use Parse.com to host your data. You can use the Parse SDK to allow the app to easily access the backend data. It will work well (depending on how well you design the Parse data storage) and you won't need to write any (or much) backend code.
parse.com/tutorials actually has a couple tutorials that would be very helpful in creating your social app. It may even be exactly what you are wanting.
Parse is the way to go. You might want to check out Helios and Stackmob as well. They do the same thing as parse. However, I like Parse much better because of it's documentation.
Happy learning.

Which one is better for social networking integration in iOS development?

I have searched on net for social networking integration in iOS projects (For example: Facebook, Twitter, etc)
I found there are also SDKs available for particulars and some OpenSource projects/frameworks are also available for the same which combines all into one like (ShareKit).
What is the difference in those two? Which one is better to use? Is there any problem to upload an app on AppStore which is using ShareKit framework/code?
Thanks in advance.
Mrunal
If you are using ARC in your project ShareKit is a big waste of time.
Twitter can be added very easily using the Twitter framework and TWTweetComposeViewController. Not sure about any others.
#mrunal check Socialize out: http://www.GetSocialize.com and see what you think. Full feautre list at http://go.GetSocialize.com/features
DROdio
If you are only looking to use Twitter and Facebook, then it is simple enough to just use their API and implement it in your code.
If you are new to development or want to use more (Delicious, Tumblr, Read It Later, Bit.ly, Mail), then I would highly recommend using ShareKit. It allows for sharing of text, URLs and even images. It takes less than an hour to setup even when using ARC and comes with a sample app to play around with. It is also easy to update when more features are added or the API of one the sites changes.

Resources