XGCLogger: Retrieve logs from device? - swift

How can you configure XCGLogger to log so that you can access log files from individual devices being used for testing?

I use CocoaLumberjack (another logging framework) in my apps but the following applies to any logging framework that supports logging to a file (including XGCLogger).
Setup your logging framework to log to a file (in addition to any other destination you might need).
Then add an option to your app somewhere appropriate that lets the user submit diagnostic information to you. When the user chooses this option your app can use MFMailComposeViewController to send you an email. Pre-populate the "to" field with your email address. Add the log file(s) as attachments to the email. Set the subject as desired (something like "MyCooApp Diagnostic Info"). You can also pre-populate the email message with additional details. I include the user's locale and timezone, the device name and model, and the version of iOS.
The user can add any additional info to the email message and tap Send. You get a nice email with the logs and other details.
If you don't want to take the email route, setup your web server with a special page that accepts file posts. Then have your app post the log files to your web server when the user chooses the "submit diagnostic info" option in your app.

Related

Parse Firebase Dynamic Link for Password Reset IOS

My issue is that I’m trying to parse my deep link for information to then change a users password. When I send the password reset email I included the users email address within the deep link parameter, however is there a specific way to parse this using FDL library once the link is opened in app? For security purposes there must be a way to verify the generated action code in the deep link to verify the link is legitimate aswell? I know that the fire base docs touch on this for web applications, but it doesn’t go into specifics for IOS.
Best,
James

One click url for importing webcal to google/outlook calendar

I have a php app that serve as a webcal server, I want user can choose either use their calendar app, or just import the webcal://example.ics directly to google or outlook or office 365 calendar with one click url, without user going through settings to import. Tried to find documents on these but couldn't.
YZY, There isn't a way that you can control the users calendar application to just import. It is up to the receiving end - the users application, to say how an ics file or url is treated on receipt. For example, in my desktop browser i have the default application for a .ics url/file set to be notepad++, not my calendar app. There is nothing you can do to override that.
How other applications such as email applications on smartphone or desktop treat it will depend on their settings as controlled by the user. EG: In outlook users may have unticked the 'automatically process meeting requests'
The only control the provider of the ics url/file has is to ensure that the file/url is specified correctly as per the latest specification (Note RFC5546 updates RFC5545, one needs to read both). Briefly:
https protocol is standard (webcal is unofficial apple. See https://icalendar.org/iCalendar-RFC-5545/1-introduction.html, https://en.wikipedia.org/wiki/ICalendar.)
The suffix is '.ics' as per examples given in RFC5546 and RFC5545
The mime content type is text/calendar https://www.iana.org/assignments/media-types/text/calendar and https://datatracker.ietf.org/doc/html/rfc5545#section-8.1
The appropriate METHOD must be used: PUBLISH is suitable for a subscribable URL (where it appears as a separate calendar in the URL) OR REQUEST (for meeting requests in emails etc) See https://datatracker.ietf.org/doc/html/rfc5545#section-3.7.2 and https://datatracker.ietf.org/doc/html/rfc5546#section-7.2
I like to distinguish between 'import' and 'subscribe':
Import in my opinion is where one imports an event (or multiple events) from a .ics file INTO an existing chosen calendar - eg (but not only): when a METHOD:REQUEST is used.
Subscribe is for icalendar feeds that get updated and so it is practical to subscribe or add the calendar by url to one's calendar application. This kind of url needs to be publicly accessible (although it can be obscured by unusual url)
One could download a subscribeable .ics and 'import' it but then one would only ever have that frozen event/s as at that point in time, it would not ever update.
In summary the best you can do is provide the url correctly and offer some links to info on how to subscribe in case the users are unfamiliar with subscribing

Ejabberd: How to limit the fetching of jabber user directory (JUD)

I'm developing a client jabberd application for mobile(android) using (a)Smack.
Since, in my application, the users are registered by their phone numbers, the application should be able to recognize which contact has a jabber account on the server and suggest him/her for chatting.
After googlling the web I found that there is a jabber user directory (JUD) which I can use to check there is an account for a specific mobile number or not. (I'm using UserSearchManager).
My questions:
1- It seems that there is no record in JUD for a user who has not updated his vCard yet, so I cannot find him. Is there any solution to check the existence of this kind of users?
2- It seems that by using JUD, everyone outside of my application can fetch some important information of users such as mobile numbers, emails, etc. Is there any solution to limit JUD search engine? (for example, getting only "user field" as a input and returning only "full name field" of existing accounts or other useful limitation).
So by this way, I can recognize which person from the contact list has an account on the server and also other people cannot fetch important information of the exiting users.
Any command or advice is appreciated. Thank you.
I do not think it is possible as default, without customizing ejabberd application code.

Facebook test users and auth

I have a project where I am using Selenium to test the Facebook auth. I created a Facebook app, created a test user inside this app and created some tests using Facebook login. Until now, it was working. But during the last two weeks something changed in Facebook and my tests are failing. It is due to interface changes in permissions dialog (I am targeting the button by his id). The second problem is that I don't get the email address from Facebook test user but a proxy email which is longer than 75 characters (my db field length is hardcoded in framework I am using).
If I log in as a regular user, it is working correctly and I get this permission box:
But when I log in as the test user I created (via 'switch to' in app's developer roles), I get this box:
I tested it ~2 weeks ago and this was yet working. Today it is changed. So my questions:
How to get back the old permissions box for test users?
How can I get the real email address and not the proxy?
Thanks!
I experienced the same problem with the Auth Dialog. I tried it with some old and new apps with various settings including March/Apr. 2013 Breaking Changes enabled/disabled, but it didn't help.
However, I guess I can help you with the email problem. When you login as a test user and go to account settings page, you will see the test user's primary email addres. By default this should be a really long one like the image I attached.
Facebook Platform returns this primary email address. If you pass the Auth Dialog with your test user account and see the privacy setting page, you will find the default primary email address is shared with the app. You have to provide a new email address for the test user and set the new one as primary email address via account setting page.
Why is the Login Dialog different with a test user?
With your test user, you can see the future of login dialogs. In fact, this isn't "not working" but this is an update which was unveiled on December 2012. Let me quote:
Our Login dialogs have undergone a redesign to make it easier to
understand permissions that apps request. We've simplified
presentation and have also updated our language for greater clarity.
“Basic info” has been renamed to “public profile and friend list,” to
reflect what what is being shared. Apps accessing your public profile
get your name, profile picture, age range, gender, language, country
and other public information.
Source: Providing People Greater Clarity and Control, developers.facebook.com/blog
The reason why you don't meet this update with a regular user, is that Facebook doesn't use to update everyone at the same time. They partially launch updates depending on the country, the type of account or some other parameters I ignore.
Example of a partial update (unified_message FQL table) dedicated to developer accounts:
We are providing early access to this API for registered developer
accounts only until the new messaging system is broadly available. You
should use the message table for production applications at the
current time.
In our case, we now know that test users can access to the update, but it is also said:
We have already launched many of these improvements as part of our
iOS6 integration and are now rolling them out more broadly.
About proxy emails
In fact, proxy emails are a way for any users to keep their real email anonymous. You have to consider proxy emails.
When joining an app, the user can choose between a real email and a proxy email:
Other thing you need to expect are users who didn't validate their account when connecting to your app, a case which is possible as described here and here.
Then, why do test users give back a proxy email? Because test users (being bots and having fake emails) didn't validate their emails.
You see that in at least 3 cases (and finally, test users are a good example), you need to handle these proxy emails. They are incidentally or accidentally met by developers and they can't be neglected. For your case, you can still try to disallow tests users who have a proxy email from accessing your app. But you should accept them and shouldn't force them to share their original e-mail addresses. A better solution is that you validate the test users emails:
Connect to the test user account that gives a proxy email
Add an email address (password needed here),
Go to the email mailbox and click on the validation link,
Set the new email address as primary,
The test user should now give his original email and not a proxy anymore!

Data Exchange between same iPhone App on separate devices

I am developing an app on iphone that lets user take photos, add comments & GPS location to it and send it as an email to another user.
If the recipient has installed the same app & when she clicks on the attachment the same app will launch & parse these details & show them to the recipient. (I intend to use UIDocumentInteractionController for some of the stuff here)
Problem: whats the best way to encode this data in a single file & then retrive it upon arrival from the email.
This is pretty high level, but here are the general steps:
First, register your own file type as described here.
Then, archive your data using NSKeyedArchiver.
Next, attach it to an email using MFMailComposeViewController. Make sure you give it a filename that matches the file type you registered earlier.
Finally, implement application:didFinishLaunchingWithOptions: to handle the case when a user tries to open your email attachment. (Currently, it's the fourth bullet in the method documentation.)