Parse Local Datastore for iOS

Local Datastore for iOS

Too often, we’ve seen bad reception or lack of connectivity become the downfall of what could have been an incredible user experience. Many mobile apps are simple clients that display data straight from a server, losing all functionality without an internet connection. Because of this, people who use these apps face painful loading screens and broken features. The developers who build these apps want a better experience, but it’s not easy to build all the underlying logic to handle local data storage gracefully.

Parse Local Datastore makes it a lot easier, and today we’re excited to announce that it’s available in our iOS/OS X SDK. You can now create a seamless, uninterrupted user experience free from connectivity constraints.

It’s the same functionality found in our Android implementation, but now for iPhones , iPads, and Macs everywhere. [PFObject pin] persists PFObjects to the Local Datastore and [PFObject unpin] removes them. Once pinned, you can access them anytime with a normal PFQuery:

PFQuery *query = [PFQuery queryWithClassName:@"Feed"];

// Pin PFQuery results
NSArray *objects = [query findObjects]; // Online PFQuery results
[PFObject pinAllObjectsInBackground:objects];

...

// Query the Local Datastore
[query fromLocalDatastore];
[query whereKey:@"starred" equalTo:@YES];
[[query findInBackground] continueWithBlock:^id(BFTask *task) {
// Update the UI
}]];

Pinned PFObjects will remain accessible while offline — through app exits and restarts — until they are unpinned. Subsequent saves, updates, or deletes will keep your Parse Local Datastore results up-to-date.

You can also choose to update your object using the PFObject method saveEventually. This will first update its instance in the Local Datastore and then do so remotely, so any changes can be kept up-to-date while offline:

feedItem.starred = YES;

// No network connectivity
[feedItem saveEventually];

...

PFQuery *query = [PFQuery queryWithClassName:@"Feed"];
[query fromLocalDatastore];
[query whereKey:@"starred" equalTo:@YES];
[[query findInBackground] continueWithBlock:^id(BFTask *task) {
// "feedItem" PFObject will be returned in the list of results
}]

This also means that if you’re already using the PFObject method saveEventually to protect your app against network failures, you’ll get most of this without any additional work–simply by updating to the latest iOS/OSX SDK and enabling Local Datastore.

With Parse, it’s easy to take your app offline! Check out our guide and API docs to get started now.

Grantland Chew
December 9, 2014

Introducing Parse Crash Reporting

Crash Reporting

We at the Parse London office are happy to announce Parse Crash Reporting: the simplest way to register, track, and resolve crashes in your apps. Being able to capture and fix crashes efficiently means fewer frustrated users and better retention–one of the most important metrics to any developer.

In the past, we’ve seen Parse developers use third-party crash reporting tools, but this approach required developers to manage several different SDKs, learn new APIs, and monitor many dashboards at once. We wanted it to be simpler. Part of Parse’s core mission has always been to abstract away common tasks and streamline the developer’s experience — so we built a way to manage crash reports right within Parse.

Crash Reporting

Say you’ve released a new version of your app that unfortunately “features” a newly introduced bug. Have no fear! All you have to do is enable Parse Crash Reporting, making the experience of handling crashes in your app much smoother than ever before. We’ve updated our iOS and Android SDKs to provide a simple and intuitive interface that detects the bug, pinpoints the issue, and generates a report allowing you to resolve problems quickly and easily. With this update, our SDKs automatically cache and resend your crash reports if connectivity is spotty. And, our backend tracks bugs on a per-version basis, so that if you’ve reintroduced an old bug in a new version of your app, Crash Reporting still ensures you’ll notice and fix it as soon as possible—even if you’ve previously marked it as “resolved.”

Here’s an example snippet showing how you can enable Parse Crash Reporting for Android:

ParseCrashReporting.enable(context);

Here’s an example snippet showing how you can enable Parse Crash Reporting for iOS:

[ParseCrashReporting enable];

As you may have expected, the sending of crash reports from the client is asynchronous and takes place automatically in the background.

We’re always looking to improve our products and would love to hear your feedback. Check out our guides, try it out, and let us know what you think!

Islam Ismailov
December 9, 2014

Migrating from Urban Airship

Making mobile development as easy as possible has always been our mission at Parse. And ensuring your data is portable and remains yours is an important part of that mission. We’ve worked hard on improving the accessibility of your data on Parse and are committed to ensuring our customers can access their data at any time.

In that spirit, we also want to make sure new customers are able to easily migrate from other providers to Parse. We noticed that the push notification provider Urban Airship recently made their product paid only. So, a few of our engineers spent a weekend building a very simple migration tool. This tool will import all of your Urban Airship push subscriptions for iOS and Android (GCM) devices to Parse. Simply enter your Urban Airship app key and secret and we’ll take care of the rest!

Parse Push allows developers to send unlimited push notifications to up to 1 million devices for free every single month. Beyond that, the pricing is simple: you’ll pay $0.05 a month for every 1000 extra devices. That’s $50 for another million devices, and you can send them as many pushes as you want.

image

After the import is complete, check out the Data Browser to see all of your data. You can then immediately start sending pushes to existing devices without requiring an update to your app. Until you require an update, you can continue using the migration tool to import any new devices. Don’t worry, we’re keeping track of which ones you’ve already imported, so there won’t be any duplicates. Once you’ve integrated the Parse SDK and updated your app, new devices will start showing up in Parse. You can then start taking advantage of our powerful analytics features. To learn more about the steps of migrating to Parse, take a look at our tutorial that will guide you through the whole process.

We’re excited for you to experience all that Parse has to offer. With Parse Push, you can now enjoy device targeting, in-depth analytics, and timezone and badge increment support for your push messaging. Plus, don’t miss our brand new A/B testing feature — engage with your users more intimately and effectively than ever before.

If there’s any other importer you’d like to see, let us know!

Mattieu Gamache-Asselin
December 8, 2014

Parsing All Over the Globe

View this post in:  中文(简体)   |  中文(台灣)   |    한국어    |    日本語    |    Русский

Parsing All Over the Globe

My cofounders and I started Parse in 2011 to solve our own problems. We were frustrated with all the repetitive work needed to build great cross platform mobile apps. Our first customers were our friends who also built apps and they mostly lived near us in San Francisco. Over time, we started attracting more customers that weren’t just our friends — first in Silicon Valley and soon throughout North America. Today, over 500,000 apps have been created on Parse, and hundreds of thousands of our developers hail from outside of the United States. Our team is incredibly honored that so many developers across the globe have trusted Parse with their businesses and apps. Here are some cool stats about our global presence:

  • Active apps in Asia grew nearly 90% in the first half of 2014.
  • Apps in APAC that use all three Parse products—Parse Core, Parse Push, and Parse Analytics—grew by more than 90% in the first half of 2014.
  • 6 of Parse’s 15 largest countries (by number of active apps) are in Asia: India, Japan, Australia, China, Taiwan, Korea.

We are extremely excited about how much our community has grown since 2011. As that growth continues to accelerate, today I’m pleased to share the efforts we have made to make Parse even more friendly to our international community:

  • Localizing our content — We have localized our technical documentation and customer success stories into Chinese ( Simplified & Traditional ), Japanese, Korean and Russian.
  • Creating a truly global team — When we joined Facebook, our entire team moved from San Francisco to Menlo Park in California. Since then, we’ve expanded our horizons quite a bit. We’re now a global team with dedicated folks in London, Dublin, Paris, and Singapore. And we’re excited to continue expanding wherever mobile developers need help!

We hope you’re as excited as we are about these announcements and we appreciate you being part of our global community.

– Ilya Sukhar, Parse Founder and CEO

Ilya Sukhar
December 1, 2014

Parsing по всему миру

View this post in: English

Parsing All Over the Globe

Мы с соучредителями запустили Parse в 2011 году для решения наших собственных проблем. Нас смущала вся та скучная монотонная работа, которую нужно было выполнять, чтобы создать качественное межплатформенное мобильное приложение. Нашими первыми клиентами стали друзья, которые тоже создавали приложения и в большинстве своем жили по соседству с нами в Сан-Франциско. Со временем мы начали работать не только с друзьями, но и с настоящими клиентами — сначала только из Кремниевой долины, а потом и со всей Северной Америки. Сегодня Parse используется более чем для 500 000 приложений сотнями тысяч разработчиков за пределами Соединенных Штатов. Наша команда невероятно горда тем, что такое количество разработчиков со всего мира доверяют Parse свой бизнес и свои приложения. Ниже мы собрали немного интересной статистики о нашем присутствии в мире:

  • Количество активных приложений в странах Азии выросло на целых 90% в первой половине 2014 года
  • Количество приложений в Азиатско-Тихоокеанском регионе, использующих все три продукта Parse: Parse Core, Parse Push и Parse Analytics, выросло на 90% в первой половине 2014 года.
  • 6 из 15 стран, в которых наиболее распространены продукты Parse (по количеству активных приложений), находятся в Азии

Нас чрезвычайно вдохновляет то, как наше сообщество выросло с 2011 года. Поскольку рост становится все интенсивнее, сегодня я рад представить наши достижения, благодаря которым мы сделали продукцию Parse еще более доступной международному сообществу:

  • Локализация наших материалов Мы перевели техническую документацию и истории успеха наших клиентов на китайский (упрощенный и традиционный), японский, корейский и русский языки.
  • Создание по-настоящему интернациональной команды Когда мы присоединились к Facebook, вся наша команда переехала из Сан-Франциско в Менло-Парк в Калифорнии. С этого момента наши горизонты порядком расширились. На сегодняшний день в нашей команде работают замечательные люди из Великобритании, Франции и Сингапура. И мы с радостью продолжим расширяться, работая с мобильными разработчиками везде, где им требуется поддержка!

Мы надеемся, что эти новости воодушевляют вас так же, как и нас, и очень рады тому, что вы являетесь частью нашего международного сообщества.

– Илья Сухарь, основатель и генеральный директор Parse

Ilya Sukhar
December 1, 2014

전 세계를 향해 나아가는 Parse

View this post in: English

Parsing All Over the Globe

2011년, 저와 공동 창립인 일동은 멋진 플랫폼 간 모바일 앱을 빌드할 때 필요한 엄청난 반복 작업에 좌절하던 끝에 이를 해결하기 위한 도구인 Parse를 만들기 시작했습니다. 첫 고객은 대부분 샌프란시스코 근처에 살면서 앱을 빌드하던 친한 친구들이었지만, 시간이 지남에 따라 실리콘밸리의 친구들뿐 아니라 북미 전역에서 수많은 고객이 몰려들기 시작했습니다. 오늘날 Parse는 미국 외 지역의 수십만 명의 개발자와 500,000개 이상의 앱을 지원하고 있습니다. 전 세계의 수많은 개발자 여러분이 비즈니스와 앱을 위해 Parse를 이용해 주시는 데 대해 진심으로 감사하게 생각합니다. Parse에 보내주시는 뜨거운 성원을 보여주는 대표적인 수치는 다음과 같습니다.

  • 아시아에서 Parse를 활용하는 앱 수가 2014년 상반기에만 무려 90% 증가했습니다.
  • Parse Core, Parse Push, Parse Analytics 등 세 개의 Parse 제품을 모두 사용하는 APAC 앱 수가 2014년 상반기에 90% 증가했습니다.
  • Parse 이용률(액티브 앱 수 기준)이 가장 높은 15개 국가 중 6개가 아시아에 있습니다.

특히 2011년 이후 커뮤니티가 점점 커지고 있다는 점은 매우 반가운 소식입니다. 이러한 성장세가 가속화될 것으로 전망됨에 따라 국제 커뮤니티에 Parse를 더욱 가까이 소개하기 위해 노력해 온 내용을 기쁜 마음으로 공유하고자 합니다.

  • 콘텐츠 로컬라이제이션 – 기술 설명서와 고객 성공 사례를 한국어, 중국어(간체번체), 일본어, 러시아어로 번역했습니다.
  • 진정한 글로벌 팀 구축 – Facebook 합류 당시, 팀 전체가 샌프란시스코에서 캘리포니아 멘로파크로 들어온 이래 전 세계적인 도달의 폭을 넓혀 이제 영국, 프랑스, 싱가포르에 지사를 둔 글로벌 팀으로 성장했습니다. 앞으로도 모바일 개발자가 도움을 필요로 하는 곳이라면 어디로든 지속적으로 확장할 계획입니다!

이 모든 내용이 개발자 여러분께도 즐거운 소식이기를 바라며, Parse 글로벌 커뮤니티에 합류해주신 데 다시 한 번 감사드립니다.

– Ilya Sukhar, Parse 창립인 겸 CEO

Ilya Sukhar
December 1, 2014

Parse 風靡全球

View this post in: English

Parsing All Over the Globe

我和我的共同創辦人在 2011 年創立了 Parse,一開始只是為了解決自己的難題。當時,為了製作絕佳的跨平台行動應用程式,我們需要反覆執行同樣的工作,這令我們感到十分挫折。我們一開始的幾位客戶同樣都是開發應用程式的朋友,大多住在舊金山,離我們不遠的地方。漸漸地,我們開始吸引朋友以外的顧客上門,一路從矽谷擴展到整個北美洲。時至今日,已有超過 500,000 個應用程式使用 Parse,其中有成千上萬的開發人員來自美國以外的地區。在這世界上能有這麼多開發人員信任 Parse,願意運用在業務和應用程式中,我們的團隊為此感到無比榮幸。以下列出的統計數據十分亮眼,展現我們縱橫全球的實力:

  • 2014 上半年,亞洲地區有效運作的應用程式數字大幅飆升,成長率高達 90%
  • 2014 上半年,亞太地區使用 Parse 全部三種產品(Parse Core、Parse Push 及 Parse Analytics)的應用程式總數成長了 90%。
  • 依照有效運作的應用程式來計算,全球前 15 大使用 Parse 的國家,亞洲就佔了 6 個

社群人數自 2011 年後快速成長,我們十分樂見這份佳績,目前,使用人數的成長速度仍未放緩,我很榮幸在此與大家分享 Parse 努力耕耘的成果,也就是為國際社群創造一個更加友善的 Parse 平台:

  • 將內容本地化-我們將技術文件和顧客的成功案例翻成多種語言版本,包括簡體中文繁體中文日文韓文俄文
  • 建立真正的全球團隊-加入 Facebook 後,我們原先位於舊金山的整個團隊,全都搬到加州的門洛帕克(Menlo Park)。從那之後,我們大幅拓展了團隊的領域,目前已發展為全球團隊,在英國、法國及新加坡等地都有專職同仁。只要有行動開發人員需要協助,不論身在何處,我們都很樂意繼續拓展服務地點!

希望以上聲明能夠讓您感到振奮,並且十分感謝您成為我們全球社群的一份子。

-Ilya Sukhar,Parse 創辦人兼執行長

Ilya Sukhar
December 1, 2014

Parse 风靡全球

View this post in: English

Parsing All Over the Globe

我和合伙创始人从 2011 年开始开发 Parse,用于解决自己遇到的难题:编写大型跨平台移动应用产生的令人崩溃的重复劳动。我们的第一批客户是一些也在编写应用的朋友,他们大多数住在旧金山,离我们很近。除了身边好友以外,随着时间推移,外来客户开始慕名而来,我们的业务足迹先踏入硅谷,然后遍布北美。如今,超过 50 万款应用在使用 Parse 平台,数十万的开发者位于美国本土以外。看到全球有如此多的开发者信赖 Parse 平台,用它来开发业务和应用,我们倍感荣幸。以下列举一些能有力说明 Parse 风靡全球的统计数据:

  • 2014 年上半年,亚洲活跃应用数量猛增 90%
  • 2014 年上半年,在亚太地区使用全部三款 Parse 产品 - Parse Core (Parse 核心)、Parse Push (Parse 推送) 和 Parse Analytics (Parse 分析) 的应用数量增长了 90%
  • 最广泛使用 Parse 的 15 个国家(按活跃应用数量计算)有 6 个位于亚洲

我们对 2011 年以来 Parse 社区的迅猛成长感到由衷兴奋。随着社区的加速成长,我在此荣幸地宣布,我们对 Parse 进行了修改,让世界各地的用户群体能更轻松地使用它:

  • 内容本地化 - 我们对技术文档和客户成功案例进行了本地化,推出中文(简体繁体)、日文韩文俄文版本。
  • 创建真正全球化的团队 - 加入 Facebook 以后,整个 Parse 团队从旧金山搬到了加利福尼亚州门洛帕克。自此之后,我们进行了一些扩充。现在,我们是一支在英国、法国和新加坡都拥有专职员工的全球化团队。而且我们仍会顺应移动应用开发者的需要,继续扩大规模。

我希望您在看到这些话时心中为之一振,我们非常欢迎您加入 Parse 的全球化社区。

Ilya Sukhar,Parse 创始人兼首席执行官

Ilya Sukhar
December 1, 2014

Parseは世界中で使われています

View this post in: English

Parsing All Over the Globe

共同創業者たちと私が2011年にParseを創業したのは、もともと自分たちの問題を解決するためでした。クロスプラットフォームで動作する優れたモバイルアプリを作るたびにつきまとう同じ作業の繰り返しに、うんざりしていたのです。初めは地元サンフランシスコに住むアプリ開発者仲間が顧客になってくれました。やがて友人以外からも声がかかるようになり、初めはシリコンバレー、そして北米全域へとまたたく間に顧客が広がっていきました。現在、Parseは500,000本を超えるアプリに使用されており、米国以外からも何十万人という開発者の皆さんに高い評価をいただいています。世界各地でこれほど大勢の開発者がParseに信頼をおき、ビジネスやアプリに活用してくださっていることを、社員一同心から光栄に存じます。Parseのグローバルでの存在感を示す数字をここでいくつかご紹介しましょう。

  • アジアにおける利用アプリ数は2014年上半期で90%の急増
  • APACにおいて、Parseの3製品(Parse Core、Parse Push、Parse Analytics)すべてを利用したアプリ数は、2014年上半期で90%の増加
  • Parse利用アプリ数上位15か国のうち、6か国はアジア

Parseコミュニティが2011年以来ここまで成長したことは、私たちにとって喜びの極みです。この成長にさらなる弾みをつけるため、当社はParseを国際グローバルコミュニティにとってさらに使いやすいものにするべく取り組んでまいりました。その成果を本日、以下のとおり発表いたします。

  • コンテンツのローカライズ―技術文書と顧客成功事例を、中国語(簡体字および繁体字)、日本語韓国語ロシア語にローカライズしました。
  • 真のグローバルチームを結成―Facebook傘下に入ったことを機に、チーム本部をカリフォルニア州サンフランシスコからメンローパークに移転しました。さらに海外へも視野を広げ、現在は英国、フランス、シンガポールの各拠点にも専任スタッフを抱える、国際色豊かなチームとなっています。これからも、あらゆる国や地域のモバイル開発者の支えとなるよう、サポート体制を拡大してまいります。

Parseのグローバルコミュニティにご参加いただき、ありがとうございます。今後ともParseの歩みを温かく見守っていただければ幸いです。

―Parse創業者、CEO、Ilya Sukhar(イリヤ・スハール)

Ilya Sukhar
December 1, 2014

Parse Push Experiments: A/B Testing Best Practices and the Screencast

We recently launched Push Experiments, which lets you conduct A/B tests on push notification campaigns to identify the most engaging message variant. With Push Experiments, we wanted to make it easy to run successful A/B tests. In this post, we’ll discuss some of the statistical techniques we’re using behind the scenes. And, catch a screencast showing you the ins and outs of the new tool below.

Parse Push Experiments in Action

Ready to try Parse Push Experiments?  Watch the screencast here.  Or, read on for A/B Testing best practices.

 

What makes an A/B test successful?

We can say that an A/B test succeeds whenever we get a precise, correct answer to the question that originally motivated us to run the test. In other words, a good platform for A/B testing should try to prevent two kinds of failure:

(1): We should rarely get a result that leaves the answer to our question in doubt.
(2): We should rarely get an answer that seems precise, but is actually incorrect.

Parse Push Experiments uses three strategies to prevent these two kinds of failure:

  1. Encourage developers to ask precise questions that can be answered unambiguously.
  2. Prevent developers from reaching wrong conclusions by always reporting results along with a margin of error.
  3. Ensure that most A/B tests will give a precise answer by suggesting the minimum number of users that must be included in an A/B test in order to reasonably expect accurate results.

Step 1: Asking Precise Questions

Here’s one of the most important things you can do while running A/B tests: Commit to the metric you’re testing before gathering any data. Instead of asking questions like, “Is A better than B?”, the Push Experiments platform encourages you to ask a much more precise question: “Does A have a higher open rate than B?”

The distinction between these two questions may seem trivial, but asking the more precise question prevents a common pitfall that can occur in A/B testing. If you allow yourself to choose metrics post hoc, it’s almost always possible to find a metric that makes A look better than B. By committing up front to using open rates as the definitive metric of success, you can rest assured that Push Experiments will produce precise answers.

Step 2: Acknowledging Margins of Error

Once you’ve chosen the question you’d like to answer, you can start gathering data. But the data you get might not be entirely representative of the range of results you’d get if you repeated the same test multiple times. For example, you might find that A seems to be better than B in 25% of your tests, but that B seems to be better than A in the other 75%.

As such, when reporting the difference between the A and B groups (we’ll call this difference the lift), it’s important to emphasize the potential for variability in future results by supplementing the raw result with a margin of error. If you have an A/B test that has a lift of +1% and a margin of error that is between -1% and +3%, you should report that your A/B test’s results were inconclusive. If you simply reported a +1% change, your results would be misleading and might set up unrealistic expectations about the success of your push strategy in the future. By reporting a range of values that should contain the true answer to your question (this range is what a statistician would call a 95% confidence interval), you can help to ensure that anyone reading a report about your A/B test will not reach premature conclusions.

At Parse, we determine margins of error for open rate data using a calculation called the Agresti-Caffo method. When you’re working with push notification open rates, the Agresti-Caffo method produces much more reliable margins of error than naive methods like normal approximations.

In addition to automatically calculating margins of error using the Agresti-Caffo method, the Push Experiments platform only reports results after it’s become clear that either A offers a lift over B or that B offers a lift over A — helping to further protect you from reaching premature conclusions. Until there’s enough data to determine a clear winner, the Push Experiments dashboard will report that there’s still uncertainty on whether A or B is more successful.

Step 3: Choosing the Right Sample Size

Given that the Push Experiments platform will always report results with a margin of error, you’ll want to try to make that margin smaller in order to draw definite conclusions from more of your tests. For example, if you think that your A group will show a lift of 1% over your B group, you’ll want to make sure you gather enough data to ensure your margin of error will be smaller than 1%.

The process of picking a sample size that ensures that your margin of error will be small enough to justify a definite conclusion is called power analysis. The Push Experiments platform automatically performs a power analysis for your A/B test based on the historical open rates for your previous push notifications. To simplify the process, we provide suggested sample sizes based on the assumption that you’ll be trying to measure lifts at least as large as 1% with your A/B tests.

Only running A/B tests with carefully chosen sample sizes makes it much more likely that your A/B tests will succeed. If you select a sample size that’s much smaller than the size we suggest, you should expect that many of your A/B tests will lead to inconclusive results.

Putting It All Together

We believe the combination of precise questions, clean statistics and careful choice of sample size is essential for running a successful A/B test. You can achieve that with Parse Push Experiments, and we hope this look into the statistical methods behind our platform will help you do it.

 

johnmyleswhite
November 20, 2014